abstract-block-dumper 0.1.1__tar.gz → 0.1.2__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.
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/CHANGELOG.md +5 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/PKG-INFO +1 -1
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/providers/bittensor_client.py +46 -5
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/backfill_scheduler.py +7 -12
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/scheduler.py +2 -21
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_version.py +2 -2
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.cruft.json +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.github/dependabot.yml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.github/workflows/ci.yml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.github/workflows/publish.yml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.gitignore +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.pre-commit-config.yaml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/.shellcheckrc +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/README.md +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/SECURITY.md +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/docs/3rd_party/cookiecutter-rt-pkg/CHANGELOG.md +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/.dockerignore +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/.gitignore +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/Dockerfile +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/README.md +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/admin.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/apps.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/management/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/management/commands/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/management/commands/create_admin.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/migrations/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/models.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/tasks.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/tests.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/views.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/docker-compose.yml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/asgi.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/celery.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/settings.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/urls.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/wsgi.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/main.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/manage.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/pyproject.toml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/pytest.ini +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/uv.lock +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/noxfile.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/pyproject.toml +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/dal/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/dal/django_dal.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/dal/memory_registry.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/discovery.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/exceptions.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/providers/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/block_processor.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/executor.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/metrics.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_internal/services/utils.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/admin.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/apps.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/management/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/management/commands/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/management/commands/backfill_blocks_v1.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/management/commands/block_tasks_v1.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/migrations/0001_initial.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/migrations/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/models.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/py.typed +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/celery.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/decorators.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/tasks.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/conftest.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/django_fixtures.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/fatories.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/__init__.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_backfill_scheduler.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_block_processor.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_concurrent_processing.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_multi_arguments_tasks.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_registered_celery_tasks.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_scheduler.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_task_registration.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/settings.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/unit/test_celery_integration.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/unit/test_decorator.py +0 -0
- {abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/uv.lock +0 -0
|
@@ -9,6 +9,11 @@ upcoming release can be found in [changelog.d](changelog.d).
|
|
|
9
9
|
|
|
10
10
|
<!-- towncrier release notes start -->
|
|
11
11
|
|
|
12
|
+
## [0.1.2](https://github.com/bactensor/abstract-block-dumper/releases/tag/v0.1.2) - 2026-01-12
|
|
13
|
+
|
|
14
|
+
No significant changes.
|
|
15
|
+
|
|
16
|
+
|
|
12
17
|
## [0.1.1](https://github.com/bactensor/abstract-block-dumper/releases/tag/v0.1.1) - 2025-12-18
|
|
13
18
|
|
|
14
19
|
No significant changes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstract-block-dumper
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Project-URL: Source, https://github.com/bactensor/abstract-block-dumper
|
|
5
5
|
Project-URL: Issue Tracker, https://github.com/bactensor/abstract-block-dumper/issues
|
|
6
6
|
Author-email: Reef Technologies <opensource@reef.pl>
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
1
5
|
import bittensor as bt
|
|
2
6
|
import structlog
|
|
3
7
|
|
|
4
8
|
import abstract_block_dumper._internal.services.utils as abd_utils
|
|
5
9
|
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
import types
|
|
12
|
+
|
|
6
13
|
logger = structlog.get_logger(__name__)
|
|
7
14
|
|
|
8
15
|
|
|
@@ -13,6 +20,10 @@ ARCHIVE_BLOCK_THRESHOLD = 300
|
|
|
13
20
|
class BittensorConnectionClient:
|
|
14
21
|
"""
|
|
15
22
|
Manages connections to regular and archive Bittensor subtensor networks.
|
|
23
|
+
|
|
24
|
+
Supports context manager protocol for safe connection cleanup:
|
|
25
|
+
with BittensorConnectionClient(network="finney") as client:
|
|
26
|
+
block = client.subtensor.get_current_block()
|
|
16
27
|
"""
|
|
17
28
|
|
|
18
29
|
def __init__(self, network: str) -> None:
|
|
@@ -21,6 +32,38 @@ class BittensorConnectionClient:
|
|
|
21
32
|
self._archive_subtensor: bt.Subtensor | None = None
|
|
22
33
|
self._current_block_cache: int | None = None
|
|
23
34
|
|
|
35
|
+
def __enter__(self) -> BittensorConnectionClient:
|
|
36
|
+
"""Context manager entry."""
|
|
37
|
+
return self
|
|
38
|
+
|
|
39
|
+
def __exit__(
|
|
40
|
+
self,
|
|
41
|
+
_exc_type: type[BaseException] | None,
|
|
42
|
+
_exc_val: BaseException | None,
|
|
43
|
+
_exc_tb: types.TracebackType | None,
|
|
44
|
+
) -> None:
|
|
45
|
+
"""Context manager exit - ensures connections are closed."""
|
|
46
|
+
self.close()
|
|
47
|
+
|
|
48
|
+
def close(self) -> None:
|
|
49
|
+
"""Close all subtensor connections to prevent memory leaks."""
|
|
50
|
+
if self._subtensor is not None:
|
|
51
|
+
try:
|
|
52
|
+
self._subtensor.close()
|
|
53
|
+
except Exception:
|
|
54
|
+
logger.warning("Error closing subtensor connection", exc_info=True)
|
|
55
|
+
self._subtensor = None
|
|
56
|
+
|
|
57
|
+
if self._archive_subtensor is not None:
|
|
58
|
+
try:
|
|
59
|
+
self._archive_subtensor.close()
|
|
60
|
+
except Exception:
|
|
61
|
+
logger.warning("Error closing archive subtensor connection", exc_info=True)
|
|
62
|
+
self._archive_subtensor = None
|
|
63
|
+
|
|
64
|
+
self._current_block_cache = None
|
|
65
|
+
logger.debug("Subtensor connections closed")
|
|
66
|
+
|
|
24
67
|
def get_for_block(self, block_number: int) -> bt.Subtensor:
|
|
25
68
|
"""Get the appropriate subtensor client for the given block number."""
|
|
26
69
|
raise NotImplementedError
|
|
@@ -71,8 +114,6 @@ class BittensorConnectionClient:
|
|
|
71
114
|
return self.subtensor
|
|
72
115
|
|
|
73
116
|
def refresh_connections(self) -> None:
|
|
74
|
-
"""
|
|
75
|
-
self.
|
|
76
|
-
|
|
77
|
-
self._current_block_cache = None
|
|
78
|
-
logger.info("Subtensor connections reset")
|
|
117
|
+
"""Close and reset all subtensor connections to force re-establishment."""
|
|
118
|
+
self.close()
|
|
119
|
+
logger.info("Subtensor connections refreshed")
|
|
@@ -36,8 +36,6 @@ logger = structlog.get_logger(__name__)
|
|
|
36
36
|
# Blocks older than this threshold from current head require archive network
|
|
37
37
|
ARCHIVE_BLOCK_THRESHOLD = 300
|
|
38
38
|
|
|
39
|
-
# Progress logging interval
|
|
40
|
-
PROGRESS_LOG_INTERVAL = 100
|
|
41
39
|
ARCHIVE_NETWORK = "archive"
|
|
42
40
|
|
|
43
41
|
# Memory cleanup interval (every N blocks)
|
|
@@ -281,16 +279,13 @@ class BackfillScheduler:
|
|
|
281
279
|
if self._current_head_cache:
|
|
282
280
|
set_block_lag("backfill", self._current_head_cache - block_number)
|
|
283
281
|
|
|
284
|
-
# Log
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
progress_percent=f"{progress_pct:.1f}%",
|
|
292
|
-
current_block=block_number,
|
|
293
|
-
)
|
|
282
|
+
# Log each block being processed
|
|
283
|
+
progress_pct = (processed_count / total_blocks) * 100
|
|
284
|
+
logger.info(
|
|
285
|
+
"Backfilling block",
|
|
286
|
+
block=block_number,
|
|
287
|
+
progress=f"{processed_count}/{total_blocks} ({progress_pct:.1f}%)",
|
|
288
|
+
)
|
|
294
289
|
|
|
295
290
|
# Rate limiting between block submissions
|
|
296
291
|
if block_number < self.to_block and self.rate_limit > 0:
|
|
@@ -2,7 +2,6 @@ import time
|
|
|
2
2
|
from typing import Protocol
|
|
3
3
|
|
|
4
4
|
import structlog
|
|
5
|
-
from django import db
|
|
6
5
|
from django.conf import settings
|
|
7
6
|
|
|
8
7
|
import abstract_block_dumper._internal.dal.django_dal as abd_dal
|
|
@@ -16,9 +15,6 @@ from abstract_block_dumper._internal.services.metrics import (
|
|
|
16
15
|
set_registered_tasks,
|
|
17
16
|
)
|
|
18
17
|
|
|
19
|
-
# Refresh bittensor connections every N blocks to prevent memory leaks from internal caches
|
|
20
|
-
CONNECTION_REFRESH_INTERVAL = 1000
|
|
21
|
-
|
|
22
18
|
logger = structlog.get_logger(__name__)
|
|
23
19
|
|
|
24
20
|
|
|
@@ -42,6 +38,7 @@ class DefaultBlockStateResolver:
|
|
|
42
38
|
return self.bittensor_client.subtensor.get_current_block()
|
|
43
39
|
if isinstance(start_setting, int):
|
|
44
40
|
return start_setting
|
|
41
|
+
|
|
45
42
|
# Default: resume from DB or current
|
|
46
43
|
return abd_dal.get_the_latest_executed_block_number() or self.bittensor_client.subtensor.get_current_block()
|
|
47
44
|
|
|
@@ -59,7 +56,6 @@ class TaskScheduler:
|
|
|
59
56
|
self.bittensor_client = bittensor_client
|
|
60
57
|
self.last_processed_block = state_resolver.get_starting_block()
|
|
61
58
|
self.is_running = False
|
|
62
|
-
self._blocks_since_refresh = 0
|
|
63
59
|
|
|
64
60
|
def start(self) -> None:
|
|
65
61
|
self.is_running = True
|
|
@@ -86,11 +82,6 @@ class TaskScheduler:
|
|
|
86
82
|
increment_blocks_processed("realtime")
|
|
87
83
|
set_block_lag("realtime", 0) # Head-only mode has no lag
|
|
88
84
|
self.last_processed_block = current_block
|
|
89
|
-
self._blocks_since_refresh += 1
|
|
90
|
-
|
|
91
|
-
# Periodic memory cleanup
|
|
92
|
-
if self._blocks_since_refresh >= CONNECTION_REFRESH_INTERVAL:
|
|
93
|
-
self._perform_cleanup()
|
|
94
85
|
|
|
95
86
|
time.sleep(self.poll_interval)
|
|
96
87
|
|
|
@@ -104,19 +95,9 @@ class TaskScheduler:
|
|
|
104
95
|
|
|
105
96
|
def stop(self) -> None:
|
|
106
97
|
self.is_running = False
|
|
98
|
+
self.bittensor_client.close()
|
|
107
99
|
logger.info("TaskScheduler stopped.")
|
|
108
100
|
|
|
109
|
-
def _perform_cleanup(self) -> None:
|
|
110
|
-
"""Perform periodic memory cleanup to prevent leaks in long-running processes."""
|
|
111
|
-
# Reset bittensor connections to clear internal caches
|
|
112
|
-
self.bittensor_client.refresh_connections()
|
|
113
|
-
|
|
114
|
-
# Clear Django's query log (only accumulates if DEBUG=True)
|
|
115
|
-
db.reset_queries()
|
|
116
|
-
|
|
117
|
-
self._blocks_since_refresh = 0
|
|
118
|
-
logger.debug("Memory cleanup performed", blocks_processed=CONNECTION_REFRESH_INTERVAL)
|
|
119
|
-
|
|
120
101
|
|
|
121
102
|
def task_scheduler_factory(network: str = "finney") -> TaskScheduler:
|
|
122
103
|
"""
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/_version.py
RENAMED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 2)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
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
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/admin.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/models.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/tasks.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/tests.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/block_explorer/views.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/docker-compose.yml
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/asgi.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/urls.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/example_project/example_project/wsgi.py
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
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/__init__.py
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
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/admin.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/apps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/models.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/py.typed
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/__init__.py
RENAMED
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/celery.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/src/abstract_block_dumper/v1/tasks.py
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
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/integration/test_scheduler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_block_dumper-0.1.1 → abstract_block_dumper-0.1.2}/tests/unit/test_celery_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|