Skip to main content

Datový model CITES

Knihovna Python s kompletním datovým modelem pro informační systém CITES (Convention on International Trade in Endangered Species).

Postaveno na Pydantic v2. Od verze 1.8.0 všechny třídy s atributy datetime dědí z GlobalModel — datum a čas je vždy ukládán v UTC.

Instalace

pip install cites-model

Nebo přímo z repozitáře:

pip install git+https://github.com/SYSNET-CZ/models.git#subdirectory=cites

Rychlý start

from cites_model import (
    CitesDocumentPrincipalType,
    GeneralType,
    PermitTypeEnum,
    IssuingType,
)
from datetime import datetime

doc = CitesDocumentPrincipalType(
    doc_code="DD01",
    document=GeneralType(
        id_no="24CZ123456",
        permit_type=PermitTypeEnum.EXPORT,
        date_valid=datetime(2025, 12, 31),   # naivní → automaticky UTC
    ),
    issuing=IssuingType(
        date_issued=datetime(2024, 6, 15, 10, 0),  # naivní → UTC
        issuing_authority="MŽP",
    ),
)
print(doc.document.date_valid)  # 2025-12-30T23:00:00+00:00  (UTC)

Struktura balíčku

cites_model/
├── __init__.py          # Veřejné API — 100+ exportů + __all__
├── cites_common.py      # Sdílené modely (osoby, zboží, workflow)
├── cites_document.py    # Povolení CITES (DD01–DD08)
├── cites_additional.py  # Doplňkové dokumenty
├── cites_reg_card.py    # Registrační karty (evidenční listy)
├── cites_statement.py   # Stanoviska k výjimkám (AOPK)
├── cites_taxon.py       # Taxony (druhy živočichů a rostlin)
├── cites_template.py    # Šablony dokumentů
├── cites_swin.py        # Integrace Single Window (celnictví)
├── customs_permit.py    # Celní výměna dat
└── traces.py            # Integrace TRACES NT (EU systém)

Moduly a třídy

cites_common — sdílené základní typy

Enumerace

Třída Popis
PermitTypeEnum IMPORT / EXPORT / RE-EXPORT / OTHER
MetricEnum NUMBER / WEIGHT / VOLUME / OTHER
BirthTypeEnum DATE / INTERVAL / MONTH / OTHER
CertifiedEnum Stupeň certifikace 1–7
CertifiedLegacyEnum Certifikace 1–8 (historické dokumenty)
ValidityEnum Platnost povolení 1–4
IssuingPurposeEnum Účel vydání 1–5
IssuingPurposeLegacyEnum Historický účel vydání 1–3
DeliveryEnum Osobně / poštou
CertificateTypeEnum LEG / COM / MOV
RegulationCitesEnum Přílohy CITES (I, II, III)
RegulationEuEnum Přílohy EU nařízení (A–D)
Regulation449Enum Zákon č. 449 (myslivost)
PublishedEnum Stav publikace
ThreeStateEnum Třístavový boolean
DocumentCodeEnum Kódy typů dokumentů (DD01–DD64)
AdditionalTypeEnum Typy doplňkových dokumentů
GoodsIdentificationChangeEnum N / CH / R
DiscardEnum D / E / OR
StatementRequestedEnum Stav žádosti o stanovisko
IntentEnum Účel výjimky
ExceptionTypeEnum Na transakci / na exemplář
AgreeKeyEnum, AgreeValueEnum Klíče a hodnoty souhlasu

Typy osob

Třída Základ Popis
PersonReducedType BaseModel Redukovaný model pro tisky a přehledy
PersonExtendedType PersonBaseType, GlobalModel Plný model (žadatel, vývozce, dovozce) — birthdate → UTC
PersonHistoryItemType PersonBaseType, GlobalModel Vlastník v čase — date_from, date_to → UTC
PhoneNumberType BaseModel Telefonní číslo s prefixem
MailAddressType BaseModel E-mailová adresa s názvem

Modely zboží

Třída Základ Popis
TaxonItemType BaseModel Druh — propojení s taxonem v číselníku
GoodsQuantityType BaseModel Množství s metrikou a jednotkami
GoodsIdetificationType BaseModel Identifikace exempláře (čip, kroužek…)
GoodsIdetificationHistoryItemType GoodsIdetificationType, GlobalModel Historie identifikace — date_valid_from, date_valid_to → UTC
GoodsBirthType GlobalModel Datum a místo narození — birth_date → UTC
GoodsItemBaseType BaseModel Základní položka zboží
GoodsPrincipalTypeWrite GoodsItemBaseType Zápisový model zboží povolení
GoodsPrincipalType GoodsPrincipalTypeWrite Čtecí model — load_dds() pro DDS/Lotus
GoodsOrderType BaseModel Pořadí zboží v povolení
GoodsRequestType GlobalModel Žádost o zboží — date_import → UTC

Modely dokumentu

Třída Základ Popis
GeneralType GlobalModel Hlavička dokumentu — date_acquired, date_delivered, date_valid, date_valid_from → UTC
TransactionType GlobalModel Transakce (původ, dovoz, reexport) — date_issued, date_realized, date_canceled → UTC
IssuingType GlobalModel Vydavatel — date_issued → UTC
ConditionsType BaseModel Podmínky vydání
ConditionsLegacyType BaseModel Podmínky pro historické DD64
OtherType GlobalModel Ostatní údaje — date_statement → UTC
PermitStatusValidityType GlobalModel Stavová platnost EU-CITES — date → UTC
PermitStatusIntroductionType GlobalModel Uvedení na trh EU — date → UTC
PermitStatusType BaseModel Stavová informace EU-CITES
PermitStatusExtendedType PermitStatusType Rozšířená stavová informace
PermitSpecialConditionsType BaseModel Zvláštní podmínky povolení
DocumentPrincipalCustomsPermitType GlobalModel Celní údaje povolení — date_customs, date_returned → UTC
DocumentPrincipalCustomsGoodsType GlobalModel Celní údaje zboží — date_customs → UTC
RelatedType BaseModel Odkaz na související dokument
WorkflowCitesType WorkflowType Uzel životního cyklu
WorkflowListType BaseListType Historie životního cyklu dokumentu

cites_document — povolení CITES

Třída Popis
CitesDocumentPrincipalTypeWrite Zápisový model povolení
CitesDocumentPrincipalType Čtecí model povolení + computed properties
CitesDocumentEntryListType Seznam povolení pro přehledy

cites_additional — doplňkové dokumenty

Třída Základ Popis
CitesDocumentAdditionalTypeWrite GlobalModel Zápisový model — date_delivered, date_checkout, date_sold → UTC
CitesDocumentAdditionalType CitesDocumentAdditionalTypeWrite Čtecí model
CitesDocumentAdditionalEntryListType BaseEntryListType Seznam doplňkových dokumentů

cites_reg_card — registrační karty

Třída Popis
CitesDocumentRegistrationCardTypeWrite Zápisový model evidenčního listu
CitesDocumentRegistrationCardType Čtecí model evidenčního listu

cites_statement — stanoviska AOPK

Třída Základ Popis
SpecimenParentType GoodsItemBaseType Rodičovský exemplář
SpecimenType GoodsItemBaseType Exemplář v žádosti o stanovisko
StatementCertificateType StatementCertificateCommonsType, GlobalModel Stanovisko k výjimce — date_valid → UTC
StatementCertificateComplementType GlobalModel Doplněk stanoviska — date_valid → UTC
StatementDocumentCertificateRequestType — Žádost o stanovisko k výjimce
StatementDocumentCertificateType — Dokument stanoviska k výjimce
StatementDocumentPermitType — Stanovisko k permitu

cites_taxon — taxony

Třída Popis
TaxonEntryType Položka taxonu (vědecký a obecný název, přílohy)
TaxonType Plný model taxonu (taxonomická hierarchie)
TaxonEntryListType Seznam taxonů pro číselníky

cites_template — šablony dokumentů

Třída Popis
TemplateTypeEnum Typy šablon
TemplateBaseType Základní model šablony
TemplateFullType Plný model šablony

customs_permit — celní výměna

Třída Základ Popis
CustomsExchangeCitesPermitType GlobalModel Model povolení pro celní systém — date_created, date_modified → UTC
CustomsExchangeCitesGoodsType GlobalModel Model zboží pro celní systém — date_created, date_modified → UTC

Konverzní metody load_production() mapují CitesDocumentPrincipalType → CustomsExchangeCitesPermitType.

cites_swin — Single Window

Třída Popis
SingleWindowType Celní Single Window data

traces — TRACES NT integrace

Třída Popis
TracesLogType Záznam pro TRACES NT systém EU

Zpracování data a času (od verze 1.8.0)

Všechny třídy s atributy datetime dědí z GlobalModel (sysnet_pyutils.globalmodel.GlobalModel).

GlobalModel zajišťuje jednotnou normalizaci při každém přiřazení hodnoty:

Vstup Výstup
Naivní datetime (bez tzinfo) Považován za Europe/Prague, převeden do UTC
datetime s tzinfo (např. CEST +02:00) Převeden do UTC
datetime již v UTC Beze změny
None Propuštěn beze změny
from cites_model import GeneralType
from datetime import datetime

# Naivní datetime — automaticky Europe/Prague → UTC
g = GeneralType(date_valid=datetime(2025, 6, 15, 12, 0))
print(g.date_valid)  # 2025-06-15T10:00:00+00:00

Závislosti

pydantic[email] >= 2.11.3
sysnet-pyutils  >= 1.7.4
typing-extensions >= 4

Testování

# Unit testy (bez API)
cd D:\development\git\models\cites
.venv\Scripts\python.exe -m pytest tests/ -m "not integration" -v

# Vč. integračních (vyžaduje .env s CITES_DOCS_API_KEY)
.venv\Scripts\python.exe -m pytest tests/ -v

Testovací soubory:

Soubor Testy Pokrytí
test_enums.py 13 Enumerace, PhoneNumberType, MailAddressType, TransportType
test_cites_common.py 19 PersonReducedType, GoodsPrincipalType, CountryHelpers
test_documents.py 11 CitesDocumentPrincipalType, Additional, RegistrationCard
test_customs_permit.py 4 CustomsExchangeCitesPermitType, load_production
test_statement_taxon.py 17 SpecimenType, StatementTypes, TaxonEntryType
test_integration.py 9 JSON roundtrip, fetch_cites_docs() mock
test_globalmodel_datetime.py 24 Normalizace datetime ve všech třídách s GlobalModel

Historie verzí

Verze 1.8.0

Migrace na GlobalModel — správné ukládání data a času.

Všechny třídy s atributy datetime nyní dědí z GlobalModel (místo BaseModel). Naivní datetime je automaticky lokalizován jako Europe/Prague a převeden do UTC před uložením.

Migrované třídy (18 tříd ve 4 souborech):

  • cites_common.py (13): PersonExtendedType, PersonHistoryItemType, GeneralType, TransactionType, IssuingType, PermitStatusValidityType, PermitStatusIntroductionType, OtherType, DocumentPrincipalCustomsPermitType, GoodsIdetificationHistoryItemType, GoodsBirthType, GoodsRequestType, DocumentPrincipalCustomsGoodsType
  • cites_additional.py (1): CitesDocumentAdditionalTypeWrite
  • cites_statement.py (2): StatementCertificateType, StatementCertificateComplementType
  • customs_permit.py (2): CustomsExchangeCitesPermitType, CustomsExchangeCitesGoodsType

Přidán testovací soubor tests/test_globalmodel_datetime.py (24 testů). Celkem 106 testů passing.

Poslední verze s BaseModel jako základem je 1.7.28.

Verze 1.7.27 a starší

Viz docs/dev_diary.md pro podrobný přehled změn v předchozích verzích.

Stručný přehled:

Verze Přidáno
1.7.18 ConditionsLegacyType, kód DD64
1.7.4 statement_request, date_statement, related_permit v OtherType
1.7 e_permit_purpose, e_permit_status v OtherType
1.6 Balíček cites_statement (stanoviska AOPK)
1.5.9 sysnet-pyutils >= 1.3.10, MetadataTypeBase.comment
1.5 Atribut history v hlavních dokumentech a zboží
1.4 Balíček customs_permit (celní výměna)
1.3.5 Přesun do repozitáře SYSNET-CZ/models
1.3.3 TaxonType.is_active, ThreeStateEnum
1.3 Balíček cites_additional
1.2 Balíček cites_template
1.1 Balíček cites_taxon, enumerace regulací
1.0 Základní modely (osoby, zboží, povolení, workflow)

Licence

Free For Home Use — viz soubor LICENSE.md.

Metadata

Release files for cites-model 1.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cites-model 1.8.0
File Size Uploaded Provenance Actions
cites_model-1.8.0.tar.gz 80.5 kB Without provenance Details for cites_model-1.8.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cites-model 1.8.0
File Interpreter ABI Platform Actions
cites_model-1.8.0-py3-none-any.whl Python 3 none any Details for cites_model-1.8.0-py3-none-any.whl

Total release size: 142.8 kB

Release files / cites_model-1.8.0.tar.gz

Download URL cites_model-1.8.0.tar.gz
Size 80.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8323cb4dda514037331663e59ac6d3d3c6b6be03c59336742f958c47a65a1610
BLAKE2b-256 checksum
How to use checksums
cee85b10eaec5c164686d18b626d0772cc8ae02af80e9bd492f02b2cbd86f48b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.8

Release files / cites_model-1.8.0-py3-none-any.whl

Download URL cites_model-1.8.0-py3-none-any.whl
Size 62.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ee982c635df88991c08332698e1c6f19e36bfae12053da80a64aa2b07d42e437
BLAKE2b-256 checksum
How to use checksums
5ca8b4fef7b8c0ef6ab72f81a4b438cb3286546b76156d3a4c385cf4cf916294
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.8

Security for cites-model 1.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.8.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page