File: CHANGELOG.md

package info (click to toggle)
python-duniterpy 1.1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,228 kB
  • sloc: python: 10,624; makefile: 182; sh: 17
file content (389 lines) | stat: -rw-r--r-- 15,855 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
## v1.1.1 (14th August 2023)

Bug fix release, because `libnacl` brought in a breaking change.

### Fixes
- #206, !190: Fix `libnacl` version to 1.8.0
- Fix deprecation warning about `typing.re.Pattern`

### Backport necessary changes from v1.2.0 development branch for beeing able to release
- #194: Introduce `tests:3.11` job
  - to set `PYTHON_VERSION` to `3.11` in order to fix the pipeline since `pre-commit` is now installed on `3.11` image
- Remove runners tags
- Bump broken isort, black, pylint pre-commit hooks

## [v1.1.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/18) (14th February 2022)

### Project
- #179, !172: Drop Python v3.6 support
- #188, !168: Introduce Python 3.10 support
- #145, !171: Bump copyright to 2022

### Code
- #187, !167: Implement `__eq__` and `__hash__` `Documents` methods
- #146, !166: Use `f-string`

### Dev Env/CI
- #90, #103, !113: Pytest introduction, coverage report and badge generations
- #165, !170: Stop using the Makefile in the CI and tools installed from Poetry dev dependencies in favor of pre-commit
- #186, !164: Introduce `pyupgrade` pre-commit hook
- !163: pylint: Remove `R0401` and `R0904` disables
- !169: Bump pre-commit hooks version, Handle new Pylint rules
- #182, !170: Bump Sphinx to v4

---

- Thanks @Moul, @vtexier

## [v1.0.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/12) (21st August 2021)
**See below the main changes for the v1.0**

No changes since the rc1.

## [v1.0.0rc1](https://git.duniter.org/clients/python/duniterpy/-/milestones/12) (25th July 2021)
**See below the main changes for the v1.0**

### Fixes
- #152, #170, !159: Fix `ESUserEndpoint` regex
  - Fix datapod domain name in `request_data_elasticsearch` example

### Development Environment
- #149, !161: Change workflow by changing from `master` and default `dev` branches to a single `main` branch
- Add changelog link to PyPI

### Documentation
- !160: Fix autodoc generation by running it into Poetry virtualenv
- !158: Allow to trigger the documentation job without having the release stage completed

## [v1.0.0rc0](https://git.duniter.org/clients/python/duniterpy/-/milestones/12) (9th July 2021)

TL;DR: The key changes are the `Documents` refactoring, the removal of the asynchronous property.
The inclusion of the examples into the package, and the introduction of `pre-commit` tool for development purposes.

### 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
#### Documents refactoring
Major refactoring have been done on `Document` and its sub-classes.
All documents are now internally using a `signature` attribute which is a string and no longer a list of strings, except for the `Transaction` document which can handle multi-signatures.
It is no longer possible to pass the `signature` as argument at instantiation since it doesn’t make sense in the document life cycle.
However, it is now possible to pass a `signing_key` argument to directly instantiate a signed document.
The document version and the currency arguments are now set optional and default to current document version and Ğ1 currency.
The methods to check the signature·s have been moved as specific methods into the documents classes.

- #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,
    
  - 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, !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, !152: `Membership`: Make `membership_type` argument optional defaulting to `IN`

- #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()` 
  
- #163, !137: `Revocation.from_signed_raw()` now stores the block ID into a `BlockID` object

#### Network
The asynchronous property has been dropped to improve DuniterPy accessibility to new comers. 
Improvements have been made on the endpoints handling.

- #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
- #170, !145: Improve `Endpoint`s’ regular expressions:
  - Add support for internationalized domain name
  - Fix `ipv4`/`host` attributes mix up
- #139, !149: Rename `Endpoint`s’ attributes from `server` to `host`
  - Rename `ConnectionHandler.server` attribute to `address`
- #174, !148: Remove `GVASUBEndpoint` (the subscription is now on `GVAEndpoint` specified with the url path)
- !138: Add `flags` and `path` attributes into `GVAEndpoint.eq()` and `hash()` computations

#### Key handling
- #150, !130: Introduce DUBP Mnemonic SigningKey feature with `SigningKey.from_dubp_mnemonic()`
  - #161, !142: Add DUBP Mnemonic example
- #181, !154: `CRCPubkey` class moved from `documents` to `key` package

#### Others
- #160, !134: Include `examples` into the Python package:
  - They can be run into Python shell
  - Read new examples usage documentation in the [README.md](README.md#Examples)
- #155, !131: Document `pip` installation
- !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.
`isort`, a tool that sorts the imports automatically, has been introduced.

- #162, !136: Introduce `mypy`, `pylint`, `isort`, `gitlab-ci` pre-commit hooks
- #132, !135: Introduce [pre-commit](https://pre-commit.com/) for `black` formatter
- #153, !129: Allow to install `black` dependency pre-releases
- !151: Add support for `mypy` v0.910
- #135, !136: Move Pylint config from the `Makefile` to `pyproject.toml`
- !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, !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)

### This release breaks backward compatibility !

### BEFORE
- `bma.network.peers` was pointing to `/network/peering/peers` request

### AFTER
- `bma.network.peers` point to `/network/peers` request
- `bma.network.peering_peers` point to `/network/peering/peers` request

### Features
- #141 Helper function to get best available nodes (for a real p2p client)
- #130 Allow building Block instance from local Duniter json

### Fixes
- #143 Block : fix computed_inner_hash(), sign() and proof_of_work bug
- Fixed documentation version on new release

### Development
- #147 Support pylint v1.7.2 rule R0801
- #118 Set up complete CI/CD pipeline

- Thanks @vtexier, @Moul, @matograine, @HugoTrentesaux

## [v0.61.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/14) (30th November 2020)

- #59 add GVA query support and example
- #137 add GVAEndpoint and GVASUBEndpoint classes
- fix bug in API.reverse_url

- Readme: Update dependencies list
- Upgrade to Poetry v1.1.x
- Fix regex to update the documentation version
- fix bug in pylint on examples
- Add v0.58.1 and v0.60.1 changelogs

## v0.60.1 (7th November 2020)

- #133, !116: Fix: Add support for libnacl from v1.7.2

## [v0.60.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/3) (26th September 2020)

- #60, !106: Drop Python v3.5 support
- #86, !106: Scrypt: migrate from `pylibscrypt` to `hashlib.scrypt` from the standard Python 3.6 lib
- #111, !111: Clearly define the copyright and license statements
- #68, !106: Package in Debian Bullseye v11

---

- Thanks @vtexier, @Moul

## v0.58.1 (7th November 2020)

- #133, !116: Fix: Add support for libnacl from v1.7.2

## [v0.58.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/15) (10th September 2020)

**Note**: This is the last major release with Python v3.5 support.

[As Python 3.5 security fixes have been dropped on September 13th of 2020](https://devguide.python.org/#status-of-python-branches).

### CI/CD
- #127: Change deprecated keyword in `.gitlab-ci.yml`
- #124: Fix `publish_doc` job not working

### Dependencies
- !107: Fix pylint v2.6.0 new checks
- Update black to v20.8b1, format code
- !102: Update base58 to v2
- !102: Update Sphinx to v3

### Examples
- !104: Rework send membership and identity documents examples

### Documentation
- !102: Add Repology’s packaging status to the Readme
- !103: Rename file to `CONTRIBUTING.md` to be recognised by GitLab

---

- Thanks @vtexier, @Moul

## [v0.57.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/11) (2nd April 2020)
### Code
#### Enhancements
- #123 Implement authentication from Scuttlebutt .ssb/secret file
- #77 Implement authentication from credentials file
- #122, !99 Implement `/wot/requirements-of-pending` command support in BMA api
- #120, !98 `HeadV2`, `HeadV1`, `HeadV0` and `Head` classes now each inherit from previous class **BREAK BACKWARD COMPATIBILITY**
#### Fixes
- #119, !96 `software_version` field in WS2Pv1 messages now accept a string after patch number (`1.7.21-beta` accepted)
- #114, !100 Fix `bma.blockhain.revoked` command class calling `/blockchain/with/excluded` url

### Documentation
- #104 add CONTRIBUTE.md file with release workflow
 
### CI/CD
- #66, !93  Migrate to [Poetry](https://python-poetry.org/) (build and development environment)

---

- Thanks @vtexier, @Moul

## [v0.56.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/10) (20th January 2020)
### Code
- #58, !84: Introduce WS2P API support: **BREAK BACKWARD COMPATIBILITY**:
  - `bma.ws`: now websocket connections use the special `WSConnection` class and `async`, check examples.
  - Add two examples, a helper to retrieve the WS2P API from BMA.
- #113, !89: Blocks signature verification is correctly handled now, differently from other documents.
- #112, !88: fix `Unlock.from_inline()` error on a newly created Unlock
- !87: Typos in Block: `noonce` −> `nonce`, hash
- !82: Use `sys.exit()` instead of `exit()`
- !79:
  - Move tools out of the `helper` folder
  - Dedicate the `helper` folder to helpers
  - Introduce `output_available()` helper to check if an output is available

### Dependencies
- !91: fix the `attrs`/`attr` dependency

### Build
- #107, !81: Enhance version definition in `setup.py`

### CI/CD
- !78: Release on PyPI only on tags

### Documentation
- #101, !80: Publish auto-documentation on GitLab Pages
- #106, !83: Migrate the `README` back to markdown, reword and update it.
- !77: Improve v0.55.0 and add v0.55.1 changelog
- !92: Add v0.56.0 changelog
---

- Thanks @vtexier, @Moul

## v0.55.1 (19th July 2019)
- #102: wheel build does not longer include `duniterpy` sub-folders
- Trigger release only on `master` not on tag as protected environment variables are not shared with pipelines started on a tag
- Fix Makefile: rebuild not working

## [v0.55.0](https://git.duniter.org/clients/python/duniterpy/-/milestones/9) (18th July 2019)
### Code
- Refactor request `api.ws2p.heads` in `api.bma.network.ws2p_heads` (BMA command to get ws2p heads)
- Fix bug in PubSec v1 secret key length check while loading

### Checks
#### Pylint
- Add Pylint as a dev dependency to check code validity
- Add `pylint` command to the `Makefile`
- #91, !65: Apply Pylint on the code

#### Black
- #54: Add Black as dev dependency to format the code (not PEP8 compliant)
- Add `format` and `check-format` commands to the `MakeFile`
- !63: Format the code with Black

#### Others
- `Makefile`: `check` command for `mypy`, `pylint`, and `check-format` checks
- #94: Apply Mypy, Pylint and Black on `tests` and `examples` folders

### CI
- Add MyPy, Black, and Pylint jobs
- Rename `mypy` job to `check` which run `make check`: `mypy`, `pylint`, `check-format`
- Add `check-format` job at the first stage

### Build
- Add `build` command to the Makefile
- Install build dependencies separately via a `requirements_deploy.txt` file
- #98, !72: Do not include `tests` folder in the wheel package for PyPi distribution

### CD
- Add `deploy` and `deploy_test` commands to the Makefile
- #99, !74: Add job for PyPi test deployment
- !73: Trigger PyPi release job only on tag
- Move `github-sync` stage in release stage as an `after-script` step
- #100, !75: Use extends instead of Yaml anchors in `.gitlab-ci.yml` (requires GitLab v12+)
- Also trigger the pipeline when the `Makefile` changes

### Project
- #96, !70: Add support for PEP 561 for DuniterPy type hints to be recognized by mypy when imported
- Remove not used `coveralls` dependency

## v0.54.3 (29th May 2019)
- Upload again to PyPi as previous release haven’t been uploaded thanks to the tag
- Transaction: fix `time` type

## v0.54.2 (27th May 2019)
- fix Transaction document generation
- lock transaction document generation with a test

## v0.54.1 (9th May 2019)
- `Transaction`: add __eq__() and __hash__() methods
- Transaction Unlock parameters: add __eq__() and __hash__() methods
- Transaction: add 'time' variable for read and write but not for doc generation
- output conditions: add __eq__() and __hash__() methods
- test transaction equality at all levels

---

- Thanks @Moul, @vtexier

## v0.54.0 (5th May 2019)

### Code/tests
- Fix OutputSource and InputSource from_inline() regex matching
- Transaction document: tests and code: drop versions 2 and 3 management
- Block document: code: drop vensions 2 and 3 management
- Block document: Upgrade blocks to v11 and TX to v10
- Add OutputSource.inline_condition() method
- output conditions: fix 'parser' variables default definition
- output conditions: add token() and compose() tests

### Other
- CI: Do not trigger build, tests, type check on modification of non-relevant files
- Makefile: use python3 module to run tests and type check
- Add coveralls as dev dependency
- setup.py: add classifiers: Python versions, Intended Audience
- Add CHANGELOG.md from v0.53.1

---

- Thanks @Moul, @vtexier

## v0.53.1 (18 April 2019)

- Implement equality `__eq__()` and `__hash__()` methods for InputSource and OutputSource classes

---
Thanks @Moul, @vtexier

## v0.53.0 (30 March 2019)

- To be completed…