diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..34bfbea --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,139 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + + +## [Unreleased] + +[Unreleased]: https://github.com/althonos/fs.archive/compare/v0.6.2...HEAD + +### Added +- This changelog file. +- `7z` extra for reading and writing 7z archives with the `fs.archive.sevenzipfs` module. + +### Fixed +- Abstract base classes for collection types being removed from the `collections` module in Python 3.10. +- Handling of Rock Ridge entries in new `pycdlib` versions. +- Namespace handling in `ZipReadFS.scandir` causing `getinfo` to be called when not needed. + +### Changed +- Use `fs.path.isbase` in `ZipReadFS` to check for implicit directories. +- Use the stdlib implementation of `TarFile.xzopen` on Python 3. + + +## [v0.6.2] - 2019-02-22 + +[v0.6.2]: https://github.com/althonos/fs.archive/compare/v0.6.1...v0.6.2 + +### Changed +- Allow all versions of `fs` greater than `v2.2` to work. + + +## [v0.6.1] - 2019-02-11 + +[v0.6.1]: https://github.com/althonos/fs.archive/compare/v0.6.0...v0.6.1 + +### Changed +- Bump required `fs` version to `v2.3.0` + + +## [v0.6.0] - 2019-01-06 + +[v0.6.0]: https://github.com/althonos/fs.archive/compare/v0.5.0...v0.6.0 + +### Changed +- Bump required `fs` version to `v2.2.0` + + +## [v0.5.0] - 2018-08-13 + +[v0.5.0]: https://github.com/althonos/fs.archive/compare/v0.4.1...v0.5.0 + +### Changed +- Bump required `fs` version to `v2.1.0` + + +## [v0.4.1] - 2018-08-07 + +[v0.4.1]: https://github.com/althonos/fs.archive/compare/v0.4.0...v0.4.1 + +### Fixed +- Change of behaviour in `zipfile` since Python 3.7. +- `typing.GenericMeta` removed in Python 3.7. + +### Changed +- Bump optional `pycdlib` minimum version to `1.4`. + + +## [v0.4.0] - 2018-07-12 + +[v0.4.0]: https://github.com/althonos/fs.archive/compare/v0.3.2...v0.4.0 + +### Changed +- Drop support of Python 3.3. +- Pin optional `pycdlib` minimum version to `1.3` to avoid `weakref` issues in later versions. + +### Fixed +- Encoding issues with the `TarFS` opener. +- `TarFS` checking for member existence more than required is `listdir` or `exists`. + + +## [v0.3.2] - 2018-04-16 + +[v0.3.2]: https://github.com/althonos/fs.archive/compare/v0.3.1...v0.3.2 + +### Fixed +- Typo in Python 2 code of `TarSaver`. +- Potential bug with mix of inferred and explicit directories in `TarReadFS`. +- `NoWrapMeta` not working with new typed `WrapFS` metaclass. + +### Changed +- Avoid using private API parts of `pycdlib`. + + +## [v0.3.1] - 2018-03-10 + +[v0.3.1]: https://github.com/althonos/fs.archive/compare/v0.3.0...v0.3.1 + +### Fixed +- `ArchiveFS` not closing the wrapped filesystem. + + +## [v0.3.0] - 2018-02-20 + +[v0.3.0]: https://github.com/althonos/fs.archive/compare/v0.2.0...v0.3.0 + +### Removed +- `fs.proxy` dependency. + +### Fixed +- Metadata not being copied with files in `WrapWritable`. +- `TarFS.extractfile` returning an incomplete file-like object. + +### Changed +- Properly implement `WrapWritable.scandir` instead of relying on `listdir` and `getinfo`. +- Bump optional `pycdlib` minimum version to `1.3`. + + +## [v0.2.0] - 2017-08-29 + +[v0.2.0]: https://github.com/althonos/fs.archive/compare/v0.1.0...v0.2.0 + +### Added +- `iso` extra for reading and writing ISO disk images with the `fs.archive.isofs` module. + +### Fixed +- `fs.opener.errors` changing name in `fs` version `2.0.7`. +- `Info` properties requiring some namespaces since `fs` version `2.0.8`. + +### Changed +- Make `open_archive` yield read-only filesystems if the source is read-only. + + +## [v0.1.0] - 2017-07-03 + +[v0.1.0]: https://github.com/althonos/fs.archive/compare/b73357aa...v0.1.0 + +Initial release. diff --git a/README.md b/README.md index 47b1926..c03b62b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,16 @@ # `fs.archive` [![star me](https://img.shields.io/github/stars/althonos/fs.archive.svg?style=social&maxAge=3600&label=Star)](https://github.com/althonos/fs.archive/stargazers) -[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=300&style=flat-square)](https://github.com/althonos/fs.archive) -[![PyPI](https://img.shields.io/pypi/v/fs.archive.svg?style=flat-square&maxAge=300)](https://pypi.python.org/pypi/fs.archive) -[![Actions](https://img.shields.io/github/workflow/status/althonos/fs.archive/Test/master?style=flat-square&maxAge=300)](https://github.com/althonos/fs.archive/actions) -[![Codecov](https://img.shields.io/codecov/c/github/althonos/fs.archive/master.svg?style=flat-square&maxAge=300)](https://codecov.io/gh/althonos/fs.archive) -[![Codacy](https://img.shields.io/codacy/grade/eadf418db5a84efd9fa1b470529dcad6/master.svg?style=flat-square&maxAge=300)](https://www.codacy.com/app/althonos/fs.archive/dashboard) -[![Format](https://img.shields.io/pypi/format/fs.archive.svg?style=flat-square&maxAge=300)](https://pypi.python.org/pypi/fs.archive) -[![License](https://img.shields.io/pypi/l/fs.archive.svg?style=flat-square&maxAge=300)](https://choosealicense.com/licenses/mit/) +[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?logo=git&maxAge=36000&style=flat-square)](https://github.com/althonos/fs.archive) +[![PyPI](https://img.shields.io/pypi/v/fs.archive.svg?logo=pypi&style=flat-square&maxAge=3600)](https://pypi.python.org/pypi/fs.archive) +[![Actions](https://img.shields.io/github/workflow/status/althonos/fs.archive/Test/master?logo=github&style=flat-square&maxAge=300)](https://github.com/althonos/fs.archive/actions) +[![Codecov](https://img.shields.io/codecov/c/github/althonos/fs.archive/master.svg?logo=codecov&style=flat-square&maxAge=300)](https://codecov.io/gh/althonos/fs.archive) +[![Codacy](https://img.shields.io/codacy/grade/eadf418db5a84efd9fa1b470529dcad6/master.svg?logo=codacy&style=flat-square&maxAge=300)](https://www.codacy.com/app/althonos/fs.archive/dashboard) +[![License](https://img.shields.io/pypi/l/fs.archive.svg?style=flat-square&maxAge=36000)](https://choosealicense.com/licenses/mit/) +[![Versions](https://img.shields.io/pypi/pyversions/fs.archive.svg?logo=python&style=flat-square&maxAge=300)](https://pypi.org/project/fs.archive) +[![Format](https://img.shields.io/pypi/format/fs.archive.svg?style=flat-square&maxAge=300)](https://pypi.org/project/fs.archive) +[![GitHub issues](https://img.shields.io/github/issues/althonos/fs.archive.svg?style=flat-square&maxAge=600)](https://github.com/althonos/fs.archive/issues) +[![Downloads](https://img.shields.io/badge/dynamic/json?style=flat-square&color=303f9f&maxAge=86400&label=downloads&query=%24.total_downloads&url=https%3A%2F%2Fapi.pepy.tech%2Fapi%2Fprojects%2Ffs.archive)](https://pepy.tech/project/fs.archive) +[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/fs.archive/blob/master/CHANGELOG.md) ## Requirements