Skip to content

Commit

Permalink
Add v1 release checklist for jfpv1 #patch
Browse files Browse the repository at this point in the history
  • Loading branch information
cobaltine committed Dec 31, 2020
1 parent 394f35a commit 359ae9f
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,25 @@ A json fingerprint consists of three parts: the version of the underlying algori
The first part indicates the algorithm version, `jfpv1`, which would translate to **j**son **f**inger**p**rint **v**ersion **1**. The second part, `sha256`, indicates that SHA256 is the hash function that was used. The last part, `5815eb0ce6f4e5ab0a771cce2a8c5432f64222f8fd84b4cc2d38e4621fae86af`, is a standard hex digest of the hash function output.


## v1 release checklist (jfpv1)

This is a list of high-level development and documentation tasks, which need to be completed prior to freezing the API for v1. Prior to v1, backwards-incompatible changes are possible.

- [ ] Formalized the jfpv1 specification
- [x] JSON type support
- [x] Primitive types (int/float, str, bool, None)
- [x] Arrays (list)
- [x] Objects (dict)
- [x] Flattened "sibling-aware" internal data structure
- [x] Support nested JSON data structures with mixed types
- [ ] Support most common SHA-2 hash functions
- [x] SHA256
- [ ] SHA384
- [ ] SHA512
- [ ] Dynamic jfpv1 fingerprint comparison function (JSON string against a fingerprint)
- [x] Performance characteristics that scale sufficiently
- [ ] Extensive verification against potential fingerprint (hash) collisions

## Installation

To install the json-fingerprint package, run `pip install json-fingerprint`.
Expand All @@ -33,8 +52,8 @@ print(f'Fingerprint 2: {fp_2}')
This will output two identical fingerprints regardless of the different order of the json elements:

```
Fingerprint 1: jfpv1$sha256$287b67bce7ac4477011ba59ea55f168ba493508ffa6b61ef81594c9dab2c034f
Fingerprint 2: jfpv1$sha256$287b67bce7ac4477011ba59ea55f168ba493508ffa6b61ef81594c9dab2c034f
Fingerprint 1: jfpv1$sha256$f4a2c8bfb5a03da86bbb4e1639ca6b56f9fac6b04c5c7d9e3470afef46cefb4f
Fingerprint 2: jfpv1$sha256$f4a2c8bfb5a03da86bbb4e1639ca6b56f9fac6b04c5c7d9e3470afef46cefb4f
```

Since json objects with identical data content and structure will always produce identical fingerprints, the fingerprints can be used effectively for various purposes. These include finding duplicate json data from a larger dataset, json data cache validation/invalidation and data integrity checking.

0 comments on commit 359ae9f

Please sign in to comment.