Skip to main content

Async Python wrapper for Netro API (HTTP-agnostic, HA-friendly)

Project description

pynetro

Async Python wrapper for Netro API — HTTP-agnostic (works with adapters). Designed to integrate with Home Assistant but usable anywhere.

Installation

🚀 Quick Installation

# Clone the project
git clone https://github.com/kcofoni/pynetro.git
cd pynetro

# Install in development mode
pip install -e .

🛠️ Complete Development Setup

1. Prerequisites

  • Python 3.10 or higher
  • git

2. Environment Setup

# Clone the project
git clone https://github.com/kcofoni/pynetro.git
cd pynetro

# Create a virtual environment
python -m venv .venv

# Activate the virtual environment
# On Linux/macOS:
source .venv/bin/activate

# On Windows:
# .venv\Scripts\activate

# Verify the environment is activated (prompt should show (.venv))
which python  # Should point to .venv/bin/python

3. Install Dependencies

# Install the project in development mode
pip install -e .

# Install development dependencies (tests, linting, etc.)
pip install -r requirements-dev.txt

4. Verify Installation

# Run unit tests to verify everything works
pytest tests/test_client.py -v

# Check linting
ruff check src/ tests/

🧪 Testing

Run tests using pytest commands:

5. Integration Tests Configuration (optional)

# Create an .env file with your Netro device serial numbers
cp .env.example .env
# Then edit .env with your actual values

# Generate reference files for development (contains real serial numbers, ignored by git)
python tests/generate_references.py

# Test integrations (requires internet connection and Netro devices)
pytest tests/test_integration.py -v -m integration

Security Note: Reference files are automatically ignored by git as they contain real device serial numbers. Template files with anonymized data are provided for understanding the API structure.

🔧 Common Troubleshooting

Virtual environment not activated

# Check that the environment is activated
which python  # Should point to .venv/bin/python
echo $VIRTUAL_ENV  # Should display the path to .venv

# If not activated:
source .venv/bin/activate  # Linux/macOS
# .venv\Scripts\activate   # Windows

Import errors during tests

# Reinstall the project in development mode
pip install -e .

Integration tests skipped

# Integration tests require environment variables
export NETRO_SENS_SERIAL="your_sensor_serial"
export NETRO_CTRL_SERIAL="your_controller_serial"

# Verify variables are set
echo $NETRO_SENS_SERIAL $NETRO_CTRL_SERIAL

Tests

The project has a comprehensive test suite with 14 tests (7 unit + 7 integration).

# Run all tests
pytest tests/ -v

# Unit tests only (always available)
pytest tests/test_client.py -v

# Integration tests (require environment variables)
pytest tests/test_integration.py -v -m integration

📚 Complete testing documentationtests/README.md

Security & Reference Files

For security reasons, files containing real device serial numbers are automatically ignored by git:

  • tests/reference_data/sensor_response.json
  • tests/reference_data/sprite_response.json

What's available for fresh clones:

  • ✅ Anonymized templates showing API structure (*_template.json)
  • ✅ Generation script to create real reference files when needed
  • ✅ All functionality works without these files - they're optional documentation

If you need the real reference files:

# Set your device serial numbers
export NETRO_SENS_SERIAL="your_sensor_serial" 
export NETRO_CTRL_SERIAL="your_controller_serial"

# Generate the files (will be ignored by git)
python tests/generate_references.py

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

pynetro-0.1.1.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

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

pynetro-0.1.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file pynetro-0.1.1.tar.gz.

File metadata

  • Download URL: pynetro-0.1.1.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for pynetro-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ee2d0564d7a37e4a234f0d62ff28e2fa9ff9c617426ca3757c3e1cf0a103b6af
MD5 46903405c7e7ed4782ca0457402ba273
BLAKE2b-256 86d0bef7934474a6738f21b38f617595246457812d1425aa5edbfccb98c52c91

See more details on using hashes here.

File details

Details for the file pynetro-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pynetro-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for pynetro-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f4dab9e05f6ef9ebb4a35c4a0a97a4402f6676c72d630d3e830e07fb12d47c37
MD5 001eb892aae099323360b55a6ac1cbf8
BLAKE2b-256 e673085e91014e8da0ec6856281d6ccba10948ef3ba6ca44a2782273321add94

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