ypricemagic 4.6.20.dev0__tar.gz → 4.6.22.dev0__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.
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/mypy.yaml +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/pytest.yaml +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/release.yaml +1 -17
- {ypricemagic-4.6.20.dev0/ypricemagic.egg-info → ypricemagic-4.6.22.dev0}/PKG-INFO +2 -2
- ypricemagic-4.6.22.dev0/pyproject.toml +14 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/requirements.txt +2 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/setup.py +3 -4
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/brownie.py +65 -28
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/common.py +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/monkey_patches.py +2 -2
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/uniswap/v3.py +9 -11
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/curve.py +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/synthetix.py +9 -11
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/cache.py +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/events.py +2 -3
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/logging.py +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/multicall.py +1 -1
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0/ypricemagic.egg-info}/PKG-INFO +2 -2
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic.egg-info/requires.txt +2 -0
- ypricemagic-4.6.22.dev0/ypricemagic.egg-info/top_level.txt +3 -0
- ypricemagic-4.6.20.dev0/pyproject.toml +0 -5
- ypricemagic-4.6.20.dev0/ypricemagic.egg-info/top_level.txt +0 -3
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.env.sample +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/black.yaml +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/codeql-analysis.yml +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/compile.yaml +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.github/workflows/deploy-docs.yml +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/.gitignore +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/CONTRIBUTING.md +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/FUNDING.json +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/LICENSE.txt +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/Makefile +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/README.md +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/brownie-config.yaml +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/Makefile +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/alabaster.css +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/basic.css +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/custom.css +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/doctools.js +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/documentation_options.js +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/file.png +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/language_data.js +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/minus.png +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/plus.png +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/pygments.css +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/searchtools.js +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/sphinx_highlight.js +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/caching.rst +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/cli.rst +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/conf.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/environment.rst +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/index.rst +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/make.bat +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/requirements-dev.txt +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/scripts/debug-curve.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/scripts/debug-price.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/setup.cfg +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/classes/test_erc20.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/classes/test_singleton.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/conftest.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/fixtures.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/dex/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/dex/test_balancer.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/dex/test_uniswap.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/dex/test_velodrome.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/lending/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/lending/test_aave.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/lending/test_compound.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/stable_swap/test_curve.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/test_chainlink.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/test_gearbox.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/test_magic.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/test_popsicle.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/test_synthetix.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/test_yearn.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/tokenized_fund/test_piedao.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/prices/utils/test_buckets.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/tests/test_constants.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/ENVIRONMENT_VARIABLES.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/config.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/decorators.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/entities.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/exceptions.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/log.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/structs.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/_ep.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/bulk.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/contract.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/logs.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/price.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/stringify.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/token.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/traces.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_db/utils/utils.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/_decorators.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/classes/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/classes/_abc.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/classes/common.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/classes/singleton.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/cli.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/constants.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/contracts.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/convert.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/datatypes.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/exceptions.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/ERC20.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/balancer/WeightedPool.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/balancer/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/compound/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/compound/unitroller.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/curve/CurveRegistry.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/curve/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/multicall2.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/uniswap/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/uniswap/factoryv2.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/uniswap/quoterv3.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/interfaces/uniswap/velov2.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/networks.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/band.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/chainlink.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/convex.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/balancer/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/balancer/_abc.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/balancer/balancer.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/balancer/v1.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/balancer/v2.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/genericamm.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/mooniswap.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/solidly.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/uniswap/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/uniswap/uniswap.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/uniswap/v1.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/uniswap/v2.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/uniswap/v2_forks.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/dex/velodrome.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/eth_derivs/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/eth_derivs/creth.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/eth_derivs/wsteth.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/gearbox.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/lending/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/lending/aave.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/lending/compound.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/lending/ib.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/magic.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/one_to_one.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/pendle.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/popsicle.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/rkp3r.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/solidex.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/belt.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/ellipsis.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/froyo.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/mstablefeederpool.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/stable_swap/saddle.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/tokenized_fund/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/tokenized_fund/basketdao.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/tokenized_fund/gelato.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/tokenized_fund/piedao.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/tokenized_fund/reserve.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/tokenized_fund/tokensets.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/utils/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/utils/buckets.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/utils/debug.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/utils/sense_check.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/utils/ypriceapi.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/prices/yearn.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/py.typed +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/time.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/_erc20.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/checks.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/client.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/dank_mids.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/fakes.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/gather.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/middleware.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/y/utils/raw_calls.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic/__init__.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic/magic.py +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic.egg-info/SOURCES.txt +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic.egg-info/dependency_links.txt +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic.egg-info/entry_points.txt +0 -0
- {ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/ypricemagic.egg-info/not-zip-safe +0 -0
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
fail-fast: false
|
|
21
21
|
matrix:
|
|
22
22
|
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
|
23
|
-
pyversion: [ "3.
|
|
23
|
+
pyversion: [ "3.10", "3.11", "3.12" ]
|
|
24
24
|
network: [ mainnet, bsc-main, polygon-main, ftm-main, arbitrum-main, optimism-main ]
|
|
25
25
|
include:
|
|
26
26
|
- os: ubuntu-latest
|
|
@@ -41,15 +41,6 @@ jobs:
|
|
|
41
41
|
cibw_archs_linux: x86_64
|
|
42
42
|
artifact_name: "wheels-ubuntu-latest-musllinux-x64"
|
|
43
43
|
|
|
44
|
-
# ----------------------------------------------------
|
|
45
|
-
# musllinux 32-bit
|
|
46
|
-
# ----------------------------------------------------
|
|
47
|
-
- os: ubuntu-latest
|
|
48
|
-
build_type: musllinux-x86
|
|
49
|
-
cibw_build: "*musllinux*"
|
|
50
|
-
cibw_archs_linux: i686
|
|
51
|
-
artifact_name: "wheels-ubuntu-latest-musllinux-x86"
|
|
52
|
-
|
|
53
44
|
# ----------------------------------------------------
|
|
54
45
|
# macOS (64-bit only)
|
|
55
46
|
# ----------------------------------------------------
|
|
@@ -129,7 +120,7 @@ jobs:
|
|
|
129
120
|
- name: Install dependencies
|
|
130
121
|
run: |
|
|
131
122
|
python -m pip install --upgrade pip
|
|
132
|
-
pip install setuptools wheel twine mypy[mypyc]
|
|
123
|
+
pip install setuptools wheel twine mypy[mypyc] types-cachetools types-python-dateutil types-requests
|
|
133
124
|
|
|
134
125
|
- name: Build sdist
|
|
135
126
|
run: |
|
|
@@ -156,12 +147,6 @@ jobs:
|
|
|
156
147
|
name: "wheels-ubuntu-latest-musllinux-x64"
|
|
157
148
|
path: wheelhouse/linux-musl-x64
|
|
158
149
|
|
|
159
|
-
- name: Download musllinux 32-bit wheels
|
|
160
|
-
uses: actions/download-artifact@v4
|
|
161
|
-
with:
|
|
162
|
-
name: "wheels-ubuntu-latest-musllinux-x86"
|
|
163
|
-
path: wheelhouse/linux-musl-x86
|
|
164
|
-
|
|
165
150
|
- name: Download macOS wheels
|
|
166
151
|
uses: actions/download-artifact@v4
|
|
167
152
|
with:
|
|
@@ -193,7 +178,6 @@ jobs:
|
|
|
193
178
|
wheelhouse/linux-many-x64/*.whl \
|
|
194
179
|
wheelhouse/linux-many-x86/*.whl \
|
|
195
180
|
wheelhouse/linux-musl-x64/*.whl \
|
|
196
|
-
wheelhouse/linux-musl-x86/*.whl \
|
|
197
181
|
wheelhouse/macos/*.whl \
|
|
198
182
|
wheelhouse/windows-x64/*.whl \
|
|
199
183
|
wheelhouse/windows-x86/*.whl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ypricemagic
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.22.dev0
|
|
4
4
|
Summary: Use this tool to extract historical on-chain price data from an archive node. Shoutout to @bantg and @nymmrx for their awesome work on yearn-exporter that made this library possible.
|
|
5
5
|
Home-page: https://github.com/BobTheBuidler/ypricemagic
|
|
6
6
|
Author: BobTheBuidler
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
15
15
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
16
|
Classifier: Operating System :: OS Independent
|
|
17
17
|
Classifier: Topic :: Software Development :: Libraries
|
|
18
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.10,<3.13
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
21
|
|
|
@@ -4,9 +4,11 @@ cchecksum>=0.0.3
|
|
|
4
4
|
checksum_dict>=2.1.10.dev0,<3
|
|
5
5
|
dank_mids>=4.20.161
|
|
6
6
|
eth-brownie>=1.21.0,<1.23
|
|
7
|
+
eth-event>=1.4.0
|
|
7
8
|
eth_retry>=0.2.1
|
|
8
9
|
evmspec>=0.3.4
|
|
9
10
|
ez-a-sync>=0.32.18,<1
|
|
11
|
+
faster-eth-abi>=5.2.1,<6
|
|
10
12
|
faster-eth-utils
|
|
11
13
|
inflection>=0.1,<0.6
|
|
12
14
|
joblib>=1.0.1
|
|
@@ -12,9 +12,10 @@ try:
|
|
|
12
12
|
|
|
13
13
|
ext_modules = mypycify(
|
|
14
14
|
[
|
|
15
|
+
"y/_db/brownie.py",
|
|
16
|
+
"y/_db/config.py",
|
|
15
17
|
"y/_db/decorators.py",
|
|
16
18
|
"y/_db/utils/stringify.py",
|
|
17
|
-
"y/_db/config.py",
|
|
18
19
|
"y/ENVIRONMENT_VARIABLES.py",
|
|
19
20
|
"y/convert.py",
|
|
20
21
|
"y/exceptions.py",
|
|
@@ -24,8 +25,6 @@ try:
|
|
|
24
25
|
"--pretty",
|
|
25
26
|
"--install-types",
|
|
26
27
|
"--disable-error-code=import-not-found",
|
|
27
|
-
"--disable-error-code=import-untyped",
|
|
28
|
-
"--disable-error-code=no-any-return",
|
|
29
28
|
"--disable-error-code=misc",
|
|
30
29
|
"--disable-error-code=attr-defined",
|
|
31
30
|
"--disable-error-code=return-value",
|
|
@@ -70,7 +69,7 @@ setup(
|
|
|
70
69
|
author_email="bobthebuidlerdefi@gmail.com",
|
|
71
70
|
url="https://github.com/BobTheBuidler/ypricemagic",
|
|
72
71
|
license="MIT",
|
|
73
|
-
python_requires=">=3.
|
|
72
|
+
python_requires=">=3.10,<3.13",
|
|
74
73
|
classifiers=[
|
|
75
74
|
"Intended Audience :: Developers",
|
|
76
75
|
"Programming Language :: Python :: 3",
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
+
import hashlib
|
|
2
|
+
import json
|
|
1
3
|
from asyncio import Lock
|
|
2
|
-
from hashlib import sha1
|
|
3
|
-
from json import dumps, loads
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Any, Container, Dict, Literal, Optional, Tuple
|
|
5
|
+
from typing import Any, Callable, Container, Dict, Final, Literal, Optional, Tuple, final
|
|
6
6
|
|
|
7
7
|
import aiosqlite
|
|
8
8
|
from a_sync import SmartProcessingQueue
|
|
9
|
-
from a_sync.async_property.cached import async_cached_property
|
|
10
9
|
from brownie._config import CONFIG, _get_data_folder
|
|
11
10
|
from brownie.exceptions import BrownieEnvironmentError
|
|
12
11
|
from brownie.network.contract import _resolve_address
|
|
13
12
|
from brownie.project.build import DEPLOYMENT_KEYS
|
|
14
|
-
from eth_utils.toolz import keymap
|
|
15
13
|
from functools import lru_cache
|
|
16
14
|
from sqlite3 import InterfaceError, OperationalError
|
|
17
15
|
|
|
@@ -37,13 +35,31 @@ SourceKey = Literal[
|
|
|
37
35
|
"type",
|
|
38
36
|
]
|
|
39
37
|
|
|
38
|
+
# TODO: replace these with the typed dicts in brownie >=1.22
|
|
40
39
|
BuildJson = Dict[str, Any]
|
|
41
40
|
Sources = Dict[SourceKey, Any]
|
|
42
41
|
|
|
43
42
|
|
|
44
|
-
SOURCE_KEYS:
|
|
43
|
+
SOURCE_KEYS: Final = (
|
|
44
|
+
"address",
|
|
45
|
+
"alias",
|
|
46
|
+
"paths",
|
|
47
|
+
"abi",
|
|
48
|
+
"ast",
|
|
49
|
+
"bytecode",
|
|
50
|
+
"compiler",
|
|
51
|
+
"contractName",
|
|
52
|
+
"deployedBytecode",
|
|
53
|
+
"deployedSourceMap",
|
|
54
|
+
"language",
|
|
55
|
+
"natspec",
|
|
56
|
+
"opcodes",
|
|
57
|
+
"pcMap",
|
|
58
|
+
"sourceMap",
|
|
59
|
+
"type",
|
|
60
|
+
)
|
|
45
61
|
|
|
46
|
-
DISCARD_SOURCE_KEYS:
|
|
62
|
+
DISCARD_SOURCE_KEYS: Final = (
|
|
47
63
|
"ast",
|
|
48
64
|
"bytecode",
|
|
49
65
|
"coverageMap",
|
|
@@ -60,22 +76,39 @@ These keys will not be included in y.Contract object build data. If you need the
|
|
|
60
76
|
"""
|
|
61
77
|
|
|
62
78
|
|
|
63
|
-
|
|
79
|
+
# C constants
|
|
80
|
+
|
|
81
|
+
sha1: Final = hashlib.sha1
|
|
82
|
+
|
|
83
|
+
dumps: Final = json.dumps
|
|
84
|
+
loads: Final = json.loads
|
|
85
|
+
|
|
86
|
+
sqlite_lock: Final = Lock()
|
|
64
87
|
|
|
65
88
|
|
|
89
|
+
@final
|
|
66
90
|
class AsyncCursor:
|
|
67
|
-
def __init__(self, filename):
|
|
68
|
-
self._filename = filename
|
|
91
|
+
def __init__(self, filename: Path) -> None:
|
|
92
|
+
self._filename: Final = filename
|
|
93
|
+
self._db: Optional[aiosqlite.Connection] = None
|
|
94
|
+
self._connected: bool = False
|
|
95
|
+
self._execute: Optional[Callable[..., aiosqlite.Cursor]] = None
|
|
69
96
|
|
|
70
|
-
|
|
71
|
-
async def connect(self):
|
|
97
|
+
async def connect(self) -> None:
|
|
72
98
|
"""Establish an async connection to the SQLite database"""
|
|
99
|
+
db = self._db # must assign before checking to avoid a TypeError below
|
|
100
|
+
if db is not None:
|
|
101
|
+
raise RuntimeError("already connected")
|
|
73
102
|
async with sqlite_lock:
|
|
103
|
+
if self._db is not None:
|
|
104
|
+
return
|
|
74
105
|
self._db = await aiosqlite.connect(self._filename, isolation_level=None)
|
|
106
|
+
self._execute = self._db.execute
|
|
75
107
|
|
|
76
|
-
async def insert(self, table, *values):
|
|
108
|
+
async def insert(self, table: str, *values: Any) -> None:
|
|
77
109
|
raise NotImplementedError
|
|
78
|
-
|
|
110
|
+
if self._db is None:
|
|
111
|
+
await self.connect()
|
|
79
112
|
|
|
80
113
|
# Convert any dictionaries/lists to JSON strings before inserting
|
|
81
114
|
values = [dumps(val) if isinstance(val, (dict, list)) else val for val in values]
|
|
@@ -85,20 +118,23 @@ class AsyncCursor:
|
|
|
85
118
|
query = f"INSERT OR REPLACE INTO {table} VALUES ({placeholders})"
|
|
86
119
|
|
|
87
120
|
# Execute the query and commit the changes
|
|
88
|
-
async with self.
|
|
121
|
+
async with self._execute(query, values):
|
|
89
122
|
await self._db.commit()
|
|
90
123
|
|
|
91
|
-
async def fetchone(self, cmd: str, *args) -> Optional[Tuple]:
|
|
92
|
-
|
|
124
|
+
async def fetchone(self, cmd: str, *args: Any) -> Optional[Tuple[Any, ...]]:
|
|
125
|
+
if self._db is None:
|
|
126
|
+
await self.connect()
|
|
93
127
|
async with sqlite_lock:
|
|
94
|
-
async with self.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return
|
|
128
|
+
async with self._execute(cmd, args) as cursor:
|
|
129
|
+
row = await cursor.fetchone()
|
|
130
|
+
if row is None:
|
|
131
|
+
return None
|
|
132
|
+
# Convert any JSON-serialized columns back to their original data structures
|
|
133
|
+
return tuple(loads(i) if str(i).startswith(("[", "{")) else i for i in row)
|
|
98
134
|
|
|
99
135
|
|
|
100
|
-
cur = AsyncCursor(_get_data_folder().joinpath("deployments.db"))
|
|
101
|
-
fetchone = SmartProcessingQueue(cur.fetchone, num_workers=32)
|
|
136
|
+
cur: Final = AsyncCursor(_get_data_folder().joinpath("deployments.db"))
|
|
137
|
+
fetchone: Final = SmartProcessingQueue(cur.fetchone, num_workers=32)
|
|
102
138
|
|
|
103
139
|
|
|
104
140
|
@lru_cache(maxsize=None)
|
|
@@ -110,8 +146,8 @@ def _get_select_statement() -> str:
|
|
|
110
146
|
|
|
111
147
|
|
|
112
148
|
async def _get_deployment(
|
|
113
|
-
address: str = None,
|
|
114
|
-
alias: str = None,
|
|
149
|
+
address: Optional[str] = None,
|
|
150
|
+
alias: Optional[str] = None,
|
|
115
151
|
skip_source_keys: Container[SourceKey] = DISCARD_SOURCE_KEYS,
|
|
116
152
|
) -> Tuple[Optional[BuildJson], Optional[Sources]]:
|
|
117
153
|
if address and alias:
|
|
@@ -130,7 +166,7 @@ async def _get_deployment(
|
|
|
130
166
|
return None, None
|
|
131
167
|
|
|
132
168
|
build_json = dict(zip(SOURCE_KEYS, row))
|
|
133
|
-
path_map = build_json.pop("paths")
|
|
169
|
+
path_map: dict = build_json.pop("paths")
|
|
134
170
|
|
|
135
171
|
sources = {
|
|
136
172
|
source_key: await __fetch_source_for_hash(val)
|
|
@@ -139,8 +175,9 @@ async def _get_deployment(
|
|
|
139
175
|
}
|
|
140
176
|
|
|
141
177
|
build_json["allSourcePaths"] = {k: v[1] for k, v in path_map.items()}
|
|
142
|
-
|
|
143
|
-
|
|
178
|
+
pc_map: Optional[dict] = build_json.get("pcMap")
|
|
179
|
+
if pc_map is not None:
|
|
180
|
+
build_json["pcMap"] = {int(key): pc_map[key] for key in pc_map}
|
|
144
181
|
|
|
145
182
|
return build_json, sources
|
|
146
183
|
|
|
@@ -30,7 +30,7 @@ from a_sync import (
|
|
|
30
30
|
CounterLock,
|
|
31
31
|
PruningThreadPoolExecutor,
|
|
32
32
|
)
|
|
33
|
-
from async_property import async_property
|
|
33
|
+
from async_property import async_property # type: ignore [import-untyped]
|
|
34
34
|
from brownie import ZERO_ADDRESS
|
|
35
35
|
from dank_mids import BlockSemaphore
|
|
36
36
|
from evmspec.data import Address, HexBytes32
|
|
@@ -63,7 +63,7 @@ def monkey_patch_checksum_cache():
|
|
|
63
63
|
pass
|
|
64
64
|
|
|
65
65
|
try:
|
|
66
|
-
import ens.ens
|
|
66
|
+
import ens.ens # type: ignore [import-untyped]
|
|
67
67
|
|
|
68
68
|
ens.ens.to_checksum_address = y.convert.to_address
|
|
69
69
|
except ModuleNotFoundError:
|
|
@@ -71,7 +71,7 @@ def monkey_patch_checksum_cache():
|
|
|
71
71
|
pass
|
|
72
72
|
|
|
73
73
|
try:
|
|
74
|
-
import ens.async_ens
|
|
74
|
+
import ens.async_ens # type: ignore [import-untyped]
|
|
75
75
|
|
|
76
76
|
ens.async_ens.to_checksum_address = y.convert.to_address
|
|
77
77
|
except ModuleNotFoundError:
|
|
@@ -8,6 +8,7 @@ from typing import (
|
|
|
8
8
|
AsyncIterator,
|
|
9
9
|
DefaultDict,
|
|
10
10
|
Dict,
|
|
11
|
+
Final,
|
|
11
12
|
Iterable,
|
|
12
13
|
List,
|
|
13
14
|
Literal,
|
|
@@ -22,6 +23,7 @@ from a_sync import igather
|
|
|
22
23
|
from a_sync.a_sync import HiddenMethodDescriptor
|
|
23
24
|
from brownie.network.event import _EventItem
|
|
24
25
|
from eth_typing import ChecksumAddress, HexAddress
|
|
26
|
+
from faster_eth_abi.packed import encode_packed
|
|
25
27
|
from typing_extensions import Self
|
|
26
28
|
|
|
27
29
|
from y import convert
|
|
@@ -41,21 +43,17 @@ from y.interfaces.uniswap.quoterv3 import UNIV3_QUOTER_ABI
|
|
|
41
43
|
from y.networks import Network
|
|
42
44
|
from y.utils.events import ProcessedEvents
|
|
43
45
|
|
|
44
|
-
try:
|
|
45
|
-
from eth_abi.packed import encode_packed
|
|
46
|
-
except ImportError:
|
|
47
|
-
from eth_abi.packed import encode_abi_packed as encode_packed
|
|
48
46
|
|
|
49
47
|
# https://github.com/Uniswap/uniswap-v3-periphery/blob/main/deploys.md
|
|
50
|
-
UNISWAP_V3_FACTORY = "0x1F98431c8aD98523631AE4a59f267346ea31F984"
|
|
51
|
-
UNISWAP_V3_QUOTER = "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6"
|
|
48
|
+
UNISWAP_V3_FACTORY: Final = "0x1F98431c8aD98523631AE4a59f267346ea31F984"
|
|
49
|
+
UNISWAP_V3_QUOTER: Final = "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6"
|
|
52
50
|
|
|
53
|
-
logger = getLogger(__name__)
|
|
51
|
+
logger: Final = getLogger(__name__)
|
|
54
52
|
|
|
55
53
|
Path = Iterable[Union[Address, int]]
|
|
56
54
|
|
|
57
55
|
# same addresses on all networks
|
|
58
|
-
addresses = {
|
|
56
|
+
addresses: Final = {
|
|
59
57
|
Network.Mainnet: {
|
|
60
58
|
"factory": UNISWAP_V3_FACTORY,
|
|
61
59
|
"quoter": UNISWAP_V3_QUOTER,
|
|
@@ -78,7 +76,7 @@ addresses = {
|
|
|
78
76
|
},
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
forked_deployments = {
|
|
79
|
+
forked_deployments: Final = {
|
|
82
80
|
Network.Optimism: [
|
|
83
81
|
{
|
|
84
82
|
# Velodrome slipstream
|
|
@@ -97,9 +95,9 @@ forked_deployments = {
|
|
|
97
95
|
],
|
|
98
96
|
}
|
|
99
97
|
|
|
100
|
-
_FEE_DENOMINATOR = Decimal(1_000_000)
|
|
98
|
+
_FEE_DENOMINATOR: Final = Decimal(1_000_000)
|
|
101
99
|
|
|
102
|
-
_PATH_TYPE_STRINGS: Dict[int, Tuple[Literal["address", "uint24"], ...]] = {
|
|
100
|
+
_PATH_TYPE_STRINGS: Final[Dict[int, Tuple[Literal["address", "uint24"], ...]]] = {
|
|
103
101
|
3: tuple(islice(cycle(("address", "uint24")), 3)),
|
|
104
102
|
5: tuple(islice(cycle(("address", "uint24")), 5)),
|
|
105
103
|
}
|
|
@@ -14,7 +14,7 @@ from brownie import ZERO_ADDRESS
|
|
|
14
14
|
from brownie.convert.datatypes import EthAddress
|
|
15
15
|
from brownie.exceptions import ContractNotFound, EventLookupError
|
|
16
16
|
from brownie.network.event import _EventItem
|
|
17
|
-
from
|
|
17
|
+
from faster_eth_abi.exceptions import InvalidPointer
|
|
18
18
|
from typing_extensions import Self
|
|
19
19
|
from web3.exceptions import ContractLogicError
|
|
20
20
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Callable, List, Optional
|
|
2
|
+
from typing import Callable, Final, List, Optional, final
|
|
3
3
|
|
|
4
4
|
import a_sync
|
|
5
5
|
from a_sync import cgather
|
|
6
6
|
from a_sync.a_sync import HiddenMethodDescriptor
|
|
7
7
|
from eth_typing import ChecksumAddress, HexStr
|
|
8
|
+
from faster_eth_abi import encode
|
|
8
9
|
from multicall import Call
|
|
9
10
|
from typing_extensions import Self
|
|
10
11
|
|
|
@@ -16,23 +17,20 @@ from y.exceptions import UnsupportedNetwork, call_reverted
|
|
|
16
17
|
from y.networks import Network
|
|
17
18
|
from y.utils import a_sync_ttl_cache
|
|
18
19
|
|
|
19
|
-
try:
|
|
20
|
-
from eth_abi import encode
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
except ImportError:
|
|
24
|
-
from eth_abi import encode_single
|
|
21
|
+
logger: Final = logging.getLogger(__name__)
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
logger = logging.getLogger(__name__)
|
|
29
|
-
|
|
30
|
-
addresses = {
|
|
23
|
+
addresses: Final = {
|
|
31
24
|
Network.Mainnet: "0x823bE81bbF96BEc0e25CA13170F5AaCb5B79ba83",
|
|
32
25
|
Network.Optimism: "0x95A6a3f44a70172E7d50a9e28c85Dfd712756B8C",
|
|
33
26
|
}
|
|
34
27
|
|
|
35
28
|
|
|
29
|
+
def encode_bytes(s: str) -> bytes:
|
|
30
|
+
return encode(["bytes32"], [s.encode()])
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@final
|
|
36
34
|
class Synthetix(a_sync.ASyncGenericSingleton):
|
|
37
35
|
"""A class to interact with the Synthetix protocol.
|
|
38
36
|
|
|
@@ -9,7 +9,7 @@ import eth_retry
|
|
|
9
9
|
from a_sync._typing import AnyFn, P, T
|
|
10
10
|
from a_sync.a_sync.function import ASyncDecorator
|
|
11
11
|
from brownie import chain
|
|
12
|
-
from joblib import Memory
|
|
12
|
+
from joblib import Memory # type: ignore [import-untyped]
|
|
13
13
|
|
|
14
14
|
from y import ENVIRONMENT_VARIABLES as ENVS
|
|
15
15
|
|
|
@@ -27,7 +27,7 @@ import dank_mids
|
|
|
27
27
|
import eth_retry
|
|
28
28
|
from a_sync import igather
|
|
29
29
|
from a_sync.executor import _AsyncExecutorMixin
|
|
30
|
-
from async_property import async_property
|
|
30
|
+
from async_property import async_property # type: ignore [import-untyped]
|
|
31
31
|
from brownie import web3
|
|
32
32
|
from brownie.network.event import (
|
|
33
33
|
_EventItem,
|
|
@@ -37,10 +37,9 @@ from brownie.network.event import (
|
|
|
37
37
|
EventDict,
|
|
38
38
|
)
|
|
39
39
|
from eth_typing import ChecksumAddress
|
|
40
|
-
from eth_utils.toolz import concat
|
|
40
|
+
from eth_utils.toolz import concat, groupby
|
|
41
41
|
from evmspec import Log
|
|
42
42
|
from msgspec.structs import force_setattr
|
|
43
|
-
from toolz import groupby
|
|
44
43
|
from web3.middleware.filter import block_ranges
|
|
45
44
|
from web3.types import LogReceipt
|
|
46
45
|
|
|
@@ -7,7 +7,7 @@ from weakref import WeakValueDictionary, ref as weak_ref
|
|
|
7
7
|
import a_sync
|
|
8
8
|
from brownie import chain
|
|
9
9
|
from eth_typing import BlockNumber, ChecksumAddress
|
|
10
|
-
from lazy_logging import LazyLoggerFactory
|
|
10
|
+
from lazy_logging import LazyLoggerFactory # type: ignore [import-untyped]
|
|
11
11
|
from typing_extensions import ParamSpec
|
|
12
12
|
|
|
13
13
|
from y.datatypes import AnyAddressType, Block
|
|
@@ -6,7 +6,7 @@ import a_sync
|
|
|
6
6
|
import brownie
|
|
7
7
|
import dank_mids
|
|
8
8
|
from a_sync import igather
|
|
9
|
-
from
|
|
9
|
+
from faster_eth_abi.exceptions import InsufficientDataBytes
|
|
10
10
|
from multicall import Call
|
|
11
11
|
from web3.exceptions import CannotHandleRequest
|
|
12
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ypricemagic
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.22.dev0
|
|
4
4
|
Summary: Use this tool to extract historical on-chain price data from an archive node. Shoutout to @bantg and @nymmrx for their awesome work on yearn-exporter that made this library possible.
|
|
5
5
|
Home-page: https://github.com/BobTheBuidler/ypricemagic
|
|
6
6
|
Author: BobTheBuidler
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
15
15
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
16
|
Classifier: Operating System :: OS Independent
|
|
17
17
|
Classifier: Topic :: Software Development :: Libraries
|
|
18
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.10,<3.13
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
21
|
|
|
@@ -4,9 +4,11 @@ cchecksum>=0.0.3
|
|
|
4
4
|
checksum_dict<3,>=2.1.10.dev0
|
|
5
5
|
dank_mids>=4.20.161
|
|
6
6
|
eth-brownie<1.23,>=1.21.0
|
|
7
|
+
eth-event>=1.4.0
|
|
7
8
|
eth_retry>=0.2.1
|
|
8
9
|
evmspec>=0.3.4
|
|
9
10
|
ez-a-sync<1,>=0.32.18
|
|
11
|
+
faster-eth-abi<6,>=5.2.1
|
|
10
12
|
faster-eth-utils
|
|
11
13
|
inflection<0.6,>=0.1
|
|
12
14
|
joblib>=1.0.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/language_data.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ypricemagic-4.6.20.dev0 → ypricemagic-4.6.22.dev0}/docs/_build/html/_static/sphinx_highlight.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|