Skip to content

Commit

Permalink
Add pip-tools to pin dependencies (#393)
Browse files Browse the repository at this point in the history
This PR addresses issue #392 and adds pip-tools for managing and locking
dependencies.

**Rationale:**
We've had multiple issues with package versions breaking the code. By
using `pip-compile` to pin dependencies we can prevent unexpected issues
arising from unrelated updates.

**Changes Made:**
- Added `requirements.in` to list dependencies
- Ran `pip-compile` to re-generate `requirements.txt` 
- Updated README to reflect these changes
  • Loading branch information
bram-vdberg authored Aug 28, 2024
1 parent aeef18f commit 02af1c9
Show file tree
Hide file tree
Showing 3 changed files with 342 additions and 17 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,3 +147,7 @@ docker run --pull=always -it --rm \
```

and (usually after about 30 seconds) find the transfer file written to your current working directory.

### Managing Dependencies
Python libraries can be added to the `requirements.in` file. After this `pip-compile` or `python -m pip-compile` will update the `requirements.txt` for you (you may have to install the libry manually first).
Warning: this might take a long time for large changes or when you run pip-compile for the first time. Running the command with the `-v` flag can help keep track of what's happening.
20 changes: 20 additions & 0 deletions requirements.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
certifi>=2022.6.15
duneapi>=8.0.0
dune-client>=1.1.1
psycopg2-binary>=2.9.6
python-dotenv>=0.20.0
coinpaprika>=0.1.0
requests>=2.28.1
safe-eth-py>=5.5.0
slackclient>=2.9.4
web3<7.0.0
SQLAlchemy<2.0.0
sqlalchemy-stubs>=0.4
pandas==2.0.3
pandas-stubs==2.0.2.230605
numpy==1.26.4
pip-tools==7.4.1
black
mypy
pylint
pytest
335 changes: 318 additions & 17 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,320 @@
certifi>=2022.6.15
duneapi>=8.0.0
dune-client>=1.1.1
psycopg2-binary>=2.9.6
python-dotenv>=0.20.0
coinpaprika>=0.1.0
requests>=2.28.1
safe-eth-py>=5.5.0
slackclient>=2.9.4
web3<7.0.0
SQLAlchemy<2.0.0
sqlalchemy-stubs>=0.4
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# pip-compile
#
aiohappyeyeballs==2.4.0
# via aiohttp
aiohttp==3.10.5
# via
# dune-client
# slackclient
# web3
aiosignal==1.3.1
# via aiohttp
astroid==3.2.4
# via pylint
async-timeout==4.0.3
# via aiohttp
attrs==24.2.0
# via
# aiohttp
# jsonschema
# referencing
bitarray==2.9.2
# via eth-account
black==24.8.0
# via -r requirements.in
build==1.2.1
# via pip-tools
cached-property==1.5.2
# via
# py-ecc
# py-evm
certifi==2024.7.4
# via
# -r requirements.in
# requests
charset-normalizer==3.3.2
# via requests
ckzg==1.0.2
# via
# eth-account
# py-evm
# web3
click==8.1.7
# via
# black
# pip-tools
coinpaprika==0.1.0
# via -r requirements.in
cytoolz==0.12.3
# via eth-utils
dataclasses-json==0.6.7
# via dune-client
deprecated==1.2.14
# via
# dune-client
# duneapi
dill==0.3.8
# via pylint
dune-client==1.7.5
# via -r requirements.in
duneapi==8.0.0
# via -r requirements.in
eth-abi==5.1.0
# via
# eth-account
# web3
eth-account==0.11.3
# via web3
eth-bloom==3.0.1
# via py-evm
eth-hash[pycryptodome]==0.7.0
# via
# eth-bloom
# eth-utils
# trie
# web3
eth-keyfile==0.8.1
# via eth-account
eth-keys==0.5.1
# via
# eth-account
# eth-keyfile
# py-evm
eth-rlp==1.0.1
# via eth-account
eth-typing==4.4.0
# via
# eth-abi
# eth-keys
# eth-utils
# py-ecc
# py-evm
# web3
eth-utils==4.1.1
# via
# eth-abi
# eth-account
# eth-keyfile
# eth-keys
# eth-rlp
# py-ecc
# py-evm
# rlp
# trie
# web3
exceptiongroup==1.2.2
# via pytest
frozenlist==1.4.1
# via
# aiohttp
# aiosignal
greenlet==3.0.3
# via sqlalchemy
hexbytes==0.3.1
# via
# eth-account
# eth-rlp
# trie
# web3
idna==3.8
# via
# requests
# yarl
iniconfig==2.0.0
# via pytest
isort==5.13.2
# via pylint
jsonschema==4.23.0
# via web3
jsonschema-specifications==2023.12.1
# via jsonschema
lru-dict==1.2.0
# via
# py-evm
# web3
marshmallow==3.22.0
# via dataclasses-json
mccabe==0.7.0
# via pylint
multidict==6.0.5
# via
# aiohttp
# yarl
mypy==1.11.2
# via
# -r requirements.in
# sqlalchemy-stubs
mypy-extensions==1.0.0
# via
# black
# mypy
# typing-inspect
ndjson==0.3.1
# via dune-client
numpy==1.26.4
# via
# -r requirements.in
# pandas
# pandas-stubs
packaging==24.1
# via
# black
# build
# marshmallow
# pytest
# safe-eth-py
pandas==2.0.3
# via -r requirements.in
pandas-stubs==2.0.2.230605
numpy==1.26.4
black
mypy
pylint
pytest
# via -r requirements.in
parsimonious==0.10.0
# via eth-abi
pathspec==0.12.1
# via black
pip-tools==7.4.1
# via -r requirements.in
platformdirs==4.2.2
# via
# black
# pylint
pluggy==1.5.0
# via pytest
protobuf==5.27.4
# via web3
psycopg2-binary==2.9.9
# via -r requirements.in
py-ecc==7.0.1
# via py-evm
py-evm==0.10.1b1
# via safe-eth-py
pycryptodome==3.20.0
# via
# eth-hash
# eth-keyfile
pylint==3.2.6
# via -r requirements.in
pyproject-hooks==1.1.0
# via
# build
# pip-tools
pytest==8.3.2
# via -r requirements.in
python-dateutil==2.9.0.post0
# via
# dune-client
# pandas
python-dotenv==1.0.1
# via
# -r requirements.in
# duneapi
pytz==2024.1
# via pandas
pyunormalize==15.1.0
# via web3
referencing==0.35.1
# via
# jsonschema
# jsonschema-specifications
regex==2024.7.24
# via parsimonious
requests==2.32.3
# via
# -r requirements.in
# coinpaprika
# dune-client
# duneapi
# safe-eth-py
# web3
rlp==4.0.1
# via
# eth-account
# eth-rlp
# py-evm
# trie
rpds-py==0.20.0
# via
# jsonschema
# referencing
safe-eth-py==5.8.0
# via -r requirements.in
safe-pysha3==1.0.4
# via safe-eth-py
six==1.16.0
# via python-dateutil
slackclient==2.9.4
# via -r requirements.in
sortedcontainers==2.4.0
# via trie
sqlalchemy==1.4.53
# via -r requirements.in
sqlalchemy-stubs==0.4
# via -r requirements.in
tomli==2.0.1
# via
# black
# build
# mypy
# pip-tools
# pylint
# pytest
tomlkit==0.13.2
# via pylint
toolz==0.12.1
# via cytoolz
trie==3.0.1
# via py-evm
types-deprecated==1.2.9.20240311
# via
# dune-client
# duneapi
types-python-dateutil==2.9.0.20240821
# via dune-client
types-pytz==2024.1.0.20240417
# via pandas-stubs
types-pyyaml==6.0.12.20240808
# via dune-client
types-requests==2.32.0.20240712
# via
# dune-client
# duneapi
types-setuptools==73.0.0.20240822
# via dune-client
typing-extensions==4.12.2
# via
# astroid
# black
# eth-rlp
# eth-typing
# mypy
# sqlalchemy-stubs
# typing-inspect
# web3
typing-inspect==0.9.0
# via dataclasses-json
tzdata==2024.1
# via pandas
urllib3==2.2.2
# via
# requests
# types-requests
web3==6.20.3
# via
# -r requirements.in
# duneapi
# safe-eth-py
websockets==13.0
# via web3
wheel==0.44.0
# via pip-tools
wrapt==1.16.0
# via deprecated
yarl==1.9.4
# via aiohttp

# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools

0 comments on commit 02af1c9

Please sign in to comment.