Skip to main content

Common utilities and shared code for PRS microservices

Project description

PRS Commons

PyPI Version Python Versions License: MIT Downloads

A Python library containing common utilities and shared code for PRS microservices, including a high-level Odoo RPC client.

📖 Documentation | 🐛 Issue Tracker | 📦 PyPI

Features

  • AWS S3 Integration: Async S3 client for file operations
  • PostgreSQL Client: Async PostgreSQL client with connection pooling
  • Odoo RPC Client: High-level client for interacting with Odoo's XML-RPC API
  • Type Annotations: Full type hints for better IDE support
  • Environment Variable Support: Easy configuration via .env files
  • Async/Await Support: Built with modern Python async/await syntax

Installation

From PyPI (Recommended)

pip install prs-commons

From Source (Development Only)

For development or contributing to the project:

For development, clone and install in editable mode:

git clone https://<token>@github.com/IshaFoundationIT/prs-facade-common.git
cd prs-facade-common
pip install -e ".[dev]"  # Install with development dependencies

From Private Package Repository

Add your private package repository to pip configuration and install:

# Configure pip to use your private repository
pip config set global.extra-index-url https://your.private.registry.com/simple/

# Install the package
pip install prs-commons

Quick Start

Odoo RPC Client

from prs_commons.odoo.rpc_client import OdooRPClient
from dotenv import load_dotenv

# Initialize the client (singleton)
client = OdooRPClient()

# Search for records
try:
    # Search for active partners
    domain = [('is_company', '=', True), ('active', '=', True)]
    fields = ['id', 'name', 'email']
    partners = client.search_read('res.partner', domain, fields=fields)

    # Create a new record
    new_partner_id = client.create_record('res.partner', {
        'name': 'John Doe',
        'email': 'john@example.com',
        'is_company': False
    })

    # Update a record
    client.write_record('res.partner', [new_partner_id], {
        'email': 'john.doe@example.com'
    })

except Exception as e:
    print(f"Error: {e}")

Configuration

Create a .env file in your project root:

ODOO_HOST=your-odoo-host.com
ODOO_DB=your_database
ODOO_LOGIN=your_email@example.com
ODOO_PASSWORD=your_password

Documentation

For full documentation, please see the API Reference.

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

Development

Prerequisites

  • Python 3.11+
  • Poetry (recommended) or pip

Setup

  1. Clone the repository:

    git clone https://<token>@github.com/IshaFoundationIT/prs-facade-common.git
    cd prs-facade-common
    
  2. Install dependencies:

    # Using Poetry
    poetry install --with dev
    
    # Or using pip
    pip install -e ".[dev]"
    
  3. Install pre-commit hooks:

    pre-commit install
    

Running Tests

# Run all tests
pytest

# Run with coverage report
pytest --cov=prs_commons --cov-report=term-missing

Publishing New Versions

Prerequisites

  1. Set up your ~/.pypirc file with your GitHub token:

    [distutils]
    index-servers =
        github
    
    [github]
    repository = https://upload.pypi.org/legacy/
    username = __token__
    password = your_github_token_here
    

    Replace your_github_token_here with a GitHub Personal Access Token with write:packages scope.

  2. Update the version in pyproject.toml

  3. Build the package:

    python -m build
    
  4. Publish to GitHub Package Registry:

    python -m twine upload --repository github dist/*
    

Contributing

  1. Create a feature branch
  2. Make your changes
  3. Run tests and pre-commit checks
  4. Submit a pull request

License

MIT

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

prs_commons-0.2.7.tar.gz (8.2 MB view details)

Uploaded Source

Built Distribution

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

prs_commons-0.2.7-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file prs_commons-0.2.7.tar.gz.

File metadata

  • Download URL: prs_commons-0.2.7.tar.gz
  • Upload date:
  • Size: 8.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.10

File hashes

Hashes for prs_commons-0.2.7.tar.gz
Algorithm Hash digest
SHA256 ce4937bfd529d7b33567fd376d2b6c783af7debd995b30df848b9059ef34ed19
MD5 dc96d66a0cf4ee7eab8ce0b6c6d0692d
BLAKE2b-256 2923605d392959ea115e9b0698a8bb25708d9769cfb7cc07d9a58756b859fec8

See more details on using hashes here.

File details

Details for the file prs_commons-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: prs_commons-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.10

File hashes

Hashes for prs_commons-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 cbc3348ac10f3db65c26a806d764e496632d5672e3569261b78b0636c62a08d6
MD5 946f28e99d550bc9f1fdb7da1c385e83
BLAKE2b-256 75776bebf078c38e09760aa75747e1a1dc202b9540cc1eec9c9ca6b95ec091bf

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