Skip to main content

Pydantic schemas and repository interfaces for invoice management

Project description

Pydantic Invoices

Type-safe Pydantic schemas and repository interfaces for invoice management systems.

Installation

pip install pydantic-invoices
# or
uv add pydantic-invoices

Usage

Using Schemas

from pydantic_invoices import Invoice, InvoiceCreate, Client, ClientCreate
from pydantic_invoices.schemas import InvoiceStatus, InvoiceType
from datetime import datetime

# Create invoice data
invoice_data = InvoiceCreate(
    number="INV-001",
    client_id=1,
    company_id=1,
    issue_date=datetime.now(),
    due_date=datetime.now(),
    status=InvoiceStatus.DRAFT,
    type=InvoiceType.STANDARD,
    payment_terms="Net 30",
    lines=[],
)

# Validate and use
invoice = Invoice(id=1, **invoice_data.model_dump())

Invoice Statuses & Types

The library supports a strict state machine workflow:

  • Statuses: DRAFT, SENT, PAID, PARTIALLY_PAID, CANCELLED, REFUNDED, CREDITED.
  • Types: STANDARD, CREDIT_NOTE.
  • Linking: Credit Notes can be linked to original invoices via original_invoice_id.

Implementing Repository Interfaces

from pydantic_invoices.interfaces import InvoiceRepository, ClientRepository
from pydantic_invoices import Invoice, InvoiceCreate, Client

class MyInvoiceRepo(InvoiceRepository):
    def create(self, entity: InvoiceCreate) -> Invoice:
        # Your implementation
        pass
    
    def get_by_id(self, id: int) -> Invoice | None:
        # Your implementation
        pass
    
    # ... implement other methods

Architecture

See System Diagram for a visual overview of the entities and their relationships.

Features

  • ✅ Type-safe Pydantic v2 schemas
  • ✅ Repository pattern interfaces
  • ✅ No implementation dependencies
  • ✅ Fully typed with mypy support
  • ✅ Clean separation of concerns
  • ✅ Support for Credit Notes and Strict Lifecycle

Schemas Included

  • Invoice, InvoiceCreate, InvoiceUpdate
  • InvoiceLine, InvoiceLineCreate
  • Client, ClientCreate, ClientUpdate
  • Payment, PaymentCreate
  • Company, CompanyCreate, CompanyUpdate
  • Product, ProductCreate, ProductUpdate
  • PaymentNote, PaymentNoteCreate, PaymentNoteUpdate
  • AuditLog

Interfaces Included

  • BaseRepository - Generic CRUD operations
  • InvoiceRepository - Invoice-specific operations
  • ClientRepository - Client management
  • PaymentRepository - Payment tracking
  • CompanyRepository - Company management
  • ProductRepository - Product catalog
  • PaymentNoteRepository - Payment instructions

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

pydantic_invoices-1.3.2.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

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

pydantic_invoices-1.3.2-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_invoices-1.3.2.tar.gz.

File metadata

  • Download URL: pydantic_invoices-1.3.2.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pydantic_invoices-1.3.2.tar.gz
Algorithm Hash digest
SHA256 29971d845016b0c5d8aa68c299a29ab33ef2b19d807d20a767bb830e1852c287
MD5 3dba8311d1613081067b3aa8cf04babd
BLAKE2b-256 1fd76a250b3cc7faef0242c657668f2417d2d95f1b8ea89545dc881f7fa3a250

See more details on using hashes here.

File details

Details for the file pydantic_invoices-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: pydantic_invoices-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pydantic_invoices-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 24af12b7d685d616ea4871cb4a07a5ad1c84993da0d46e68405e66f6b1923ffc
MD5 7f6dac5bf30c13e802f36b10620db88d
BLAKE2b-256 8725f1150ac8f8f8330ffea675a39de7613d978c2558acb072bd0e6e44caf865

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