Skip to content

Commit c514b70

Browse files
Replace attrs with pydantic, use "kind" literal (#3)
* Pydantic WIP * Replace attrs with pydantic, use "kind" literal
1 parent 5a0af94 commit c514b70

File tree

15 files changed

+176
-332
lines changed

15 files changed

+176
-332
lines changed

README.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,29 @@ contracts:
3939

4040
datasources:
4141
tzkt_mainnet:
42-
tzkt:
43-
network: mainnet
44-
url: https://api.tzkt.io
42+
kind: tzkt
43+
network: mainnet
44+
url: https://staging.api.tzkt.io
4545

4646
indexes:
4747
operations_mainnet:
48-
operation:
49-
datasource: tzkt_mainnet
50-
contract: HEN_objkts
51-
first_block: 0
52-
handlers:
53-
54-
- callback: on_mint
55-
pattern:
56-
- destination: HEN_objkts
57-
entrypoint: mint_OBJKT
58-
- destination: HEN_minter
59-
entrypoint: mint
60-
61-
- callback: on_transfer
62-
pattern:
63-
- destination: HEN_minter
64-
entrypoint: transfer
48+
kind: operation
49+
datasource: tzkt_mainnet
50+
contract: HEN_objkts
51+
first_block: 0
52+
handlers:
53+
54+
- callback: on_mint
55+
pattern:
56+
- destination: HEN_objkts
57+
entrypoint: mint_OBJKT
58+
- destination: HEN_minter
59+
entrypoint: mint
60+
61+
- callback: on_transfer
62+
pattern:
63+
- destination: HEN_minter
64+
entrypoint: transfer
6565
```
6666
6767
### Initialize project structure

mypy.ini

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[mypy]
22
python_version = 3.8
3+
plugins = pydantic.mypy
34

45
[mypy-ruamel]
5-
ignore_missing_imports = True
6+
ignore_missing_imports = True

poetry.lock

Lines changed: 1 addition & 101 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ python = "^3.8"
2525
aiohttp = "^3.7.4"
2626
aiomysql = "^0.0.21"
2727
asyncpg = "^0.22.0"
28-
cattrs-extras = "^0.1.1"
2928
datamodel-code-generator = "^0.10.0"
3029
"ruamel.yaml" = "^0.17.2"
3130
signalrcore = {git = "https://github.com/droserasprout/signalrcore", rev = "async"}
3231
tortoise-orm = "^0.17.1"
3332
websockets = "^8.1"
33+
pydantic = "^1.8.1"
3434

3535
[tool.poetry.dev-dependencies]
3636
black = "^20.8b1"

src/dipdup/cli.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import dipdup.codegen as codegen
1919
from dipdup import __version__
20-
from dipdup.config import DipDupConfig, LoggingConfig, OperationIndexConfig
20+
from dipdup.config import DipDupConfig, LoggingConfig, OperationIndexConfig, TzktDatasourceConfig
2121
from dipdup.datasources.tzkt.datasource import TzktDatasource
2222
from dipdup.models import IndexType, State
2323

@@ -108,10 +108,9 @@ async def run(ctx) -> None:
108108

109109
for index_name, index_config in config.indexes.items():
110110
_logger.info('Processing index `%s`', index_name)
111-
if not index_config.operation:
111+
if not isinstance(index_config, OperationIndexConfig):
112112
raise NotImplementedError('Only operation indexes are supported')
113-
operation_index_config = index_config.operation
114-
datasource_operation_index_configs[operation_index_config.datasource].append(operation_index_config)
113+
datasource_operation_index_configs[index_config.datasource].append(index_config)
115114

116115
for datasource_name, operation_index_configs in datasource_operation_index_configs.items():
117116
if not operation_index_configs:
@@ -122,9 +121,9 @@ async def run(ctx) -> None:
122121
_logger.warning('Using more than one operation index. Be careful, indexing is not atomic.')
123122

124123
datasource_config = config.datasources[datasource_name]
125-
if datasource_config.tzkt:
124+
if isinstance(datasource_config, TzktDatasourceConfig):
126125
datasource = TzktDatasource(
127-
url=datasource_config.tzkt.url,
126+
url=datasource_config.url,
128127
operation_index_configs=operation_index_configs,
129128
)
130129
datasources.append(datasource)

src/dipdup/codegen.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from jinja2 import Template
1212
from tortoise import Model, fields
1313

14-
from dipdup.config import ROLLBACK_HANDLER, DipDupConfig
14+
from dipdup.config import ROLLBACK_HANDLER, DipDupConfig, OperationIndexConfig
1515
from dipdup.datasources.tzkt.datasource import TzktDatasource
1616

1717
_logger = logging.getLogger(__name__)
@@ -43,7 +43,7 @@ async def fetch_schemas(config: DipDupConfig):
4343

4444
_logger.info('Creating datasource')
4545
# FIXME: Hardcode
46-
datasource_config = list(config.datasources.values())[0].tzkt
46+
datasource_config = list(config.datasources.values())[0]
4747
datasource = TzktDatasource(
4848
url=datasource_config.url,
4949
operation_index_configs=[],
@@ -136,9 +136,9 @@ async def generate_handlers(config: DipDupConfig):
136136
file.write(handler_code)
137137

138138
for index in config.indexes.values():
139-
if not index.operation:
139+
if not isinstance(index, OperationIndexConfig):
140140
continue
141-
for handler in index.operation.handlers:
141+
for handler in index.handlers:
142142
_logger.info('Generating handler `%s`', handler.callback)
143143
handler_code = template.render(
144144
package=config.package,

0 commit comments

Comments
 (0)