diff --git a/CHANGELOG.md b/CHANGELOG.md index 1631bb829..1155c5e95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning]. -## [Unreleased] +## [7.5.8] - 2024-07-04 ### Fixed @@ -1439,7 +1439,8 @@ This release contains no changes except for the version number. [semantic versioning]: https://semver.org/spec/v2.0.0.html -[Unreleased]: https://github.com/dipdup-io/dipdup/compare/7.5.7...HEAD +[Unreleased]: https://github.com/dipdup-io/dipdup/compare/7.5.8...HEAD +[7.5.8]: https://github.com/dipdup-io/dipdup/compare/7.5.7...7.5.8 [7.5.7]: https://github.com/dipdup-io/dipdup/compare/7.5.6...7.5.7 [7.5.6]: https://github.com/dipdup-io/dipdup/compare/7.5.5...7.5.6 [7.5.5]: https://github.com/dipdup-io/dipdup/compare/7.5.4...7.5.5 diff --git a/docs/8.examples/_demos_table.md b/docs/8.examples/_demos_table.md index 506a03a19..2353b108a 100644 --- a/docs/8.examples/_demos_table.md +++ b/docs/8.examples/_demos_table.md @@ -1,21 +1,21 @@ | name | network | description | source | |-|-|-|-| -| demo_blank | | Empty config for a fresh start | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_blank) | -| demo_evm_events | EVM | ERC-20 token transfers (from event logs) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_evm_events) | -| demo_evm_transactions | EVM | ERC-20 token transfers (from transactions) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_evm_transactions) | -| demo_uniswap | EVM | Uniswap V3 pools, positions, etc. (advanced, uses TimescaleDB) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_uniswap) | -| demo_auction | Tezos | NFT marketplace (TzColors) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_auction) | -| demo_big_maps | Tezos | Indexing specific big maps | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_big_maps) | -| demo_dao | Tezos | DAO registry (Homebase DAO) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_dao) | -| demo_dex | Tezos | DEX balances and liquidity (Quipuswap) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_dex) | -| demo_domains | Tezos | Domain name service (Tezos Domains) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_domains) | -| demo_etherlink | Tezos | Etherlink smart rollup transactions | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_etherlink) | -| demo_events | Tezos | Processing contract events | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_events) | -| demo_factories | Tezos | Example of spawning indexes in runtime | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_factories) | -| demo_head | Tezos | Processing head block metadata (realtime only) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_head) | -| demo_nft_marketplace | Tezos | NFT marketplace (hic at nunc) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_nft_marketplace) | -| demo_raw | Tezos | Process raw operations without filtering and typed payloads | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_raw) | -| demo_token | Tezos | FA1.2 token contract operations | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_token) | -| demo_token_balances | Tezos | FA1.2 token balances | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_token_balances) | -| demo_token_transfers | Tezos | FA1.2 token transfers | [link](https://github.com/dipdup-io/dipdup/tree/7.5.7/src/demo_token_transfers) | +| demo_blank | | Empty config for a fresh start | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_blank) | +| demo_evm_events | EVM | ERC-20 token transfers (from event logs) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_evm_events) | +| demo_evm_transactions | EVM | ERC-20 token transfers (from transactions) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_evm_transactions) | +| demo_uniswap | EVM | Uniswap V3 pools, positions, etc. (advanced, uses TimescaleDB) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_uniswap) | +| demo_auction | Tezos | NFT marketplace (TzColors) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_auction) | +| demo_big_maps | Tezos | Indexing specific big maps | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_big_maps) | +| demo_dao | Tezos | DAO registry (Homebase DAO) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_dao) | +| demo_dex | Tezos | DEX balances and liquidity (Quipuswap) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_dex) | +| demo_domains | Tezos | Domain name service (Tezos Domains) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_domains) | +| demo_etherlink | Tezos | Etherlink smart rollup transactions | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_etherlink) | +| demo_events | Tezos | Processing contract events | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_events) | +| demo_factories | Tezos | Example of spawning indexes in runtime | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_factories) | +| demo_head | Tezos | Processing head block metadata (realtime only) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_head) | +| demo_nft_marketplace | Tezos | NFT marketplace (hic at nunc) | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_nft_marketplace) | +| demo_raw | Tezos | Process raw operations without filtering and typed payloads | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_raw) | +| demo_token | Tezos | FA1.2 token contract operations | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_token) | +| demo_token_balances | Tezos | FA1.2 token balances | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_token_balances) | +| demo_token_transfers | Tezos | FA1.2 token transfers | [link](https://github.com/dipdup-io/dipdup/tree/7.5.8/src/demo_token_transfers) | diff --git a/docs/9.release-notes/_7.5_changelog.md b/docs/9.release-notes/_7.5_changelog.md index d8f3244c7..1cbd1f365 100644 --- a/docs/9.release-notes/_7.5_changelog.md +++ b/docs/9.release-notes/_7.5_changelog.md @@ -17,6 +17,7 @@ - config: Fixed issue with `from` filter being ignored. - config: Fixed setting logging levels according to the config. - config: Forbid extra arguments in config mappings. +- deps: Removed `pyarrow` from dependencies, bumped `web3`. - evm.node: Fixed default ratelimit sleep time being too high. - evm.node: Fixed memory leak when using realtime subscriptions. - evm.node: Fixed processing chain reorgs. @@ -25,6 +26,7 @@ - evm.subsquid.events: Fixed matching logs when filtering by topic0. - evm.subsquid.transactions: Fixed issue with `node_only` flag ignored. - performance: Fixed estimation indexing speed in levels per second. +- project: Fixed `make image` target command. - tezos.tzkt.operations: Fixed crash when handler definition contains optional items. - tezos.tzkt.operations: Fixed missing operations when handler pattern contains item without entrypoint. diff --git a/pyproject.toml b/pyproject.toml index 811cab9a1..c76868919 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "dipdup" description = "Modular framework for creating selective indexers and featureful backends for dapps" -version = "7.5.7" +version = "7.5.8" license = { text = "MIT" } authors = [ { name = "Lev Gorodetskii", email = "dipdup@drsr.io" }, diff --git a/src/demo_auction/pyproject.toml b/src/demo_auction/pyproject.toml index 0a62d04eb..36b880428 100644 --- a/src/demo_auction/pyproject.toml +++ b/src/demo_auction/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_auction" version = "0.0.1" diff --git a/src/demo_big_maps/pyproject.toml b/src/demo_big_maps/pyproject.toml index 3c400262d..d673fe59c 100644 --- a/src/demo_big_maps/pyproject.toml +++ b/src/demo_big_maps/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_big_maps" version = "0.0.1" diff --git a/src/demo_blank/pyproject.toml b/src/demo_blank/pyproject.toml index fcaf1db51..61a74a554 100644 --- a/src/demo_blank/pyproject.toml +++ b/src/demo_blank/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_blank" version = "0.0.1" diff --git a/src/demo_dao/pyproject.toml b/src/demo_dao/pyproject.toml index 527ba0342..eea372cee 100644 --- a/src/demo_dao/pyproject.toml +++ b/src/demo_dao/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_dao" version = "0.0.1" diff --git a/src/demo_dex/pyproject.toml b/src/demo_dex/pyproject.toml index c6a542345..fd0223e2e 100644 --- a/src/demo_dex/pyproject.toml +++ b/src/demo_dex/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_dex" version = "0.0.1" diff --git a/src/demo_domains/pyproject.toml b/src/demo_domains/pyproject.toml index c3ab336a1..be79002d9 100644 --- a/src/demo_domains/pyproject.toml +++ b/src/demo_domains/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_domains" version = "0.0.1" diff --git a/src/demo_events/pyproject.toml b/src/demo_events/pyproject.toml index 330bde31f..d25c9176c 100644 --- a/src/demo_events/pyproject.toml +++ b/src/demo_events/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_events" version = "0.0.1" diff --git a/src/demo_evm_events/pyproject.toml b/src/demo_evm_events/pyproject.toml index d65ebf0ae..489f4bd2e 100644 --- a/src/demo_evm_events/pyproject.toml +++ b/src/demo_evm_events/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_evm_events" version = "0.0.1" diff --git a/src/demo_evm_transactions/pyproject.toml b/src/demo_evm_transactions/pyproject.toml index a76c55b12..af317fd7f 100644 --- a/src/demo_evm_transactions/pyproject.toml +++ b/src/demo_evm_transactions/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_evm_transactions" version = "0.0.1" diff --git a/src/demo_factories/pyproject.toml b/src/demo_factories/pyproject.toml index 441f00819..c697c9d27 100644 --- a/src/demo_factories/pyproject.toml +++ b/src/demo_factories/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_factories" version = "0.0.1" diff --git a/src/demo_head/pyproject.toml b/src/demo_head/pyproject.toml index cc554e0e3..d7d17038d 100644 --- a/src/demo_head/pyproject.toml +++ b/src/demo_head/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_head" version = "0.0.1" diff --git a/src/demo_nft_marketplace/pyproject.toml b/src/demo_nft_marketplace/pyproject.toml index 5d82528bd..ff8afef55 100644 --- a/src/demo_nft_marketplace/pyproject.toml +++ b/src/demo_nft_marketplace/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_nft_marketplace" version = "0.0.1" diff --git a/src/demo_raw/pyproject.toml b/src/demo_raw/pyproject.toml index 4bd656e1d..e914f712f 100644 --- a/src/demo_raw/pyproject.toml +++ b/src/demo_raw/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_raw" version = "0.0.1" diff --git a/src/demo_token/pyproject.toml b/src/demo_token/pyproject.toml index 6e5cb8e0c..1349bcac5 100644 --- a/src/demo_token/pyproject.toml +++ b/src/demo_token/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_token" version = "0.0.1" diff --git a/src/demo_token_balances/pyproject.toml b/src/demo_token_balances/pyproject.toml index 80bc85a82..f9d6218c8 100644 --- a/src/demo_token_balances/pyproject.toml +++ b/src/demo_token_balances/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_token_balances" version = "0.0.1" diff --git a/src/demo_token_transfers/pyproject.toml b/src/demo_token_transfers/pyproject.toml index 9427ac76e..c1d73fc3b 100644 --- a/src/demo_token_transfers/pyproject.toml +++ b/src/demo_token_transfers/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_token_transfers" version = "0.0.1" diff --git a/src/demo_uniswap/pyproject.toml b/src/demo_uniswap/pyproject.toml index db6ff8bbf..c14d64eaf 100644 --- a/src/demo_uniswap/pyproject.toml +++ b/src/demo_uniswap/pyproject.toml @@ -1,4 +1,4 @@ -# Generated by DipDup 7.5.7 +# Generated by DipDup 7.5.8 [project] name = "demo_uniswap" version = "0.0.1" diff --git a/src/dipdup/install.py b/src/dipdup/install.py index d55976c21..3acb4757e 100755 --- a/src/dipdup/install.py +++ b/src/dipdup/install.py @@ -34,19 +34,26 @@ 'PYTHONPATH', ) -WELCOME_ASCII = """\0 +# NOTE: '\0' is to avoid truncating newlines by asyncclick +WELCOME_ASCII = ( + '\0' + + r""" ____ _ ____ / __ \ (_)____ / __ \ __ __ ____ - / / / // // __ \ / / / // / / // __ \\ + / / / // // __ \ / / / // / / // __ \ / /_/ // // /_/ // /_/ // /_/ // /_/ / /_____//_// .___//_____/ \__,_// .___/ /_/ /_/ """ -EPILOG = """\0 +) +EPILOG = ( + '\0' + + """ Documentation: https://dipdup.io/docs GitHub: https://github.com/dipdup-io/dipdup Discord: https://discord.gg/aG8XKuwsQd """ +) class Colors: @@ -136,6 +143,7 @@ def run_cmd(self, cmd: str, *args: Any, **kwargs: Any) -> subprocess.CompletedPr if (found_cmd := self._commands.get(cmd)) is None: fail(f'Command not found: {cmd}') args = (found_cmd, *tuple(a for a in args if a)) + print(Colors.YELLOW, f'$ {" ".join(args)}', Colors.ENDC) try: return subprocess.run( args, @@ -170,6 +178,7 @@ def install( version: str | None, ref: str | None, path: str | None, + pre: bool = False, with_pdm: bool = False, with_poetry: bool = False, ) -> None: @@ -182,7 +191,12 @@ def install( if not quiet: env.print() - force_str = '--force' if force else '' + pipx_args = [] + if force: + pipx_args.append('--force') + if pre: + pipx_args.append('--pip-args="--pre"') + pipx_packages = env._pipx_packages python_inter_pipx = cast(str, which('python3.11')) @@ -199,18 +213,18 @@ def install( if 'dipdup' in pipx_packages and not force: echo('Updating DipDup') - env.run_cmd('pipx', 'upgrade', 'dipdup', force_str) + env.run_cmd('pipx', 'upgrade', 'dipdup', *pipx_args) elif path: echo(f'Installing DipDup from `{path}`') - env.run_cmd('pipx', 'install', '--python', python_inter_pipx, path, force_str) + env.run_cmd('pipx', 'install', '--python', python_inter_pipx, path, *pipx_args) elif ref: url = f'git+{GITHUB}@{ref}' echo(f'Installing DipDup from `{url}`') - env.run_cmd('pipx', 'install', '--python', python_inter_pipx, url, force_str) + env.run_cmd('pipx', 'install', '--python', python_inter_pipx, url, *pipx_args) else: echo('Installing DipDup from PyPI') pkg = 'dipdup' if not version else f'dipdup=={version}' - env.run_cmd('pipx', 'install', '--python', python_inter_pipx, pkg, force_str) + env.run_cmd('pipx', 'install', '--python', python_inter_pipx, pkg, *pipx_args) for pm, with_pm in ( ('pdm', with_pdm), @@ -218,10 +232,10 @@ def install( ): if pm in pipx_packages: echo(f'Updating `{pm}`') - env.run_cmd('pipx', 'upgrade', pm, force_str) + env.run_cmd('pipx', 'upgrade', pm, *pipx_args) elif with_pm or force or quiet or ask(f'Install `{pm}`?', False): echo(f'Installing `{pm}`') - env.run_cmd('pipx', 'install', '--python', python_inter_pipx, pm, force_str) + env.run_cmd('pipx', 'install', '--python', python_inter_pipx, pm, *pipx_args) env._commands[pm] = which(pm) done( @@ -267,6 +281,7 @@ def cli() -> None: parser.add_argument('-r', '--ref', help='Install DipDup from a specific git ref') parser.add_argument('-p', '--path', help='Install DipDup from a local path') parser.add_argument('-u', '--uninstall', action='store_true', help='Uninstall DipDup') + parser.add_argument('--pre', action='store_true', help='Include pre-release versions') parser.add_argument('--with-pdm', action='store_true', help='Install PDM') parser.add_argument('--with-poetry', action='store_true', help='Install Poetry') args = parser.parse_args() @@ -283,6 +298,7 @@ def cli() -> None: version=args.version.strip() if args.version else None, ref=args.ref.strip() if args.ref else None, path=args.path.strip() if args.path else None, + pre=args.pre, with_pdm=args.with_pdm, with_poetry=args.with_poetry, )