- SIGNIFICANTLY REWRITTEN AND REFACTORED to align better with the specification language and approach. Includes refactoring, command line tool changes, and many API changes. The InventoryValidator class is relatively unchanged, however
- Improved docstrings in many places
- Change from "1.0" to "1.1" as default specification version
- Adjust for removed
E023_missing_file
fixture (OCFL/fixtures#99) - Add note of specification version number in validation output
- Ignore
logs
directory if present in object root (extra fixture OCFL/fixtures#108) - Changed Object.show() method to Object.tree() that returns string
- Change validator to use
force_spec_version
to validate against a specific version and remove oldextract_spec_version
with that becoming the default behavior unless force is specified - Code style change to use double quotes for strings unless there is a good reason to use single quotes
- Drop Python 3.6 and 3.7 from testing, add 3.11
- Add preliminary handling of OCFL v1.1 (#81)
- Additional validation improvements:
- Use additional fixtures in https://github.com/OCFL/fixtures for tests
- Improve handling of inconsistent state between version inventories errors (E066, #85)
- Improve handling of fixity block issues (E056/E111, #79, #87)
- Running tests on Python 3.6, 3.7, 3.8, 3.9
- Validation improvements:
- Correct handling of missing files mentioned in manifest or fixity
- Catch inconsistent id between versions
- Catch forward slash in contentDirectory
- Add test bad inventory examples in
extra_fixtures/bad-objects
- Add use of
pylint
in addition topycodestyle
andpydocstyle
(waspep257
). Numerous minor fixes as a result of errors/warnings reported. - Use additional fixtures in https://github.com/OCFL/fixtures for tests
- Validation:
- Correct missing root inventory from E034 to E063
- Add tests for digests in prior version manifests
- Add ability for
ocfl-validate.py
to validate a standalone inventory
- Add deeply nested text object (
extra_fixtures/good-objects/ten_level_deep_directories.zip
) - Fix broken extraction of status of support for validation conditions
- Change to use PyFilesystem2 for filesystem access which allows use of local filesystem, zip files, and S3. The S3 support is preliminary because it has a number of work-arounds to avoid PyFilesystem2's expectation that there are empty directrory objects
- Renames ocfl.version to ocfl.version_metadata for clarity
- Use
main
as default branch in git repository, fix links and documentation
- Add table of implementation status (https://github.com/zimeon/ocfl-py/blob/main/docs/validation_status.md)
- OCFL v1.0 released (https://ocfl.io/1.0/spec/), change links from draft to 1.0
- Add checks for paths in manifest (https://ocfl.io/1.0/spec/#E098, https://ocfl.io/1.0/spec/#E099, https://ocfl.io/1.0/spec/#E100, https://ocfl.io/1.0/spec/#E101)
- Separate message not a string test (https://ocfl.io/1.0/spec/#E094) from others
- Sort out version sequence tests (https://ocfl.io/1.0/spec/#E008, https://ocfl.io/1.0/spec/#E009, https://ocfl.io/1.0/spec/#E010, https://ocfl.io/1.0/spec/#E011)
- Refine checks for logical paths (https://ocfl.io/1.0/spec/#E052, https://ocfl.io/1.0/spec/#E053)
- Fix code for missing sidecar (https://ocfl.io/1.0/spec/#E058)
- Add --version for ocfl-sidecar.py
- Add checks for paths in manifest (https://ocfl.io/1.0/spec/#E098, https://ocfl.io/1.0/spec/#E099, https://ocfl.io/1.0/spec/#E100, https://ocfl.io/1.0/spec/#E101)
- Separate message not a string test (https://ocfl.io/1.0/spec/#E094) from others
- Sort out version sequence tests (https://ocfl.io/1.0/spec/#E008, https://ocfl.io/1.0/spec/#E009, https://ocfl.io/1.0/spec/#E010, https://ocfl.io/1.0/spec/#E011)
- Refine checks for logical paths (https://ocfl.io/1.0/spec/#E052, https://ocfl.io/1.0/spec/#E053)
- Fix code for missing sidecar (https://ocfl.io/1.0/spec/#E058)
- Add ocfl-sidecar.py script to generate inventory sidecar
- Validator now checks fixity block structure, additional fixity values in fixity block
- Validator now checks for repeated digests in manifest, fixity and state blocks (https://ocfl.io/1.0/spec/#E096, https://ocfl.io/1.0/spec/#E097, https://ocfl.io/1.0/spec/#E098)
- Move all the many README_*.md demos into docs folder
- Add build_demo_docs.sh to build demo descriptions in docs folder
- ocfl-validate.py script now handles storage roots and objects
- When validating, show warnings and errors by default (#22)
- Handle case of no versions https://ocfl.io/1.0/spec/#E008
- Handle case of bad JSON inventory https://ocfl.io/1.0/spec/#E033
- Handle case of no manifest https://ocfl.io/1.0/spec/#E041
- Handle case of conflicting paths https://ocfl.io/1.0/spec/#E095
- Renumber errors to align somewhat with the canonical code set extracted at https://github.com/OCFL/spec/blob/main/validation/validation-codes.md
- Add --version parameter to scripts to show version number
- Actually check digests for content during validation!
- Add --validate to ocfl.py to check all of storage root
- Add missing package data to install
- Deal with tests for warnings https://ocfl.io/1.0/spec/#W003, https://ocfl.io/1.0/spec/#W009 and https://ocfl.io/1.0/spec/#W010
- Two in a day...
- Support for version creation from and extraction as Bagit bags
- Push up first version to PyPI