Skip to main content

Core API for dwellir-harvester: collector bases, types, loaders, and helpers.

Project description

Dwellir Harvester Lib

Core SDK for building and running Dwellir harvesters. It provides the collector base classes, loader helpers, RPC utilities, and the shared blockchain metadata schema used by dwellir-harvester.

Features

  • Collector base classes (CollectorBase, GenericCollector, BlockchainCollector) with result/metadata helpers
  • Collector loader with plugin paths and entry point support
  • Schema validation helpers and bundled blockchain_node_metadata.schema.json
  • Simple runner to execute a collector class directly (python -m dwellir_harvester.lib.run)
  • RPC helpers for JSON-RPC, Substrate, and EVM-compatible nodes

Installation

python -m venv .venv
source .venv/bin/activate
pip install -e .

Usage

from dwellir_harvester.core import collect_all, bundled_schema_path

result = collect_all([
    "host",  # or your plugin collector name
], schema_path=bundled_schema_path())
print(result)

Run a collector class directly (module:Class):

# Built-in null collector
python -m dwellir_harvester.lib.run dwellir_harvester.collectors.null:NullCollector

# From the dwellir_harvester package
python -m dwellir_harvester.lib.run examples.plugins.sample_collector:SamplePluginCollector

Packaging notes

  • Python 3.9+
  • Entry point group for collectors: dwellir_harvester.collectors
  • Bundled schema is included as package data under dwellir_harvester/data/

Building (offline-friendly)

Use the sibling checkout pattern:

  1. Make sure you have a venv with build tools (and system site packages to avoid missing setuptools):
    python3 -m venv --system-site-packages .venv
    source .venv/bin/activate
    pip install --upgrade pip build
    
  2. Build the library without isolation (reuses your env, no downloads):
    python -m build --no-isolation
    

Artifacts land in dist/ (.whl and .tar.gz). If you depend on this from the app as a sibling path, the existing file:../dwellir-harvester-lib PEP 508 spec in the app works; for publishing, set a versioned requirement there instead.

Publish (Python package)

# build
python3 -m pip install build twine
python3 -m build  # creates dist/*.tar.gz and dist/*.whl

# upload to TestPyPI first (recommended)
python3 -m twine upload -r testpypi dist/*

# Install from testpypi
python3 -m venv .venv
source .venv/bin/activate
# Pull in deps from real, this is needed only on testpypi 
pip3 install jsonschema>=4.25.1 psutil>=7.1.3 requests>=2.32.5
# Install from testpypi
pip3 install --index-url https://test.pypi.org/simple/ --no-deps dwellir-harvester-lib

# then to PyPI
python3 -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dwellir_harvester_lib-0.0.3.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dwellir_harvester_lib-0.0.3-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file dwellir_harvester_lib-0.0.3.tar.gz.

File metadata

  • Download URL: dwellir_harvester_lib-0.0.3.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for dwellir_harvester_lib-0.0.3.tar.gz
Algorithm Hash digest
SHA256 fdb794e5cc4e4c8fb78ea593b007a81479993023f46acd7d3d6d8f1bdef57036
MD5 c23757b3f10faa0425848116ecd38f91
BLAKE2b-256 2de7fd36dc301116f9c4871e188178c4ee0fa0148a39b80a2b8f76103009f04a

See more details on using hashes here.

File details

Details for the file dwellir_harvester_lib-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for dwellir_harvester_lib-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 38c1a020f88727827c06530af167af6d2296923778fd497180e6bdedb7992167
MD5 c9d5ddeb4ccf9fbfad72b507bf025993
BLAKE2b-256 c0048622c5b4c7728e02ec0f5175d5ae8b5a61575b79f6b5e47710c66b288ec0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page