abstract-block-dumper 0.0.9__tar.gz → 0.1.0__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.
Files changed (86) hide show
  1. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/CHANGELOG.md +5 -0
  2. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/PKG-INFO +1 -1
  3. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/pyproject.toml +3 -0
  4. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/scheduler.py +9 -26
  5. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/utils.py +1 -1
  6. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_version.py +2 -2
  7. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/v1/decorators.py +3 -1
  8. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.cruft.json +0 -0
  9. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.github/dependabot.yml +0 -0
  10. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.github/workflows/ci.yml +0 -0
  11. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.github/workflows/publish.yml +0 -0
  12. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.gitignore +0 -0
  13. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.pre-commit-config.yaml +0 -0
  14. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/.shellcheckrc +0 -0
  15. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/README.md +0 -0
  16. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/SECURITY.md +0 -0
  17. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/docs/3rd_party/cookiecutter-rt-pkg/CHANGELOG.md +0 -0
  18. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/.dockerignore +0 -0
  19. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/.gitignore +0 -0
  20. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/Dockerfile +0 -0
  21. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/README.md +0 -0
  22. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/__init__.py +0 -0
  23. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/admin.py +0 -0
  24. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/apps.py +0 -0
  25. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/management/__init__.py +0 -0
  26. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/management/commands/__init__.py +0 -0
  27. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/management/commands/create_admin.py +0 -0
  28. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/migrations/__init__.py +0 -0
  29. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/models.py +0 -0
  30. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/tasks.py +0 -0
  31. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/tests.py +0 -0
  32. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/block_explorer/views.py +0 -0
  33. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/docker-compose.yml +0 -0
  34. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/example_project/__init__.py +0 -0
  35. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/example_project/asgi.py +0 -0
  36. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/example_project/celery.py +0 -0
  37. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/example_project/settings.py +0 -0
  38. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/example_project/urls.py +0 -0
  39. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/example_project/wsgi.py +0 -0
  40. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/main.py +0 -0
  41. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/manage.py +0 -0
  42. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/pyproject.toml +0 -0
  43. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/pytest.ini +0 -0
  44. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/example_project/uv.lock +0 -0
  45. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/noxfile.py +0 -0
  46. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/__init__.py +0 -0
  47. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/__init__.py +0 -0
  48. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/dal/__init__.py +0 -0
  49. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/dal/django_dal.py +0 -0
  50. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/dal/memory_registry.py +0 -0
  51. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/discovery.py +0 -0
  52. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/exceptions.py +0 -0
  53. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/__init__.py +0 -0
  54. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/backfill_scheduler.py +0 -0
  55. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/block_processor.py +0 -0
  56. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/executor.py +0 -0
  57. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/_internal/services/metrics.py +0 -0
  58. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/admin.py +0 -0
  59. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/apps.py +0 -0
  60. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/management/__init__.py +0 -0
  61. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/management/commands/__init__.py +0 -0
  62. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/management/commands/backfill_blocks_v1.py +0 -0
  63. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/management/commands/block_tasks_v1.py +0 -0
  64. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/migrations/0001_initial.py +0 -0
  65. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/migrations/__init__.py +0 -0
  66. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/models.py +0 -0
  67. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/py.typed +0 -0
  68. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/v1/__init__.py +0 -0
  69. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/v1/celery.py +0 -0
  70. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/src/abstract_block_dumper/v1/tasks.py +0 -0
  71. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/__init__.py +0 -0
  72. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/conftest.py +0 -0
  73. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/django_fixtures.py +0 -0
  74. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/fatories.py +0 -0
  75. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/__init__.py +0 -0
  76. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_backfill_scheduler.py +0 -0
  77. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_block_processor.py +0 -0
  78. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_concurrent_processing.py +0 -0
  79. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_multi_arguments_tasks.py +0 -0
  80. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_registered_celery_tasks.py +0 -0
  81. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_scheduler.py +0 -0
  82. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/integration/test_task_registration.py +0 -0
  83. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/settings.py +0 -0
  84. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/unit/test_celery_integration.py +0 -0
  85. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/tests/unit/test_decorator.py +0 -0
  86. {abstract_block_dumper-0.0.9 → abstract_block_dumper-0.1.0}/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.0](https://github.com/bactensor/abstract-block-dumper/releases/tag/v0.1.0) - 2025-12-10
13
+
14
+ No significant changes.
15
+
16
+
12
17
  ## [0.0.9](https://github.com/bactensor/abstract-block-dumper/releases/tag/v0.0.9) - 2025-12-04
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.0.9
3
+ Version: 0.1.0
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>
@@ -144,6 +144,9 @@ directory = "infrastructure"
144
144
  name = "Infrastructure"
145
145
  showcontent = true
146
146
 
147
+ [tool.pyright]
148
+ typeCheckingMode = "off"
149
+
147
150
  [tool.mypy]
148
151
  plugins = ["mypy_django_plugin.main"]
149
152
  strict_optional = true
@@ -27,12 +27,10 @@ class TaskScheduler:
27
27
  block_processor: BlockProcessor,
28
28
  network: str,
29
29
  poll_interval: int,
30
- realtime_head_only: bool = False,
31
30
  ) -> None:
32
31
  self.block_processor = block_processor
33
32
  self.network = network
34
33
  self.poll_interval = poll_interval
35
- self.realtime_head_only = realtime_head_only
36
34
  self.last_processed_block = -1
37
35
  self.is_running = False
38
36
  self._subtensor: bt.Subtensor | None = None
@@ -114,31 +112,17 @@ class TaskScheduler:
114
112
  self._current_block_cache = self.subtensor.get_current_block()
115
113
  current_block = self._current_block_cache
116
114
 
117
- if self.realtime_head_only:
118
- # Only process the current head block, skip if already processed
119
- if current_block != self.last_processed_block:
120
- with BlockProcessingTimer(mode="realtime"):
121
- self.block_processor.process_block(current_block)
115
+ # Only process the current head block, skip if already processed
116
+ if current_block != self.last_processed_block:
117
+ with BlockProcessingTimer(mode="realtime"):
118
+ self.block_processor.process_block(current_block)
122
119
 
123
- set_current_block("realtime", current_block)
124
- increment_blocks_processed("realtime")
125
- set_block_lag("realtime", 0) # Head-only mode has no lag
126
- self.last_processed_block = current_block
120
+ set_current_block("realtime", current_block)
121
+ increment_blocks_processed("realtime")
122
+ set_block_lag("realtime", 0) # Head-only mode has no lag
123
+ self.last_processed_block = current_block
127
124
 
128
- time.sleep(self.poll_interval)
129
- else:
130
- # Original behavior: process all blocks from last_processed to current
131
- for block_number in range(self.last_processed_block + 1, current_block + 1):
132
- with BlockProcessingTimer(mode="realtime"):
133
- self.block_processor.process_block(block_number)
134
-
135
- # Update metrics
136
- set_current_block("realtime", block_number)
137
- increment_blocks_processed("realtime")
138
- set_block_lag("realtime", current_block - block_number)
139
-
140
- time.sleep(self.poll_interval)
141
- self.last_processed_block = block_number
125
+ time.sleep(self.poll_interval)
142
126
 
143
127
  except KeyboardInterrupt:
144
128
  logger.info("TaskScheduler stopping due to KeyboardInterrupt.")
@@ -191,5 +175,4 @@ def task_scheduler_factory(network: str = "finney") -> TaskScheduler:
191
175
  block_processor=block_processor_factory(),
192
176
  network=network,
193
177
  poll_interval=getattr(settings, "BLOCK_DUMPER_POLL_INTERVAL", 1),
194
- realtime_head_only=getattr(settings, "BLOCK_DUMPER_REALTIME_HEAD_ONLY", True),
195
178
  )
@@ -17,7 +17,7 @@ def get_bittensor_client(network: str = "finney") -> bt.Subtensor:
17
17
  doesn't change during runtime.
18
18
  """
19
19
  logger.info("Creating new bittensor client for network", network=network)
20
- return bt.subtensor(network=network)
20
+ return bt.Subtensor(network=network)
21
21
 
22
22
 
23
23
  def get_current_celery_task_id() -> str:
@@ -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.0.9'
32
- __version_tuple__ = version_tuple = (0, 0, 9)
31
+ __version__ = version = '0.1.0'
32
+ __version_tuple__ = version_tuple = (0, 1, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -74,7 +74,9 @@ def schedule_retry(task_attempt: TaskAttempt) -> None:
74
74
 
75
75
 
76
76
  def _celery_task_wrapper(
77
- func: Callable[..., Any], block_number: int, **kwargs: dict[str, Any]
77
+ func: Callable[..., Any],
78
+ block_number: int,
79
+ **kwargs: dict[str, Any],
78
80
  ) -> dict[str, Any] | None:
79
81
  executable_path = abd_utils.get_executable_path(func)
80
82