diff --git a/CHANGELOG.md b/CHANGELOG.md index ad337a9a626df27e5f6c9b5ea1379d53b39d957e..d9fb016c178ff09c611357b7a467dd7c1b54a492 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,70 +1,89 @@ ## [v1.0.0rc0](https://git.duniter.org/clients/python/duniterpy/-/milestones/12) (8th July 2021) -### This release breaks backward compatibility ! +### This release breaks backward compatibility! +From this version, only major releases might break backward compatibility. +For 1.x minor versions, only `DeprecationWarning` will occur. ### Features -- #140 Replace `aiohttp` with a non async http library (urllib and websockets) - - No more async keyword required - - If `async` mode is really being needed, look at `request_data_async.py` example +- #140, !118: Replace `aiohttp` with non-asynchronous `http` and `ws` libraries: `urllib` and `websocket-client`: + - `async` and `await` keywords are no longer required + - In case you would like to keep your code asynchronous, check `request_data_async.py` example -- #160 Include examples into Python package - - Read new examples usage documentation in `README.md` +- #160, !134: Include `examples` into the Python package: + - Read new examples usage documentation in the `README.md` -- #95 Remove `signatures` argument from all `__init__()`’s documents subclasses - - Document constructor is `Document(version: int, currency: str)` - - All `Document` subclasses can be signed when created with the optional `signing_key` argument - - #172 `version` is optional now and have a proper default per document type - - `currency` is optional now and have `G1_CURRENCY_CODENAME` by default +- #95, !144: Remove `signatures` argument from all `__init__()`’s documents subclasses: + - `Document` constructor is `Document(version: int, currency: str)` + - All `Document` subclasses can be directly signed when the optional `signing_key` argument is passed + - #172 `version` argument is now optional and have a proper default value per document type + - `currency` argument is now optional and defaults to `G1_CURRENCY_CODENAME` signing_key: SigningKey = None, version: int = VERSION, currency: str = G1_CURRENCY_CODENAME, - - Add `Identity.from_lookup_response()` to simplify examples - - Refactor `Document.signatures` (List) as `Document.signature` (str) - - Set `time` argument optional in SimpleTransaction + - Introduce `Identity.from_bma_lookup_response()` to simplify examples + - Refactor `Document.signatures` `List` as `Document.signature` `str` + - `VerifyingKey.verify_document()` has been removed in favour of `Document.check_signature(pubkey)` + - Set `time` argument optional in `SimpleTransaction` -- #173 Make Transaction easier with single and multi-sign - - Transaction(signing_keys: Optional[Union[SigningKey, List[SigningKey]]] = None) allows single signature or multi-signatures when created - - Transaction.sign() and multi_sign() add signature now to allow different key owner to sign additionally the Tx doc - - Transaction.check_signature() and check_signatures() are available +- #173, !150, !156: Make Transaction easier with single and multi-sign: + - `Transaction(signing_keys: Optional[Union[SigningKey, List[SigningKey]]] = None)` allows single signature or multi-signatures when created + - `Transaction.sign()` and `multi_sign()` now append signature to allow different key owner to sign additionally the Tx doc + - Introduce `Transaction.check_signature()` and `check_signatures()` -- #178 Make `membership_type` argument optional with value 'IN' by default +- #178, !152: `Membership`: Make `membership_type` argument optional defaulting to `IN` -- #175 Rename `timestamp` and `blockstamp` attributes/arguments depending on the type - - `block_id` for `BlockID` type +- #175, !155: Rename `timestamp` and `blockstamp` attributes and arguments depending on their content: - `timestamp` for time in seconds + - `block_id` for `BlockID` type + - `BlockUID` has been renamed to `BlockID` and `BlockID.block_uid()` to `get_block_id()` -- #139 Rename Endpoints attributes from server to host(name) - - Rename `ConnectionHandler.server` to `address` +- #139, !149: Rename `Endpoints` attributes from `server` to `host` + - Rename `ConnectionHandler.server` attribute to `address` -- #150 Add DUBP Mnemonic SigningKey feature with `SigningKey.from_dubp_mnemonic()` +- #150, !130: Introduce DUBP Mnemonic SigningKey feature with `SigningKey.from_dubp_mnemonic()` +- #161, !142: Add DUBP Mnemonic example -- #161, #168 Add DUBP Mnemonic example +- #163, !137: `Revocation.from_signed_raw()` now stores the block ID into a `BlockID` object -- #163 `Revocation.from_signed_raw()` now store timestamps into a BlockUID object +- #170, !145: Improve `Endpoints` regular expressions: + - Add support for internationalized domain name + - Fix `ipv4`/`host` attributes mix up -- #170 Endpoints' regex improvement +- #174, !148: Remove `GVASUBEndpoint` (the subscription is now on `GVAEndpoint` specified with the url path) -- #174 Remove GVASUBEndpoint (subscription now on GVAEndpoint by url path) +- !138: Add `flags` and `path` attributes into `GVAEndpoint.eq()` and `hash()` computations -- #181 `CRCPubkey` class moved from `documents` package to `key` package +- #181, !154: `CRCPubkey` class moved from `documents` to `key` module -### Development -- #132 Introduce [pre-commit](https://pre-commit.com/) for `black` formatter -- #135 Move Pylint config from the `Makefile` to `pyproject.toml` -- #153 Allow to install `black` dependency pre-releases -- #162 Introduce `mypy`, `pylint`, `isort`, `gitlab-ci` pre-commit hooks +- #155, !131: Document `pip` installation -### CI/CD -- #166 Fix MR based pipelines do not trigger tools jobs when there is a code change -- #169 Fix with a token `gitlab-ci-lint` hook no longer working since GitLab CI lint API requires authentication -- #177 Run pre-commit into the CI +### Dependencies +- !147: Update `websocket-client` and `attrs` to major releases + +### Development Environment +`pre-commit` tool has been introduce to run our development tools as pre-commit hooks to check when committing a change. + +- #132, !135: Introduce [pre-commit](https://pre-commit.com/) for `black` formatter +- #135, !136: Move Pylint config from the `Makefile` to `pyproject.toml` +- #153, !129: Allow to install `black` dependency pre-releases +- #162, !136: Introduce `mypy`, `pylint`, `isort`, `gitlab-ci` pre-commit hooks +- !151: Add support for `mypy` v0.910 +- !132: Add support `pylint` v2.8.0 + +#### CI/CD +- #166, !140: Fix MR based pipelines which do not trigger the tools jobs when there is a code change +- #169, !146: Fix with a token for `gitlab-ci-lint` hook, which was no longer working since GitLab CI lint API requires authentication +- #177: Run `pre-commit` into tools jobs ### Fixes -- #134 Fix license header showing in documentation using "#" comments, not docstrings +- #134, !141: Fix license header showed into the documentation by using `#` comments rather than docstrings - Introduce [insert-license hook](https://github.com/Lucas-C/pre-commit-hooks) +--- + +- Thanks @vtexier, @Moul ## [v0.62.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/16) (16th March 2021)