# TRC20 Monitor
Professional TRC20 transaction monitoring for Tron blockchain with pluggable adapters.
[](https://python.org)
[](https://opensource.org/licenses/MIT)
## ๐ Quick Start
### Installation
```bash
pip install trc20-monitor
```
### Basic Usage
```python
import asyncio
from trc20_monitor import (
TRC20Monitor,
MonitorConfig,
MemoryDatabaseAdapter,
ConsoleNotificationAdapter
)
async def main():
# Configure monitoring
config = MonitorConfig(
monitor_addresses=["TYourTronAddress1", "TYourTronAddress2"],
large_transaction_threshold=1000.0 # Alert for >= 1000 USDT
)
# Create adapters
database = MemoryDatabaseAdapter()
notifications = ConsoleNotificationAdapter()
# Create monitor
monitor = TRC20Monitor(
config=config,
database_adapter=database,
notification_adapter=notifications
)
# Run once or continuously
await monitor.start_monitoring(run_once=True)
asyncio.run(main())
```
### Environment Configuration
```bash
export MONITOR_ADDRESSES="TAddress1,TAddress2,TAddress3"
export TRON_API_KEY="your_trongrid_api_key"
export LARGE_TRANSACTION_THRESHOLD="5000.0"
export CHECK_INTERVAL_SECONDS="60"
```
```python
# Load from environment variables
config = MonitorConfig.from_env()
```
## ๐๏ธ Architecture
TRC20 Monitor uses a pluggable adapter architecture:
```
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ TRC20Monitor โโโโโโ DatabaseAdapter โโโโโโ NotificationAdapter โ
โ โ โ โ โ โ
โ - Check API โ โ - Track TXs โ โ - Send Alerts โ
โ - Process TXs โ โ - Prevent Dups โ โ - Format Messages โ
โ - Handle Errors โ โ - Cleanup Old โ โ - Multiple Channels โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โ Worker Process โ
โ - Continuous Running โ
โ - Graceful Shutdown โ
โ - Health Monitoring โ
โ - Statistics Tracking โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
## ๐ฆ Available Adapters
### Database Adapters
- **MemoryDatabaseAdapter**: In-memory storage (development/testing)
- **SQLiteDatabaseAdapter**: SQLite database (single-node production)
- **SQLAlchemyDatabaseAdapter**: PostgreSQL/MySQL (enterprise)
### Notification Adapters
- **ConsoleNotificationAdapter**: Terminal output with colors
- **FileNotificationAdapter**: JSON/text file logging
- **WebhookNotificationAdapter**: HTTP POST notifications
- **MultiNotificationAdapter**: Multiple channels simultaneously
## ๐ง Advanced Configuration
### Custom Database
```python
from trc20_monitor.implementations import SQLiteDatabaseAdapter
# Persistent SQLite storage
database = SQLiteDatabaseAdapter("monitor.db")
# Or PostgreSQL via SQLAlchemy
from trc20_monitor.implementations import SQLAlchemyDatabaseAdapter
database = SQLAlchemyDatabaseAdapter("postgresql://user:pass@localhost/db")
```
### Multiple Notifications
```python
from trc20_monitor.implementations import (
WebhookNotificationAdapter,
FileNotificationAdapter,
MultiNotificationAdapter
)
# Webhook notifications
webhook = WebhookNotificationAdapter([
"https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"https://discord.com/api/webhooks/YOUR/WEBHOOK"
])
# File logging
file_logger = FileNotificationAdapter("transactions.log", log_format="json")
# Combine multiple channels
notifications = MultiNotificationAdapter([webhook, file_logger])
```
### Worker Process
```python
from trc20_monitor.worker import TRC20Worker
# Background worker with health monitoring
worker = TRC20Worker(
config=config,
database_adapter=database,
notification_adapter=notifications
)
# Start continuous monitoring
await worker.start() # Runs until stopped
```
## ๐ฅ๏ธ Command Line Interface
```bash
# Initialize configuration file
trc20-monitor init
# Run once
trc20-monitor run-once --notification-type console
# Run continuously
trc20-monitor --config-file config.json --db-type sqlite run
# Available options
trc20-monitor --help
```
## ๐ Features
### โ
Core Functionality
- **Multi-address monitoring**: Track multiple Tron addresses simultaneously
- **Duplicate prevention**: Automatically prevents reprocessing transactions
- **Large amount alerts**: Configurable threshold for high-value transaction alerts
- **Transaction age filtering**: Ignore old transactions to focus on recent activity
- **Robust error handling**: Graceful degradation and automatic retry mechanisms
### โ
Production Ready
- **Async/await**: Full asyncio support for high performance
- **Pluggable architecture**: Swap database and notification backends easily
- **Health monitoring**: Built-in health checks for all components
- **Graceful shutdown**: Proper cleanup on termination signals
- **Statistics tracking**: Monitor processing rates and error counts
### โ
Enterprise Features
- **PostgreSQL support**: Scale to high transaction volumes
- **Webhook notifications**: Integrate with Slack, Discord, PagerDuty, etc.
- **Structured logging**: JSON logs for centralized log management
- **Configuration management**: Environment variables, JSON files, or code-based
- **Test coverage**: Comprehensive test suite with async test support
## ๐งช Testing
```bash
# Install development dependencies
pip install trc20-monitor[dev]
# Run tests
pytest
# With coverage
pytest --cov=trc20_monitor
# Integration tests
pytest -m integration
```
## ๐ Monitoring & Observability
### Health Checks
```python
# Component health status
health = await monitor.health_check()
print(health)
# {
# "monitor": "ok",
# "database": "ok",
# "notifications": "ok",
# "api_connectivity": "ok"
# }
```
### Statistics
```python
# Worker statistics
stats = worker.get_stats()
print(f"Uptime: {stats['uptime_seconds']}s")
print(f"Successful checks: {stats['successful_checks']}")
print(f"Failed checks: {stats['failed_checks']}")
```
### Custom Metrics
```python
# Get transaction counts
total = await database.get_transaction_count()
recent = await database.get_recent_transactions(limit=10)
# Address-specific stats
addr_summary = await database.get_addresses_summary()
```
## ๐ Security Best Practices
### API Keys
```bash
# Use environment variables for sensitive data
export TRON_API_KEY="your_api_key_here"
# Or use a secrets management system
# Never commit API keys to version control
```
### Network Security
```python
# Configure timeouts and retries
config = MonitorConfig(
api_timeout_seconds=30,
api_retries=3,
retry_delay_seconds=5
)
```
### Input Validation
```python
# All inputs are validated
from trc20_monitor.utils import validate_address
if validate_address("TYourAddress"):
print("Valid Tron address")
```
## ๐ฆ Error Handling
The library provides comprehensive error handling:
```python
from trc20_monitor.core.exceptions import (
TRC20MonitorError, # Base exception
ConfigurationError, # Configuration issues
ValidationError, # Input validation errors
APIError, # Tron API errors
DatabaseError, # Database operation errors
NotificationError # Notification sending errors
)
try:
await monitor.check_transactions()
except APIError as e:
print(f"API error: {e.status_code} - {e}")
except DatabaseError as e:
print(f"Database error: {e}")
```
## ๐ Examples
Check the `examples/` directory for complete working examples:
- `basic_usage.py`: Simple monitoring setup
- `with_database.py`: SQLite persistence
- `webhook_example.py`: Webhook notifications
- `enterprise_setup.py`: Production configuration
## ๐ค Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
### Development Setup
```bash
git clone https://github.com/kun-g/trc20-monitor.git
cd trc20-monitor
pip install -e .[dev]
pre-commit install
```
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- [Tron Network](https://tron.network/) for the blockchain infrastructure
- [TronGrid](https://www.trongrid.io/) for API services
- [aiogram](https://aiogram.dev/) for Telegram bot inspiration
- [FastAPI](https://fastapi.tiangolo.com/) for async patterns
## ๐ Support
- ๐ [Documentation](https://trc20-monitor.readthedocs.io/)
- ๐ [Issues](https://github.com/kun-g/trc20-monitor/issues)
- ๐ฌ [Discussions](https://github.com/kun-g/trc20-monitor/discussions)
- ๐ง Email: support@trc20monitor.com
---
**Made with โค๏ธ for the Tron ecosystem**
Raw data
{
"_id": null,
"home_page": "https://github.com/kun-g/trc20-monitor",
"name": "trc20-monitor",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8.1",
"maintainer_email": null,
"keywords": "tron, trc20, usdt, blockchain, monitoring, cryptocurrency",
"author": "TRC20 Monitor Team",
"author_email": "support@trc20monitor.com",
"download_url": "https://files.pythonhosted.org/packages/64/e3/6c89ddb8a04038a8d6f5863dcfdd95441ca3684b7eddecd2ad626e3f3b91/trc20_monitor-0.1.0.tar.gz",
"platform": null,
"description": "# TRC20 Monitor\n\nProfessional TRC20 transaction monitoring for Tron blockchain with pluggable adapters.\n\n[](https://python.org)\n[](https://opensource.org/licenses/MIT)\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install trc20-monitor\n```\n\n### Basic Usage\n\n```python\nimport asyncio\nfrom trc20_monitor import (\n TRC20Monitor,\n MonitorConfig,\n MemoryDatabaseAdapter,\n ConsoleNotificationAdapter\n)\n\nasync def main():\n # Configure monitoring\n config = MonitorConfig(\n monitor_addresses=[\"TYourTronAddress1\", \"TYourTronAddress2\"],\n large_transaction_threshold=1000.0 # Alert for >= 1000 USDT\n )\n \n # Create adapters\n database = MemoryDatabaseAdapter()\n notifications = ConsoleNotificationAdapter()\n \n # Create monitor\n monitor = TRC20Monitor(\n config=config,\n database_adapter=database,\n notification_adapter=notifications\n )\n \n # Run once or continuously\n await monitor.start_monitoring(run_once=True)\n\nasyncio.run(main())\n```\n\n### Environment Configuration\n\n```bash\nexport MONITOR_ADDRESSES=\"TAddress1,TAddress2,TAddress3\"\nexport TRON_API_KEY=\"your_trongrid_api_key\"\nexport LARGE_TRANSACTION_THRESHOLD=\"5000.0\"\nexport CHECK_INTERVAL_SECONDS=\"60\"\n```\n\n```python\n# Load from environment variables\nconfig = MonitorConfig.from_env()\n```\n\n## \ud83c\udfd7\ufe0f Architecture\n\nTRC20 Monitor uses a pluggable adapter architecture:\n\n```\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 TRC20Monitor \u2502\u2500\u2500\u2500\u2500\u2502 DatabaseAdapter \u2502\u2500\u2500\u2500\u2500\u2502 NotificationAdapter \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 - Check API \u2502 \u2502 - Track TXs \u2502 \u2502 - Send Alerts \u2502\n\u2502 - Process TXs \u2502 \u2502 - Prevent Dups \u2502 \u2502 - Format Messages \u2502\n\u2502 - Handle Errors \u2502 \u2502 - Cleanup Old \u2502 \u2502 - Multiple Channels \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 \u2502 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Worker Process \u2502\n \u2502 - Continuous Running \u2502\n \u2502 - Graceful Shutdown \u2502\n \u2502 - Health Monitoring \u2502\n \u2502 - Statistics Tracking \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## \ud83d\udce6 Available Adapters\n\n### Database Adapters\n\n- **MemoryDatabaseAdapter**: In-memory storage (development/testing)\n- **SQLiteDatabaseAdapter**: SQLite database (single-node production)\n- **SQLAlchemyDatabaseAdapter**: PostgreSQL/MySQL (enterprise)\n\n### Notification Adapters\n\n- **ConsoleNotificationAdapter**: Terminal output with colors\n- **FileNotificationAdapter**: JSON/text file logging\n- **WebhookNotificationAdapter**: HTTP POST notifications\n- **MultiNotificationAdapter**: Multiple channels simultaneously\n\n## \ud83d\udd27 Advanced Configuration\n\n### Custom Database\n\n```python\nfrom trc20_monitor.implementations import SQLiteDatabaseAdapter\n\n# Persistent SQLite storage\ndatabase = SQLiteDatabaseAdapter(\"monitor.db\")\n\n# Or PostgreSQL via SQLAlchemy\nfrom trc20_monitor.implementations import SQLAlchemyDatabaseAdapter\ndatabase = SQLAlchemyDatabaseAdapter(\"postgresql://user:pass@localhost/db\")\n```\n\n### Multiple Notifications\n\n```python\nfrom trc20_monitor.implementations import (\n WebhookNotificationAdapter,\n FileNotificationAdapter,\n MultiNotificationAdapter\n)\n\n# Webhook notifications\nwebhook = WebhookNotificationAdapter([\n \"https://hooks.slack.com/services/YOUR/WEBHOOK/URL\",\n \"https://discord.com/api/webhooks/YOUR/WEBHOOK\"\n])\n\n# File logging\nfile_logger = FileNotificationAdapter(\"transactions.log\", log_format=\"json\")\n\n# Combine multiple channels\nnotifications = MultiNotificationAdapter([webhook, file_logger])\n```\n\n### Worker Process\n\n```python\nfrom trc20_monitor.worker import TRC20Worker\n\n# Background worker with health monitoring\nworker = TRC20Worker(\n config=config,\n database_adapter=database,\n notification_adapter=notifications\n)\n\n# Start continuous monitoring\nawait worker.start() # Runs until stopped\n```\n\n## \ud83d\udda5\ufe0f Command Line Interface\n\n```bash\n# Initialize configuration file\ntrc20-monitor init\n\n# Run once\ntrc20-monitor run-once --notification-type console\n\n# Run continuously \ntrc20-monitor --config-file config.json --db-type sqlite run\n\n# Available options\ntrc20-monitor --help\n```\n\n## \ud83d\udcca Features\n\n### \u2705 Core Functionality\n\n- **Multi-address monitoring**: Track multiple Tron addresses simultaneously\n- **Duplicate prevention**: Automatically prevents reprocessing transactions\n- **Large amount alerts**: Configurable threshold for high-value transaction alerts\n- **Transaction age filtering**: Ignore old transactions to focus on recent activity\n- **Robust error handling**: Graceful degradation and automatic retry mechanisms\n\n### \u2705 Production Ready\n\n- **Async/await**: Full asyncio support for high performance\n- **Pluggable architecture**: Swap database and notification backends easily\n- **Health monitoring**: Built-in health checks for all components\n- **Graceful shutdown**: Proper cleanup on termination signals\n- **Statistics tracking**: Monitor processing rates and error counts\n\n### \u2705 Enterprise Features\n\n- **PostgreSQL support**: Scale to high transaction volumes\n- **Webhook notifications**: Integrate with Slack, Discord, PagerDuty, etc.\n- **Structured logging**: JSON logs for centralized log management\n- **Configuration management**: Environment variables, JSON files, or code-based\n- **Test coverage**: Comprehensive test suite with async test support\n\n## \ud83e\uddea Testing\n\n```bash\n# Install development dependencies\npip install trc20-monitor[dev]\n\n# Run tests\npytest\n\n# With coverage\npytest --cov=trc20_monitor\n\n# Integration tests\npytest -m integration\n```\n\n## \ud83d\udcc8 Monitoring & Observability\n\n### Health Checks\n\n```python\n# Component health status\nhealth = await monitor.health_check()\nprint(health)\n# {\n# \"monitor\": \"ok\",\n# \"database\": \"ok\", \n# \"notifications\": \"ok\",\n# \"api_connectivity\": \"ok\"\n# }\n```\n\n### Statistics\n\n```python\n# Worker statistics\nstats = worker.get_stats()\nprint(f\"Uptime: {stats['uptime_seconds']}s\")\nprint(f\"Successful checks: {stats['successful_checks']}\")\nprint(f\"Failed checks: {stats['failed_checks']}\")\n```\n\n### Custom Metrics\n\n```python\n# Get transaction counts\ntotal = await database.get_transaction_count()\nrecent = await database.get_recent_transactions(limit=10)\n\n# Address-specific stats \naddr_summary = await database.get_addresses_summary()\n```\n\n## \ud83d\udd10 Security Best Practices\n\n### API Keys\n\n```bash\n# Use environment variables for sensitive data\nexport TRON_API_KEY=\"your_api_key_here\"\n\n# Or use a secrets management system\n# Never commit API keys to version control\n```\n\n### Network Security\n\n```python\n# Configure timeouts and retries\nconfig = MonitorConfig(\n api_timeout_seconds=30,\n api_retries=3,\n retry_delay_seconds=5\n)\n```\n\n### Input Validation\n\n```python\n# All inputs are validated\nfrom trc20_monitor.utils import validate_address\n\nif validate_address(\"TYourAddress\"):\n print(\"Valid Tron address\")\n```\n\n## \ud83d\udea6 Error Handling\n\nThe library provides comprehensive error handling:\n\n```python\nfrom trc20_monitor.core.exceptions import (\n TRC20MonitorError, # Base exception\n ConfigurationError, # Configuration issues\n ValidationError, # Input validation errors\n APIError, # Tron API errors\n DatabaseError, # Database operation errors\n NotificationError # Notification sending errors\n)\n\ntry:\n await monitor.check_transactions()\nexcept APIError as e:\n print(f\"API error: {e.status_code} - {e}\")\nexcept DatabaseError as e:\n print(f\"Database error: {e}\")\n```\n\n## \ud83d\udcda Examples\n\nCheck the `examples/` directory for complete working examples:\n\n- `basic_usage.py`: Simple monitoring setup\n- `with_database.py`: SQLite persistence \n- `webhook_example.py`: Webhook notifications\n- `enterprise_setup.py`: Production configuration\n\n## \ud83e\udd1d Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Setup\n\n```bash\ngit clone https://github.com/kun-g/trc20-monitor.git\ncd trc20-monitor\npip install -e .[dev]\npre-commit install\n```\n\n## \ud83d\udcdc License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- [Tron Network](https://tron.network/) for the blockchain infrastructure\n- [TronGrid](https://www.trongrid.io/) for API services\n- [aiogram](https://aiogram.dev/) for Telegram bot inspiration\n- [FastAPI](https://fastapi.tiangolo.com/) for async patterns\n\n## \ud83d\udcde Support\n\n- \ud83d\udcd6 [Documentation](https://trc20-monitor.readthedocs.io/)\n- \ud83d\udc1b [Issues](https://github.com/kun-g/trc20-monitor/issues)\n- \ud83d\udcac [Discussions](https://github.com/kun-g/trc20-monitor/discussions)\n- \ud83d\udce7 Email: support@trc20monitor.com\n\n---\n\n**Made with \u2764\ufe0f for the Tron ecosystem**",
"bugtrack_url": null,
"license": "MIT",
"summary": "Professional TRC20 transaction monitoring for Tron blockchain",
"version": "0.1.0",
"project_urls": {
"Changelog": "https://github.com/kun-g/trc20-monitor/blob/main/CHANGELOG.md",
"Documentation": "https://trc20-monitor.readthedocs.io/",
"Homepage": "https://github.com/kun-g/trc20-monitor",
"Issues": "https://github.com/kun-g/trc20-monitor/issues",
"Repository": "https://github.com/kun-g/trc20-monitor.git"
},
"split_keywords": [
"tron",
" trc20",
" usdt",
" blockchain",
" monitoring",
" cryptocurrency"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c39dc1fc140d9e4529b19667755f7733b716b487ab7f83ea3e9017d068872277",
"md5": "ab8521ce012dde81f79e38a58dfcc9de",
"sha256": "caf54abb8e93bfe64b9f60d5fa0bbe9c1633aa0f1f7c98c85301f95d98f96459"
},
"downloads": -1,
"filename": "trc20_monitor-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ab8521ce012dde81f79e38a58dfcc9de",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8.1",
"size": 41462,
"upload_time": "2025-08-18T05:34:07",
"upload_time_iso_8601": "2025-08-18T05:34:07.401330Z",
"url": "https://files.pythonhosted.org/packages/c3/9d/c1fc140d9e4529b19667755f7733b716b487ab7f83ea3e9017d068872277/trc20_monitor-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "64e36c89ddb8a04038a8d6f5863dcfdd95441ca3684b7eddecd2ad626e3f3b91",
"md5": "30e6983fd0e632d721cab943df39ac6e",
"sha256": "60f397d4856cc543d210370d2ed14eb0d7e786b7f75d742ec336a0a947eaf980"
},
"downloads": -1,
"filename": "trc20_monitor-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "30e6983fd0e632d721cab943df39ac6e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.1",
"size": 43437,
"upload_time": "2025-08-18T05:34:09",
"upload_time_iso_8601": "2025-08-18T05:34:09.284731Z",
"url": "https://files.pythonhosted.org/packages/64/e3/6c89ddb8a04038a8d6f5863dcfdd95441ca3684b7eddecd2ad626e3f3b91/trc20_monitor-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-18 05:34:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kun-g",
"github_project": "trc20-monitor",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "aiohttp",
"specs": [
[
">=",
"3.8.0"
]
]
},
{
"name": "aiofiles",
"specs": [
[
">=",
"23.0.0"
]
]
},
{
"name": "base58",
"specs": [
[
">=",
"2.1.0"
]
]
},
{
"name": "aiosqlite",
"specs": [
[
">=",
"0.19.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"7.0.0"
]
]
},
{
"name": "pytest-asyncio",
"specs": [
[
">=",
"0.21.0"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
">=",
"4.0.0"
]
]
},
{
"name": "pytest-mock",
"specs": [
[
">=",
"3.10.0"
]
]
}
],
"lcname": "trc20-monitor"
}