bitvavo-api-upgraded 1.15.7__tar.gz → 1.16.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. bitvavo_api_upgraded-1.16.0/.github/README.md +3 -0
  2. bitvavo_api_upgraded-1.16.0/.github/workflows/release.yml +30 -0
  3. bitvavo_api_upgraded-1.16.0/.gitignore +26 -0
  4. bitvavo_api_upgraded-1.16.0/.pre-commit-config.yaml +32 -0
  5. bitvavo_api_upgraded-1.16.0/.python-version +5 -0
  6. bitvavo_api_upgraded-1.16.0/CHANGELOG.md +400 -0
  7. bitvavo_api_upgraded-1.16.0/PKG-INFO +2429 -0
  8. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/README.md +185 -68
  9. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/README.pypi.md +21 -8
  10. bitvavo_api_upgraded-1.16.0/pyproject.toml +357 -0
  11. bitvavo_api_upgraded-1.16.0/scripts/bootstrap.sh +17 -0
  12. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/src/bitvavo_api_upgraded/bitvavo.py +207 -166
  13. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/src/bitvavo_api_upgraded/helper_funcs.py +10 -4
  14. bitvavo_api_upgraded-1.16.0/src/bitvavo_api_upgraded/py.typed +0 -0
  15. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/src/bitvavo_api_upgraded/settings.py +8 -4
  16. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/src/bitvavo_api_upgraded/type_aliases.py +8 -7
  17. bitvavo_api_upgraded-1.16.0/tests/__init__.py +0 -0
  18. bitvavo_api_upgraded-1.16.0/tests/conftest.py +80 -0
  19. bitvavo_api_upgraded-1.16.0/tests/test_bitvavo.py +1600 -0
  20. bitvavo_api_upgraded-1.16.0/tests/test_helper_funcs.py +27 -0
  21. bitvavo_api_upgraded-1.16.0/tox.ini +19 -0
  22. bitvavo_api_upgraded-1.16.0/uv.lock +1266 -0
  23. bitvavo-api-upgraded-1.15.7/MANIFEST.in +0 -3
  24. bitvavo-api-upgraded-1.15.7/PKG-INFO +0 -71
  25. bitvavo-api-upgraded-1.15.7/pyproject.toml +0 -121
  26. bitvavo-api-upgraded-1.15.7/requirements/base.txt +0 -6
  27. bitvavo-api-upgraded-1.15.7/requirements/dev.txt +0 -22
  28. bitvavo-api-upgraded-1.15.7/setup.cfg +0 -4
  29. bitvavo-api-upgraded-1.15.7/setup.py +0 -47
  30. bitvavo-api-upgraded-1.15.7/src/bitvavo_api_upgraded.egg-info/PKG-INFO +0 -71
  31. bitvavo-api-upgraded-1.15.7/src/bitvavo_api_upgraded.egg-info/SOURCES.txt +0 -18
  32. bitvavo-api-upgraded-1.15.7/src/bitvavo_api_upgraded.egg-info/dependency_links.txt +0 -1
  33. bitvavo-api-upgraded-1.15.7/src/bitvavo_api_upgraded.egg-info/requires.txt +0 -6
  34. bitvavo-api-upgraded-1.15.7/src/bitvavo_api_upgraded.egg-info/top_level.txt +0 -1
  35. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/LICENSE.txt +0 -0
  36. {bitvavo-api-upgraded-1.15.7 → bitvavo_api_upgraded-1.16.0}/src/bitvavo_api_upgraded/__init__.py +0 -0
@@ -0,0 +1,3 @@
1
+ # Github README
2
+
3
+ I set this up via [Publishing package distribution releases using GitHub Actions CI/CD workflows](https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/)
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: Publish to PyPI and TestPyPI
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ jobs:
8
+ build-n-publish:
9
+ name: Publish to PyPI and TestPyPI
10
+ runs-on: ubuntu-24.04
11
+ environment:
12
+ name: release
13
+ permissions:
14
+ # For PyPI's trusted publishing.
15
+ id-token: write
16
+ steps:
17
+ - name: Checkout Repository
18
+ uses: actions/checkout@v3
19
+ - name: Install uv
20
+ uses: astral-sh/setup-uv@v3
21
+ - name: Build Wheel
22
+ run: uv build
23
+ - name: Publish Release on GitHub
24
+ uses: actions/download-artifact@v4
25
+ with:
26
+ pattern: wheels-*
27
+ path: wheels
28
+ merge-multiple: true
29
+ - name: Publish to PyPI
30
+ run: uv publish --verbose dist/*
@@ -0,0 +1,26 @@
1
+ /*
2
+
3
+ # dirs
4
+ !.github
5
+ !requirements
6
+ !scripts
7
+ !src
8
+ !tests
9
+
10
+ # files
11
+ !.bumpversion.cfg
12
+ !.gitignore
13
+ !.pre-commit-config.yaml
14
+ !.python-version
15
+ !CHANGELOG.md
16
+ !LICENSE.txt
17
+ !pyproject.toml
18
+ !README.md
19
+ !README.pypi.md
20
+ !uv.lock
21
+ !tox.ini
22
+
23
+ # re-ignore recursively
24
+ __pycache__
25
+ *.egg-info
26
+ *.pyc
@@ -0,0 +1,32 @@
1
+ ---
2
+ repos:
3
+ # update the rev versions with a `pre-commit autoupdate`
4
+ - repo: https://github.com/astral-sh/ruff-pre-commit
5
+ rev: v0.7.3
6
+ hooks:
7
+ - id: ruff # Run the linter.
8
+ - id: ruff-format # Run the formatter.
9
+ - repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
10
+ rev: 0.2.3
11
+ hooks:
12
+ - id: yamlfmt
13
+ args:
14
+ - --mapping
15
+ - "2"
16
+ - --sequence
17
+ - "4"
18
+ - --offset
19
+ - "2"
20
+ - --width
21
+ - "120"
22
+ - --preserve-quotes
23
+ - repo: https://github.com/adrienverge/yamllint
24
+ rev: v1.35.1
25
+ hooks:
26
+ - id: yamllint
27
+ args: [--format, parsable]
28
+ name: yamllint
29
+ description: This hook runs yamllint.
30
+ entry: yamllint
31
+ language: python
32
+ types: [file, yaml]
@@ -0,0 +1,5 @@
1
+ 3.9.20
2
+ 3.10.15
3
+ 3.11.10
4
+ 3.12.7
5
+ 3.13.0
@@ -0,0 +1,400 @@
1
+ # Changelog
2
+
3
+ ## v1.16.0 - 2024-11-18
4
+
5
+ Quite a few changes, most aimed at the maintenance of this project, but all changes are superficial - the functional
6
+ code has not changed.
7
+
8
+ ### Added
9
+
10
+ - `ruff`, which replaces `auotflake`, `black`, `flake8`, `isort`, and `pyupgrade`, in both `pyproject.toml` and
11
+ `.pre-commit-config.yaml`
12
+ - `from __future__ import annotations`, so I can already use `|` instead of
13
+ `Union`
14
+ - `py.typed` to enable mypy support for people who use this lib :)
15
+ - `wrap_public_request` to `conftest.py`, so I can more easily fix tests, if a market like `BABYDOGE-EUR` returns broken
16
+ data (missing fields, `None` values, etc)
17
+
18
+ ### Changed
19
+
20
+ - replaced `pip` with `uv`; I've become a big fan, since I don't have to handle the Python version anymore
21
+ - [uv installation](https://docs.astral.sh/uv/getting-started/installation/) - do prefer the `curl` installation so
22
+ you can `uv self update` and not need to touch your system's Python installation at all!
23
+ - Just `uv sync` to setup the `.venv`, and then `uv run tox` to run tox, or `uv run black` to run black, etc.
24
+ - updated dependencies in `pyproject.toml`, and `.pre-commit-config.yaml`
25
+ - because we're dropping Python 3.7 and 3.8 support, we can finally use lowercase `list` and `dict`
26
+ - fixed a bunch of tests (disabled one with errorCode 400), due to minor API
27
+ changes.
28
+ - formatting using `ruff`
29
+ - replace the unmaintained `bump2version` with `bump-my-version`
30
+
31
+ ### Removed
32
+
33
+ - support for Python `3.7`, `3.8`; both EOL since last update
34
+ - `check-manifest` (used for `MANIFEST.in`)
35
+ - `rich`, as it would force its use on my users, and that's a no-no, as it's WAY
36
+ too verbose. >:(
37
+
38
+ ## v1.15.8 - 2022-03-13
39
+
40
+ ### Changed
41
+
42
+ - also iso format
43
+
44
+ ## v1.15.7 - 2022-03-13
45
+
46
+ ### Changed
47
+
48
+ - add currentTime to napping-until-reset log
49
+
50
+ ## v1.15.6 - 2022-03-13
51
+
52
+ ### Changed
53
+
54
+ - add buffer time to sleep()
55
+
56
+ ## v1.15.5 - 2022-03-13
57
+
58
+ ### Changed
59
+
60
+ - format targetDatetime
61
+
62
+ ## v1.15.4 - 2022-03-13
63
+
64
+ ### Changed
65
+
66
+ - same as last one, except also for private calls
67
+
68
+ ## v1.15.3 - 2022-03-13
69
+
70
+ ### Changed
71
+
72
+ - add targetDatetime to napping-until-reset info log
73
+
74
+ ## v1.15.2 - 2022-03-13
75
+
76
+ ### Changed
77
+
78
+ - fix not being able to override settings variables
79
+
80
+ ## v1.15.1 - 2022-03-13
81
+
82
+ ### Changed
83
+
84
+ - fix the rateLimit check for private calls (this was a bug that let you get banned when making too many calls)
85
+
86
+ ## v1.15.0 - 2022-02-09
87
+
88
+ ### Changed
89
+
90
+ - fix the callback functions, again
91
+ - internal `Bitvavo.websocket` is now `Bitvavo.WebSocketAppFacade` (which is a better, more descriptive, name)
92
+ - internal `receiveThread` class is now `ReceiveThread`
93
+
94
+ ### Removed
95
+
96
+ - bug that broke the code, lmao
97
+
98
+ ## v1.14.1 - 2022-02-09
99
+
100
+ ### Changed
101
+
102
+ - fixed the websocket's callback functions
103
+
104
+ ## v1.14.0 - 2022-02-06
105
+
106
+ Make `upgraded_bitvavo_api` multi-processing friendly! :D
107
+
108
+ ### Added
109
+
110
+ - add chapted to PyPI to shortly explain how to change settings for this lib.
111
+ - add `BITVAVO_API_UPGRADED_RATE_LIMITING_BUFFER` variable. Default value `25`; Change this to 50 or higher _only_ when
112
+ you keep getting banned, because you're running more than one `Bitvavo` object. If you're only running one `Bitvavo`
113
+ objects, you're probably fine.
114
+
115
+ ## v1.13.2 - 2022-02-06
116
+
117
+ ### Changed
118
+
119
+ - fixed a bug where I subtracted where I should've added, making 304 errors more likely 😅
120
+
121
+ ## v1.13.1 - 2022-01-29
122
+
123
+ ### Changed
124
+
125
+ - You will now be informed that you have been temporary banned, even if you did NOT enable the `DEBUGGING` var during
126
+ creation of the `Bitvavo` object. Such a stupid design, originally.
127
+
128
+ ## v1.13.0 - 2022-01-23
129
+
130
+ ### Changed
131
+
132
+ - fixed the API timeout (which did nothing, client-side), by adding a timeout to the actual API call. If `ACCESSWINDOW`
133
+ is now set (when creating `Bitvavo`) to `2000` ms, it will time-out after `2000` ms, and not wait the full `30_000` ms
134
+ anyway.
135
+
136
+ ## v1.12.0 - 2022-01-21
137
+
138
+ ### Added
139
+
140
+ - A trigger to nap `Bitvavo` when `rateLimitRemaining` is about run empty, until `rateLimitResetAt` has elapsed and
141
+ `rateLimitRemaining` has reset, after which the API call will continue as normal. ONLY WORKS FOR NORMAL CALLS -
142
+ WEBSOCKET NOT (yet?) SUPPORTED!
143
+
144
+ ## v1.11.5 - 2022-01-19
145
+
146
+ A `.env` file is just a text file with "equal-separated" key-value pairs. No spaces around the `=` symbol!
147
+
148
+ ### Added
149
+
150
+ - `calcLag()` to `Bitvavo`, which returns the time difference between the server's clock and your local clock. Set the
151
+ variable 1 line down to the value that comes out of this function :)
152
+ - `BITVAVO_API_UPGRADED_LAG=50` option for your `.env` file, to reduce the amount of `304 "Request was not received
153
+ within acceptable window"` errors I was getting. Default value of this setting is 50 (milliseconds), but it is better
154
+ if you override it :)
155
+ - One or two patch-versions back I added `BITVAVO_API_UPGRADED_EXTERNAL_LOG_LEVEL` as an option, but forgot to mention
156
+ it 😅. This setting covers all loggers that are used by this lib's dependencies (`requests`, which makes use of
157
+ `urllib3`, and `websocket-client` to be a bit more specific). Use this setting to shut them up, by setting the
158
+ variable to `WARNING` or `CRITICAL` 😁
159
+
160
+ ## v1.11.4 - 2022-01-19
161
+
162
+ ### Removed
163
+
164
+ - duplicate log messages ;)
165
+
166
+ ## v1.11.3 - 2022-01-18
167
+
168
+ ### Changed
169
+
170
+ - The logger should now be fixed; I wanted all subloggers to get integrated into the struclog style instead of putting
171
+ out some standard text.
172
+
173
+ ## v1.11.2 - 2022-01-16
174
+
175
+ ### Added
176
+
177
+ - putting `BITVAVO_API_UPGRADED_LOG_LEVEL=DEBUG` into a `.env` file in your client should make this lib spam you with
178
+ log messages.
179
+
180
+ ### Changed
181
+
182
+ - replaced `python-dotenv` with `python-decouple` lib. This enables us to set default values for settible settings.
183
+
184
+ ## v1.11.1 - 2022-01-16
185
+
186
+ I ran the unittests this time >\_>
187
+
188
+ ### Changed
189
+
190
+ - fixed bug where `self.debugging` could not be found in `Bitvavo`
191
+
192
+ ## v1.11.0 - 2022-01-16
193
+
194
+ ### Changed
195
+
196
+ - all external loggers (urllib3 and websocket being big ones) now all use a fancy format to log! Or at least, they
197
+ should be!
198
+ - improved pypi README
199
+
200
+ ## v1.10.0 - 2022-01-15
201
+
202
+ No more `print()` bullshit! :D
203
+
204
+ ### Added
205
+
206
+ - classifiers on the pypi page
207
+ - a better logging library (structlog). This should enable you to control logging better (while providing better logs!)
208
+
209
+ ## v1.9.0 - 2022-01-15
210
+
211
+ ### Changed
212
+
213
+ - fixed a critical bug that broke the `Bitvavo` class
214
+
215
+ ## v1.8.3 - 2022-01-15
216
+
217
+ ### Changed
218
+
219
+ - improve api calls by subtracting some client-server lag; This should make calls more stable
220
+ - simplify Bitvavo constructor (doesn't change anything about the external API)
221
+ - fix time_to_wait by checking whether curr_time > rateLimitResetAt
222
+
223
+ ### Removed
224
+
225
+ - rateLimitThread, because it has been a pain in my ass. Using a regular `sleep()` is much better, I noticed.
226
+
227
+ ## v1.8.2 - 2022-01-15
228
+
229
+ ### Changed
230
+
231
+ - `time_to_wait` now _always_ returns a positive number. I'm getting sick of sleep getting a negative number
232
+
233
+ ## v1.8.1 - 2022-01-15
234
+
235
+ ### Added
236
+
237
+ - type aliases! You can now use `s`, `ms`, `us`, instead of slapping `int` on everything! float versions `s_f`, `ms_f`
238
+ and `us_f` are also available. You'll likely use `ms` and `s_f` most of the time :)
239
+ - helper functions! I added `time_ms` and `time_to_wait` to hide some weird calculations behind functions.
240
+
241
+ ### Changed
242
+
243
+ - improved the timing calculation and typing of certain values a bit
244
+
245
+ ## v1.8.0 - 2022-01-11
246
+
247
+ ### Changed
248
+
249
+ - fixed getRemainingLimit - This explains why it NEVER changed from 1000...
250
+
251
+ ## v1.7.0 - 2021-12-31
252
+
253
+ Documentation now comes built-in! :D
254
+
255
+ I'll probably find some typo/minor error right after creating this version, but I think for users this is one of the
256
+ more important updates, so out it does!
257
+
258
+ PS: Happy new year! I write this as it's 2021-12-31 23:15. Almost stopping, so I can stuff my face with Oliebollen and
259
+ celebrate new year! :D
260
+
261
+ ### Added
262
+
263
+ - documentation/docstrings for almost every function and method!
264
+ - type aliases: `anydict`,`strdict`,`intdict`,`errordict`
265
+ - types for `caplog` and `capsys` in all `test_*` function
266
+
267
+ ### Changed
268
+
269
+ - `candle` wasn't the only wrongly named method. `book` was too. Changed `symbol` argument to `market`
270
+ - string concatenation converted to f-strings
271
+ - a ton of improvements to unit tests, checking for types, and conversion possibilities, though most of them for
272
+ `Bitvavo`, not for `Bitvavo.websocket`
273
+ - simplified a few functions; though I wrote tests for them to confirm behavior before changing them
274
+ - improved type hints for several functions - for example: replaced some `Any`'s with `Union[List[anydict], anydict]`;
275
+ in other words: reduced the use of `Any`
276
+
277
+ ### Removed
278
+
279
+ - the old non-documentation above each function (it usually started with `# options:`)
280
+
281
+ ## v1.6.0 - 2021-12-29
282
+
283
+ Bugfix round! All found bugs in the original code should now be fixed.
284
+
285
+ ### Changed
286
+
287
+ - fixed ["Negative sleep time length"](https://github.com/bitvavo/python-bitvavo-api/pull/22)
288
+ - fixed ["API response error when calling depositAssets()"](https://github.com/bitvavo/python-bitvavo-api/pull/18)
289
+ - in `Bitvavo.candles()` renamed the `symbol` argument to `market`, because candles expects a market, and not a
290
+ symbol... The only API break I've done so far, but it's super minor.
291
+
292
+ ## v1.5.0 - 2021-12-29
293
+
294
+ ### Added
295
+
296
+ - separate README for pypi; now I can keep that separate from the one on Github; they can share _some_ information, but
297
+ don't need to share all
298
+ - guides on how to get started as either a users or a developer (who wants to work on this lib)
299
+ - test support for Python 3.7 - 3.10
300
+
301
+ ### Changed
302
+
303
+ - dependencies are now loosened so users of this lib get more freedom to choose their versions
304
+
305
+ ## v1.4.1 - 2021-12-29
306
+
307
+ ### Changed
308
+
309
+ - nothing, I just need to push a new commit to Github so I can trigger a new publish
310
+
311
+ ## v1.4.0 - 2021-12-29
312
+
313
+ ### Changed
314
+
315
+ - set the `mypy` settings to something sane (as per some rando internet articles)
316
+ - `pre-commit` `flake8` support; this was initially disabled due to too a lack of sane settings
317
+ - reduced pyupgrade from `--py39-plus` to `--py38-plus`, due to `39` changing `Dict` to `dict` and `List` to `list`, but
318
+ `mypy` not being able to handle those new types yet.
319
+ - added types to _all_ functions, methods and classes
320
+
321
+ ## v1.3.3 - 2021-12-29
322
+
323
+ ### Changed
324
+
325
+ - fix the workflow (hopefully) - if I did, then this is the last you'll see about that
326
+
327
+ ## v1.3.2 - 2021-12-29
328
+
329
+ ### Changed
330
+
331
+ - fix requirements; 1.3.1 is _broken_
332
+
333
+ ## v1.3.1 - 2021-12-29
334
+
335
+ ### Changed
336
+
337
+ - easy fix to enable publishing to PyPi: disable the `if` that checks for tags 😅
338
+
339
+ ## v1.3.0 - 2021-12-28
340
+
341
+ ### Changed
342
+
343
+ - when there's a version bump, Github should push to PyPi now (not only to https://test.pypi.org)
344
+
345
+ ## v1.1.1 - 2021-12-28
346
+
347
+ ### Changed
348
+
349
+ - improved description
350
+
351
+ ## v1.1.0 - 2021-12-28
352
+
353
+ ### Added
354
+
355
+ - a metric fuckton of tests to check if everything works as expected. said tests are a bit... rough, but it's better
356
+ than nothing, as I already found two bugs that showed that the original code _did not work!_
357
+ - two fixtures: `bitvavo` and `websocket`, each used to test each category of methods (REST vs websockets)
358
+
359
+ ### Changed
360
+
361
+ - renamed the `python_bitvavo_api` folder to `bitvavo_api_upgraded`
362
+ - replaced `websocket` lib with `websocket-client`; I picked the wrong lib, initially, due to a lack of requirements in
363
+ the original repo
364
+ - the `*ToConsole` functions now use the logging library from Python, as the print statement raised an exception when it
365
+ received a exception object, instead of a string message...... (the `+` symbol was sorta the culprit, but not really -
366
+ the lack of tests was the true culprit)
367
+ - the `on_*` methods now have either an extra `self` or `ws` argument, needed to unfuck the websocket code
368
+
369
+ ### Removed
370
+
371
+ ...
372
+
373
+ ## v1.0.2 - 2021-12-27
374
+
375
+ Everything from since NostraDavid started this project; version `1.0.0` and `1.0.1` did not have `bump2version` working
376
+ well yet, which is why they do not have separate entries
377
+
378
+ ### Added
379
+
380
+ - autopublishing to pypi
381
+ - capability to use a `.env` file to hold `BITVAVO_APIKEY` and `BITVAVO_APISECRET` variables
382
+ - `setup.py`; it was missing as _someone_ added it to .gitignore
383
+ - `__init__.py` to turn the code into a package (for `setup.py`)
384
+ - `MANIFEST.in` to include certain files in the source distribution of the app (needed for tox)
385
+ - `scripts/bootstrap.sh` to get newbies up and running faster
386
+ - ton of tools (`pre-commit`, `tox`, `pytest`, `flake8`, etc; see `requirements/dev.txt` for more information)
387
+ - ton of settings (either in `tox.ini`, `pyproject.toml`, or in a dedicated file like `.pre-commit-config` or
388
+ `.bumpversion.cfg`)
389
+ - stub test to `test_bitvavo.py` to make tox happy
390
+ - added `# type: ignore` in `bitvavo.py` to shush mypy
391
+
392
+ ### Changed
393
+
394
+ - moved `python_bitvavo_api` into the `src` folders
395
+ - moved and renamed `src/python_bitvavo_api/testApi.py` to `tests/test_bitvavo.py` (for `pytest` compatibility)
396
+
397
+ ### Removed
398
+
399
+ - Nothing yet; I kept code changes to a minimum, until I got `bump2version` working with a `CHANGELOG.md` to prevent
400
+ changing things without noting it down.