value-object-pattern 1.22.1__tar.gz → 1.24.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/PKG-INFO +1 -1
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/base_model.py +34 -2
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/collections/dict_value_object.py +54 -1
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/value_object.py +32 -2
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/__init__.py +2 -0
- value_object_pattern-1.24.0/value_object_pattern/usables/identifiers/strict_string_identifier_value_object.py +45 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +1 -3
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/.gitignore +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/LICENSE.md +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/README.md +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/pyproject.toml +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/classproperty.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/collections/list_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/utils/__init__.py +0 -0
- {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/utils/luhn_validation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: value-object-pattern
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.24.0
|
|
4
4
|
Summary: The Value Object Pattern is a Python package that streamlines the creation and management of value objects in your projects.
|
|
5
5
|
Project-URL: Homepage, https://github.com/adriamontoto/value-object-pattern
|
|
6
6
|
Project-URL: Repository, https://github.com/adriamontoto/value-object-pattern
|
|
@@ -242,7 +242,23 @@ class BaseModel(ABC):
|
|
|
242
242
|
|
|
243
243
|
Example:
|
|
244
244
|
```python
|
|
245
|
-
|
|
245
|
+
from copy import copy
|
|
246
|
+
|
|
247
|
+
from value_object_pattern import BaseModel
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
class User(BaseModel):
|
|
251
|
+
def __init__(self, tags: list[str]) -> None:
|
|
252
|
+
self.tags = tags
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
user = User(tags=['admin'])
|
|
256
|
+
clone = copy(user)
|
|
257
|
+
|
|
258
|
+
print(clone is user)
|
|
259
|
+
print(clone.tags is user.tags)
|
|
260
|
+
# >>> False
|
|
261
|
+
# >>> True
|
|
246
262
|
```
|
|
247
263
|
"""
|
|
248
264
|
cls = self.__class__
|
|
@@ -264,7 +280,23 @@ class BaseModel(ABC):
|
|
|
264
280
|
|
|
265
281
|
Example:
|
|
266
282
|
```python
|
|
267
|
-
|
|
283
|
+
from copy import deepcopy
|
|
284
|
+
|
|
285
|
+
from value_object_pattern import BaseModel
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
class User(BaseModel):
|
|
289
|
+
def __init__(self, tags: list[str]) -> None:
|
|
290
|
+
self.tags = tags
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
user = User(tags=['admin'])
|
|
294
|
+
clone = deepcopy(user)
|
|
295
|
+
|
|
296
|
+
print(clone is user)
|
|
297
|
+
print(clone.tags is user.tags)
|
|
298
|
+
# >>> False
|
|
299
|
+
# >>> False
|
|
268
300
|
```
|
|
269
301
|
"""
|
|
270
302
|
if id(self) in memo:
|
|
@@ -15,7 +15,7 @@ from collections.abc import Iterator
|
|
|
15
15
|
from enum import Enum
|
|
16
16
|
from inspect import isclass
|
|
17
17
|
from types import UnionType
|
|
18
|
-
from typing import Any, Generic, ItemsView, KeysView, NoReturn, TypeVar, Union, ValuesView, get_args, get_origin
|
|
18
|
+
from typing import Any, Generic, ItemsView, KeysView, NoReturn, Self, TypeVar, Union, ValuesView, get_args, get_origin
|
|
19
19
|
|
|
20
20
|
from value_object_pattern.decorators import validation
|
|
21
21
|
from value_object_pattern.models import BaseModel, ValueObject
|
|
@@ -525,6 +525,59 @@ class DictValueObject(ValueObject[dict[K, V]], Generic[K, V]): # noqa: UP046
|
|
|
525
525
|
|
|
526
526
|
return str(type).replace('typing.', '')
|
|
527
527
|
|
|
528
|
+
@classmethod
|
|
529
|
+
def from_primitives(cls, value: dict[Any, Any]) -> Self:
|
|
530
|
+
"""
|
|
531
|
+
Creates a DictValueObject from a dictionary of primitives.
|
|
532
|
+
|
|
533
|
+
Args:
|
|
534
|
+
value (dict[Any, Any]): The dictionary of primitives.
|
|
535
|
+
|
|
536
|
+
Returns:
|
|
537
|
+
Self: The created DictValueObject.
|
|
538
|
+
"""
|
|
539
|
+
items: dict[Any, Any] = {}
|
|
540
|
+
|
|
541
|
+
for key, item in value.items():
|
|
542
|
+
primitive_key = cls._convert_from_primitives(value=key, expected_type=cls._key_type)
|
|
543
|
+
primitive_value = cls._convert_from_primitives(value=item, expected_type=cls._value_type)
|
|
544
|
+
items[primitive_key] = primitive_value
|
|
545
|
+
|
|
546
|
+
return cls(value=items)
|
|
547
|
+
|
|
548
|
+
@classmethod
|
|
549
|
+
def _convert_from_primitives(cls, *, value: Any, expected_type: Any) -> Any:
|
|
550
|
+
"""
|
|
551
|
+
Converts a primitive value to the expected type.
|
|
552
|
+
|
|
553
|
+
Args:
|
|
554
|
+
value (Any): The primitive value to convert.
|
|
555
|
+
expected_type (Any): The expected type.
|
|
556
|
+
|
|
557
|
+
Returns:
|
|
558
|
+
Any: The converted value.
|
|
559
|
+
"""
|
|
560
|
+
if expected_type is Any:
|
|
561
|
+
return value
|
|
562
|
+
|
|
563
|
+
origin = get_origin(tp=expected_type)
|
|
564
|
+
if origin in (Union, UnionType):
|
|
565
|
+
return value
|
|
566
|
+
|
|
567
|
+
if hasattr(expected_type, 'from_primitives'):
|
|
568
|
+
return expected_type.from_primitives(value)
|
|
569
|
+
|
|
570
|
+
if isclass(expected_type) and issubclass(expected_type, Enum):
|
|
571
|
+
if isinstance(value, expected_type):
|
|
572
|
+
return value
|
|
573
|
+
|
|
574
|
+
return expected_type(value)
|
|
575
|
+
|
|
576
|
+
if hasattr(expected_type, 'value'):
|
|
577
|
+
return expected_type(value=value)
|
|
578
|
+
|
|
579
|
+
return value
|
|
580
|
+
|
|
528
581
|
def to_primitives(self) -> dict[Any, Any]: # noqa: C901
|
|
529
582
|
"""
|
|
530
583
|
Returns the dictionary as a dictionary of primitives, recursively converting each key and value.
|
|
@@ -256,7 +256,22 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
256
256
|
|
|
257
257
|
Example:
|
|
258
258
|
```python
|
|
259
|
-
|
|
259
|
+
from copy import copy
|
|
260
|
+
|
|
261
|
+
from value_object_pattern import ValueObject
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
class IntegerValueObject(ValueObject[int]):
|
|
265
|
+
pass
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
value_object = IntegerValueObject(value=7)
|
|
269
|
+
clone = copy(value_object)
|
|
270
|
+
|
|
271
|
+
print(clone is value_object)
|
|
272
|
+
print(clone == value_object)
|
|
273
|
+
# >>> False
|
|
274
|
+
# >>> True
|
|
260
275
|
```
|
|
261
276
|
"""
|
|
262
277
|
return self.__class__(
|
|
@@ -277,7 +292,22 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
277
292
|
|
|
278
293
|
Example:
|
|
279
294
|
```python
|
|
280
|
-
|
|
295
|
+
from copy import deepcopy
|
|
296
|
+
|
|
297
|
+
from value_object_pattern import ValueObject
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
class ListValueObject(ValueObject[list[int]]):
|
|
301
|
+
pass
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
value_object = ListValueObject(value=[1, 2])
|
|
305
|
+
clone = deepcopy(value_object)
|
|
306
|
+
|
|
307
|
+
print(clone is value_object)
|
|
308
|
+
print(clone.value is value_object.value)
|
|
309
|
+
# >>> False
|
|
310
|
+
# >>> False
|
|
281
311
|
```
|
|
282
312
|
"""
|
|
283
313
|
if id(self) in memo:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from .strict_string_identifier_value_object import StrictStringIdentifierValueObject
|
|
1
2
|
from .uuid import (
|
|
2
3
|
StringUuidV1ValueObject,
|
|
3
4
|
StringUuidV3ValueObject,
|
|
@@ -18,6 +19,7 @@ from .uuid import (
|
|
|
18
19
|
)
|
|
19
20
|
|
|
20
21
|
__all__ = (
|
|
22
|
+
'StrictStringIdentifierValueObject',
|
|
21
23
|
'StringUuidV1ValueObject',
|
|
22
24
|
'StringUuidV3ValueObject',
|
|
23
25
|
'StringUuidV4ValueObject',
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""
|
|
2
|
+
StrictStringIdentifierValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from re import Pattern, compile as re_compile
|
|
6
|
+
from typing import NoReturn
|
|
7
|
+
|
|
8
|
+
from value_object_pattern.decorators import validation
|
|
9
|
+
from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class StrictStringIdentifierValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
13
|
+
"""
|
|
14
|
+
StrictStringIdentifierValueObject ensures the provided value is a strict identifier string.
|
|
15
|
+
|
|
16
|
+
The allowed characters are lower-case letters (`a-z`), digits (`0-9`), and hyphen (`-`).
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
_VALIDATION_REGEX: Pattern[str] = re_compile(pattern=r'[a-z0-9-]+')
|
|
20
|
+
|
|
21
|
+
@validation(order=0)
|
|
22
|
+
def _ensure_value_follows_validation_regex(self, value: str) -> None:
|
|
23
|
+
"""
|
|
24
|
+
Ensures the value object `value` only contains allowed characters.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
value (str): The provided value.
|
|
28
|
+
|
|
29
|
+
Raises:
|
|
30
|
+
ValueError: If the `value` contains disallowed characters.
|
|
31
|
+
"""
|
|
32
|
+
if not self._VALIDATION_REGEX.fullmatch(string=value):
|
|
33
|
+
self._raise_value_contains_invalid_characters(value=value)
|
|
34
|
+
|
|
35
|
+
def _raise_value_contains_invalid_characters(self, value: str) -> NoReturn:
|
|
36
|
+
"""
|
|
37
|
+
Raises a ValueError if the value object `value` contains invalid characters.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
value (str): The provided value.
|
|
41
|
+
|
|
42
|
+
Raises:
|
|
43
|
+
ValueError: If the `value` contains invalid characters.
|
|
44
|
+
"""
|
|
45
|
+
raise ValueError(f'StrictStringIdentifierValueObject value <<<{value}>>> contains invalid characters. Only a-z, 0-9, and - are allowed.') # noqa: E501 # fmt: skip
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# This file was automatically updated using "update_lists.py" on
|
|
1
|
+
# This file was automatically updated using "update_lists.py" on 2026-02-15T03:55:23.881612+00:00
|
|
2
2
|
|
|
3
3
|
aaa
|
|
4
4
|
aarp
|
|
@@ -487,7 +487,6 @@ godaddy
|
|
|
487
487
|
gold
|
|
488
488
|
goldpoint
|
|
489
489
|
golf
|
|
490
|
-
goo
|
|
491
490
|
goodyear
|
|
492
491
|
goog
|
|
493
492
|
google
|
|
@@ -1251,7 +1250,6 @@ windows
|
|
|
1251
1250
|
wine
|
|
1252
1251
|
winners
|
|
1253
1252
|
wme
|
|
1254
|
-
wolterskluwer
|
|
1255
1253
|
woodside
|
|
1256
1254
|
work
|
|
1257
1255
|
works
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|