value-object-pattern 1.15.1__tar.gz → 1.17.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.15.1 → value_object_pattern-1.17.0}/PKG-INFO +1 -1
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/models/base_model.py +3 -3
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/models/collections/list_value_object.py +325 -7
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/__init__.py +37 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/__init__.py +35 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +52 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +52 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +4 -5
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +52 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +53 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +52 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +54 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +3 -4
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +53 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +53 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +1 -2
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +53 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +53 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +53 -0
- value_object_pattern-1.17.0/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +53 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +2 -3
- value_object_pattern-1.15.1/value_object_pattern/usables/identifiers/__init__.py +0 -13
- value_object_pattern-1.15.1/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -11
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/.gitignore +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/LICENSE.md +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/README.md +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/pyproject.toml +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/decorators/classproperty.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/models/value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.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.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.0}/value_object_pattern/usables/utils/__init__.py +0 -0
- {value_object_pattern-1.15.1 → value_object_pattern-1.17.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.17.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
|
|
@@ -15,7 +15,7 @@ from abc import ABC, abstractmethod
|
|
|
15
15
|
from copy import deepcopy
|
|
16
16
|
from enum import Enum
|
|
17
17
|
from inspect import Parameter, _empty, signature
|
|
18
|
-
from typing import Any, NoReturn
|
|
18
|
+
from typing import Any, NoReturn
|
|
19
19
|
|
|
20
20
|
from .value_object import ValueObject
|
|
21
21
|
|
|
@@ -307,7 +307,7 @@ class BaseModel(ABC):
|
|
|
307
307
|
return dictionary
|
|
308
308
|
|
|
309
309
|
@classmethod
|
|
310
|
-
def from_primitives(cls, primitives: dict[str, Any]) ->
|
|
310
|
+
def from_primitives(cls, primitives: dict[str, Any]) -> BaseModel:
|
|
311
311
|
"""
|
|
312
312
|
Create an instance of the class with a dictionary of its primitives.
|
|
313
313
|
|
|
@@ -319,7 +319,7 @@ class BaseModel(ABC):
|
|
|
319
319
|
ValueError: If the `primitives` does not have all the required attributes.
|
|
320
320
|
|
|
321
321
|
Returns:
|
|
322
|
-
|
|
322
|
+
BaseModel: Instance of the class.
|
|
323
323
|
|
|
324
324
|
Example:
|
|
325
325
|
```python
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
ListValueObject module.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
from sys import version_info
|
|
6
8
|
|
|
7
9
|
if version_info >= (3, 12):
|
|
@@ -12,7 +14,7 @@ else:
|
|
|
12
14
|
from collections.abc import Iterator
|
|
13
15
|
from enum import Enum
|
|
14
16
|
from inspect import isclass
|
|
15
|
-
from typing import Any, Generic, NoReturn,
|
|
17
|
+
from typing import Any, Generic, NoReturn, TypeVar, get_args, get_origin
|
|
16
18
|
|
|
17
19
|
from value_object_pattern.decorators import validation
|
|
18
20
|
from value_object_pattern.models import BaseModel, ValueObject
|
|
@@ -350,8 +352,324 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
|
|
|
350
352
|
"""
|
|
351
353
|
return not self._value
|
|
352
354
|
|
|
355
|
+
def add(self, *, item: T) -> ListValueObject[T]:
|
|
356
|
+
"""
|
|
357
|
+
Returns a new ListValueObject with the item added to the end.
|
|
358
|
+
|
|
359
|
+
Args:
|
|
360
|
+
item (T): The item to add.
|
|
361
|
+
|
|
362
|
+
Returns:
|
|
363
|
+
ListValueObject[T]: A new ListValueObject with the item added.
|
|
364
|
+
|
|
365
|
+
Example:
|
|
366
|
+
```python
|
|
367
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
class IntListValueObject(ListValueObject[int]):
|
|
371
|
+
pass
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
sequence = IntListValueObject(value=[1, 2, 3])
|
|
375
|
+
new_sequence = sequence.add(item=4)
|
|
376
|
+
print(new_sequence)
|
|
377
|
+
print(id(sequence) == id(new_sequence))
|
|
378
|
+
# >>> [1, 2, 3, 4]
|
|
379
|
+
# >>> False
|
|
380
|
+
```
|
|
381
|
+
"""
|
|
382
|
+
return self.__class__(value=[*self._value, item])
|
|
383
|
+
|
|
384
|
+
def add_from_primitives(self, *, item: Any) -> ListValueObject[T]:
|
|
385
|
+
"""
|
|
386
|
+
Returns a new ListValueObject with the item created from a primitives added to the end.
|
|
387
|
+
|
|
388
|
+
Args:
|
|
389
|
+
item (Any): The primitives item to convert and add.
|
|
390
|
+
|
|
391
|
+
Returns:
|
|
392
|
+
ListValueObject[T]: A new ListValueObject with the item added.
|
|
393
|
+
|
|
394
|
+
Example:
|
|
395
|
+
```python
|
|
396
|
+
from value_object_pattern.models import ValueObject
|
|
397
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
class Age(ValueObject[int]):
|
|
401
|
+
pass
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
class AgeListValueObject(ListValueObject[Age]):
|
|
405
|
+
pass
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
sequence = AgeListValueObject(value=[Age(value=10), Age(value=20)])
|
|
409
|
+
new_sequence = sequence.add_from_primitives(item=30)
|
|
410
|
+
print(new_sequence)
|
|
411
|
+
print(id(sequence) == id(new_sequence))
|
|
412
|
+
# >>> [10, 20, 30]
|
|
413
|
+
# >>> False
|
|
414
|
+
```
|
|
415
|
+
"""
|
|
416
|
+
item = self._convert_from_primitives(value=item)
|
|
417
|
+
|
|
418
|
+
return self.add(item=item)
|
|
419
|
+
|
|
420
|
+
def extend(self, *, items: list[T]) -> ListValueObject[T]:
|
|
421
|
+
"""
|
|
422
|
+
Returns a new ListValueObject with multiple items added to the end.
|
|
423
|
+
|
|
424
|
+
Args:
|
|
425
|
+
items (list[T]): The items to add.
|
|
426
|
+
|
|
427
|
+
Returns:
|
|
428
|
+
ListValueObject[T]: A new ListValueObject with the items added.
|
|
429
|
+
|
|
430
|
+
Example:
|
|
431
|
+
```python
|
|
432
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
class IntListValueObject(ListValueObject[int]):
|
|
436
|
+
pass
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
sequence = IntListValueObject(value=[1, 2, 3])
|
|
440
|
+
new_sequence = sequence.extend(items=[4, 5, 6])
|
|
441
|
+
print(new_sequence)
|
|
442
|
+
print(id(sequence) == id(new_sequence))
|
|
443
|
+
# >>> [1, 2, 3, 4, 5, 6]
|
|
444
|
+
# >>> False
|
|
445
|
+
```
|
|
446
|
+
"""
|
|
447
|
+
return self.__class__(value=self._value + items)
|
|
448
|
+
|
|
449
|
+
def extend_from_primitives(self, *, items: list[Any]) -> ListValueObject[T]:
|
|
450
|
+
"""
|
|
451
|
+
Returns a new ListValueObject with multiple items created from primitives added to the end.
|
|
452
|
+
|
|
453
|
+
Args:
|
|
454
|
+
items (list[Any]): The primitive items to convert and add.
|
|
455
|
+
|
|
456
|
+
Returns:
|
|
457
|
+
ListValueObject[T]: A new ListValueObject with the items added.
|
|
458
|
+
|
|
459
|
+
Example:
|
|
460
|
+
```python
|
|
461
|
+
from value_object_pattern.models import ValueObject
|
|
462
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
class Age(ValueObject[int]):
|
|
466
|
+
pass
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
class AgeListValueObject(ListValueObject[Age]):
|
|
470
|
+
pass
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
sequence = AgeListValueObject(value=[Age(value=10)])
|
|
474
|
+
new_sequence = sequence.extend_from_primitives(items=[20, 30])
|
|
475
|
+
print(new_sequence)
|
|
476
|
+
print(id(sequence) == id(new_sequence))
|
|
477
|
+
# >>> [10, 20, 30]
|
|
478
|
+
# >>> False
|
|
479
|
+
```
|
|
480
|
+
"""
|
|
481
|
+
items = [self._convert_from_primitives(value=item) for item in items]
|
|
482
|
+
|
|
483
|
+
return self.extend(items=items)
|
|
484
|
+
|
|
485
|
+
def delete(self, *, item: T) -> ListValueObject[T]:
|
|
486
|
+
"""
|
|
487
|
+
Returns a new ListValueObject with the first occurrence of the item deleted.
|
|
488
|
+
|
|
489
|
+
Args:
|
|
490
|
+
item (T): The item to delete.
|
|
491
|
+
|
|
492
|
+
Raises:
|
|
493
|
+
ValueError: If the item is not in the list.
|
|
494
|
+
|
|
495
|
+
Returns:
|
|
496
|
+
ListValueObject[T]: A new ListValueObject with the item deleted.
|
|
497
|
+
|
|
498
|
+
Example:
|
|
499
|
+
```python
|
|
500
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
class IntListValueObject(ListValueObject[int]):
|
|
504
|
+
pass
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
sequence = IntListValueObject(value=[1, 2, 3, 2])
|
|
508
|
+
new_sequence = sequence.delete(item=2)
|
|
509
|
+
print(new_sequence)
|
|
510
|
+
print(id(sequence) == id(new_sequence))
|
|
511
|
+
# >>> [1, 3, 2]
|
|
512
|
+
# >>> False
|
|
513
|
+
```
|
|
514
|
+
"""
|
|
515
|
+
items = self._value.copy()
|
|
516
|
+
|
|
517
|
+
try:
|
|
518
|
+
items.remove(item)
|
|
519
|
+
|
|
520
|
+
except ValueError:
|
|
521
|
+
self._raise_value_not_found_when_deleting(value=item)
|
|
522
|
+
|
|
523
|
+
return self.__class__(value=items)
|
|
524
|
+
|
|
525
|
+
def _raise_value_not_found_when_deleting(self, value: Any) -> NoReturn:
|
|
526
|
+
"""
|
|
527
|
+
Raises a ValueError if the item to be deleted is not found.
|
|
528
|
+
|
|
529
|
+
Args:
|
|
530
|
+
value (Any): The item to be deleted.
|
|
531
|
+
|
|
532
|
+
Raises:
|
|
533
|
+
ValueError: If the item is not found.
|
|
534
|
+
"""
|
|
535
|
+
raise ValueError(f'ListValueObject item <<<{value}>>> not found in thelist when attempting to delete it.')
|
|
536
|
+
|
|
537
|
+
def delete_from_primitives(self, *, item: Any) -> ListValueObject[T]:
|
|
538
|
+
"""
|
|
539
|
+
Returns a new ListValueObject with the first occurrence of an item matching the primitive deleted.
|
|
540
|
+
|
|
541
|
+
Args:
|
|
542
|
+
item (Any): The primitive value to convert and delete.
|
|
543
|
+
|
|
544
|
+
Raises:
|
|
545
|
+
ValueError: If the item is not in the list.
|
|
546
|
+
|
|
547
|
+
Returns:
|
|
548
|
+
ListValueObject[T]: A new ListValueObject with the item deleted.
|
|
549
|
+
|
|
550
|
+
Example:
|
|
551
|
+
```python
|
|
552
|
+
from value_object_pattern.models import ValueObject
|
|
553
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
class Age(ValueObject[int]):
|
|
557
|
+
pass
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
class AgeListValueObject(ListValueObject[Age]):
|
|
561
|
+
pass
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
sequence = AgeListValueObject(value=[Age(value=10), Age(value=20)])
|
|
565
|
+
new_sequence = sequence.delete_from_primitives(item=10)
|
|
566
|
+
print(new_sequence)
|
|
567
|
+
print(id(sequence) == id(new_sequence))
|
|
568
|
+
# >>> [20]
|
|
569
|
+
# >>> False
|
|
570
|
+
```
|
|
571
|
+
"""
|
|
572
|
+
item = self._convert_from_primitives(value=item)
|
|
573
|
+
|
|
574
|
+
return self.delete(item=item)
|
|
575
|
+
|
|
576
|
+
def delete_all(self, *, items: list[T]) -> ListValueObject[T]:
|
|
577
|
+
"""
|
|
578
|
+
Returns a new ListValueObject with all occurrences of the specified items deleted.
|
|
579
|
+
|
|
580
|
+
Args:
|
|
581
|
+
items (list[T]): The items to delete.
|
|
582
|
+
|
|
583
|
+
Raises:
|
|
584
|
+
ValueError: If any item is not in the list.
|
|
585
|
+
|
|
586
|
+
Returns:
|
|
587
|
+
ListValueObject[T]: A new ListValueObject with the items deleted.
|
|
588
|
+
|
|
589
|
+
Example:
|
|
590
|
+
```python
|
|
591
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
class IntListValueObject(ListValueObject[int]):
|
|
595
|
+
pass
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
sequence = IntListValueObject(value=[1, 2, 3, 2, 4])
|
|
599
|
+
new_sequence = sequence.delete_all(items=[2, 4])
|
|
600
|
+
print(new_sequence)
|
|
601
|
+
print(id(sequence) == id(new_sequence))
|
|
602
|
+
# >>> [1, 3]
|
|
603
|
+
# >>> False
|
|
604
|
+
```
|
|
605
|
+
"""
|
|
606
|
+
new_list = [item for item in self._value if item not in items]
|
|
607
|
+
|
|
608
|
+
for item in items:
|
|
609
|
+
if item not in self._value:
|
|
610
|
+
self._raise_value_not_found_when_deleting(value=item)
|
|
611
|
+
|
|
612
|
+
return self.__class__(value=new_list)
|
|
613
|
+
|
|
614
|
+
def delete_all_from_primitives(self, *, items: list[Any]) -> ListValueObject[T]:
|
|
615
|
+
"""
|
|
616
|
+
Returns a new ListValueObject with all occurrences of items matching the primitives deleted.
|
|
617
|
+
|
|
618
|
+
Args:
|
|
619
|
+
items (list[Any]): The primitive values to convert and delete.
|
|
620
|
+
|
|
621
|
+
Raises:
|
|
622
|
+
ValueError: If any item is not in the list.
|
|
623
|
+
|
|
624
|
+
Returns:
|
|
625
|
+
ListValueObject[T]: A new ListValueObject with the items deleted.
|
|
626
|
+
|
|
627
|
+
Example:
|
|
628
|
+
```python
|
|
629
|
+
from value_object_pattern.models.collections import ListValueObject
|
|
630
|
+
from value_object_pattern.models import ValueObject
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
class Age(ValueObject[int]):
|
|
634
|
+
pass
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
class AgeListValueObject(ListValueObject[Age]):
|
|
638
|
+
pass
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
sequence = AgeListValueObject(value=[Age(value=10), Age(value=20), Age(value=30)])
|
|
642
|
+
new_sequence = sequence.delete_all_from_primitives(items=[10, 30])
|
|
643
|
+
print(new_sequence)
|
|
644
|
+
print(id(sequence) == id(new_sequence))
|
|
645
|
+
# >>> [20]
|
|
646
|
+
# >>> False
|
|
647
|
+
```
|
|
648
|
+
"""
|
|
649
|
+
items = [self._convert_from_primitives(value=item) for item in items]
|
|
650
|
+
|
|
651
|
+
return self.delete_all(items=items)
|
|
652
|
+
|
|
653
|
+
def _convert_from_primitives(self, *, value: Any) -> T:
|
|
654
|
+
"""
|
|
655
|
+
Converts a primitive value to the appropriate type T.
|
|
656
|
+
|
|
657
|
+
Args:
|
|
658
|
+
value (Any): The primitive value to convert.
|
|
659
|
+
|
|
660
|
+
Returns:
|
|
661
|
+
T: The converted value.
|
|
662
|
+
"""
|
|
663
|
+
if hasattr(self._type, 'from_primitives'):
|
|
664
|
+
return self._type.from_primitives(value) # type: ignore[no-any-return]
|
|
665
|
+
|
|
666
|
+
if hasattr(self._type, 'value'):
|
|
667
|
+
return self._type(value=value) # type: ignore[no-any-return]
|
|
668
|
+
|
|
669
|
+
return value # type: ignore[no-any-return]
|
|
670
|
+
|
|
353
671
|
@classmethod
|
|
354
|
-
def from_primitives(cls, value: list[Any]) ->
|
|
672
|
+
def from_primitives(cls, value: list[Any]) -> ListValueObject[T]:
|
|
355
673
|
"""
|
|
356
674
|
Creates a ListValueObject from a list of primitives.
|
|
357
675
|
|
|
@@ -359,18 +677,18 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
|
|
|
359
677
|
value (list[Any]): The list of primitives.
|
|
360
678
|
|
|
361
679
|
Returns:
|
|
362
|
-
|
|
680
|
+
ListValueObject[T]: The created ListValueObject.
|
|
363
681
|
"""
|
|
364
682
|
items: list[Any] = []
|
|
365
683
|
|
|
366
|
-
for
|
|
684
|
+
for item in value:
|
|
367
685
|
if hasattr(cls._type, 'from_primitives'):
|
|
368
|
-
items.append(cls._type.from_primitives(
|
|
686
|
+
items.append(cls._type.from_primitives(item)) # BaseModel
|
|
369
687
|
|
|
370
688
|
elif hasattr(cls._type, 'value'):
|
|
371
|
-
items.append(cls._type(value=
|
|
689
|
+
items.append(cls._type(value=item)) # ValueObject
|
|
372
690
|
|
|
373
691
|
else:
|
|
374
|
-
items.append(
|
|
692
|
+
items.append(item)
|
|
375
693
|
|
|
376
694
|
return cls(value=items)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from .uuid import (
|
|
2
|
+
StringUuidV1ValueObject,
|
|
3
|
+
StringUuidV3ValueObject,
|
|
4
|
+
StringUuidV4ValueObject,
|
|
5
|
+
StringUuidV5ValueObject,
|
|
6
|
+
StringUuidV6ValueObject,
|
|
7
|
+
StringUuidV7ValueObject,
|
|
8
|
+
StringUuidV8ValueObject,
|
|
9
|
+
StringUuidValueObject,
|
|
10
|
+
UuidV1ValueObject,
|
|
11
|
+
UuidV3ValueObject,
|
|
12
|
+
UuidV4ValueObject,
|
|
13
|
+
UuidV5ValueObject,
|
|
14
|
+
UuidV6ValueObject,
|
|
15
|
+
UuidV7ValueObject,
|
|
16
|
+
UuidV8ValueObject,
|
|
17
|
+
UuidValueObject,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
__all__ = (
|
|
21
|
+
'StringUuidV1ValueObject',
|
|
22
|
+
'StringUuidV3ValueObject',
|
|
23
|
+
'StringUuidV4ValueObject',
|
|
24
|
+
'StringUuidV5ValueObject',
|
|
25
|
+
'StringUuidV6ValueObject',
|
|
26
|
+
'StringUuidV7ValueObject',
|
|
27
|
+
'StringUuidV8ValueObject',
|
|
28
|
+
'StringUuidValueObject',
|
|
29
|
+
'UuidV1ValueObject',
|
|
30
|
+
'UuidV3ValueObject',
|
|
31
|
+
'UuidV4ValueObject',
|
|
32
|
+
'UuidV5ValueObject',
|
|
33
|
+
'UuidV6ValueObject',
|
|
34
|
+
'UuidV7ValueObject',
|
|
35
|
+
'UuidV8ValueObject',
|
|
36
|
+
'UuidValueObject',
|
|
37
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from .string_uuid_v1_value_object import StringUuidV1ValueObject
|
|
2
|
+
from .string_uuid_v3_value_object import StringUuidV3ValueObject
|
|
3
|
+
from .string_uuid_v4_value_object import StringUuidV4ValueObject
|
|
4
|
+
from .string_uuid_v5_value_object import StringUuidV5ValueObject
|
|
5
|
+
from .string_uuid_v6_value_object import StringUuidV6ValueObject
|
|
6
|
+
from .string_uuid_v7_value_object import StringUuidV7ValueObject
|
|
7
|
+
from .string_uuid_v8_value_object import StringUuidV8ValueObject
|
|
8
|
+
from .string_uuid_value_object import StringUuidValueObject
|
|
9
|
+
from .uuid_v1_value_object import UuidV1ValueObject
|
|
10
|
+
from .uuid_v3_value_object import UuidV3ValueObject
|
|
11
|
+
from .uuid_v4_value_object import UuidV4ValueObject
|
|
12
|
+
from .uuid_v5_value_object import UuidV5ValueObject
|
|
13
|
+
from .uuid_v6_value_object import UuidV6ValueObject
|
|
14
|
+
from .uuid_v7_value_object import UuidV7ValueObject
|
|
15
|
+
from .uuid_v8_value_object import UuidV8ValueObject
|
|
16
|
+
from .uuid_value_object import UuidValueObject
|
|
17
|
+
|
|
18
|
+
__all__ = (
|
|
19
|
+
'StringUuidV1ValueObject',
|
|
20
|
+
'StringUuidV3ValueObject',
|
|
21
|
+
'StringUuidV4ValueObject',
|
|
22
|
+
'StringUuidV5ValueObject',
|
|
23
|
+
'StringUuidV6ValueObject',
|
|
24
|
+
'StringUuidV7ValueObject',
|
|
25
|
+
'StringUuidV8ValueObject',
|
|
26
|
+
'StringUuidValueObject',
|
|
27
|
+
'UuidV1ValueObject',
|
|
28
|
+
'UuidV3ValueObject',
|
|
29
|
+
'UuidV4ValueObject',
|
|
30
|
+
'UuidV5ValueObject',
|
|
31
|
+
'UuidV6ValueObject',
|
|
32
|
+
'UuidV7ValueObject',
|
|
33
|
+
'UuidV8ValueObject',
|
|
34
|
+
'UuidValueObject',
|
|
35
|
+
)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""
|
|
2
|
+
StringUuidV1ValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import NoReturn
|
|
6
|
+
from uuid import UUID
|
|
7
|
+
|
|
8
|
+
from value_object_pattern.decorators import validation
|
|
9
|
+
|
|
10
|
+
from .string_uuid_value_object import StringUuidValueObject
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class StringUuidV1ValueObject(StringUuidValueObject):
|
|
14
|
+
"""
|
|
15
|
+
StringUuidV1ValueObject value object ensures the provided value is a valid UUID version 1.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
```python
|
|
19
|
+
from value_object_pattern.usables.identifiers import StringUuidV1ValueObject
|
|
20
|
+
|
|
21
|
+
uuid = StringUuidV1ValueObject(value='53734b8c-d517-11f0-a57a-452bbcae0235')
|
|
22
|
+
print(repr(uuid))
|
|
23
|
+
# >>> StringUuidV1ValueObject(value=53734b8c-d517-11f0-a57a-452bbcae0235)
|
|
24
|
+
```
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
@validation(order=1)
|
|
28
|
+
def _ensure_value_is_uuid1(self, value: str) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Ensures the value object `value` is a UUID version 1.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
value (str): The provided value.
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ValueError: If the `value` is not a UUID version 1.
|
|
37
|
+
"""
|
|
38
|
+
uuid_object = UUID(value)
|
|
39
|
+
if uuid_object.version != 1:
|
|
40
|
+
self._raise_value_is_not_uuid1(value=value)
|
|
41
|
+
|
|
42
|
+
def _raise_value_is_not_uuid1(self, value: str) -> NoReturn:
|
|
43
|
+
"""
|
|
44
|
+
Raises a ValueError if the value object `value` is not a UUID version 1.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
value (str): The provided value.
|
|
48
|
+
|
|
49
|
+
Raises:
|
|
50
|
+
ValueError: If the `value` is not a UUID version 1.
|
|
51
|
+
"""
|
|
52
|
+
raise ValueError(f'StringUuidV1ValueObject value <<<{value}>>> must be a UUID version 1. Got version <<<{UUID(value).version}>>>.') # noqa: E501 # fmt: skip
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""
|
|
2
|
+
StringUuidV3ValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import NoReturn
|
|
6
|
+
from uuid import UUID
|
|
7
|
+
|
|
8
|
+
from value_object_pattern.decorators import validation
|
|
9
|
+
|
|
10
|
+
from .string_uuid_value_object import StringUuidValueObject
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class StringUuidV3ValueObject(StringUuidValueObject):
|
|
14
|
+
"""
|
|
15
|
+
StringUuidV3ValueObject value object ensures the provided value is a valid UUID version 3.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
```python
|
|
19
|
+
from value_object_pattern.usables.identifiers import StringUuidV3ValueObject
|
|
20
|
+
|
|
21
|
+
uuid = StringUuidV3ValueObject(value='9073926b-929f-31c2-abc9-fad77ae3e8eb')
|
|
22
|
+
print(repr(uuid))
|
|
23
|
+
# >>> StringUuidV3ValueObject(value=9073926b-929f-31c2-abc9-fad77ae3e8eb)
|
|
24
|
+
```
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
@validation(order=1)
|
|
28
|
+
def _ensure_value_is_uuid3(self, value: str) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Ensures the value object `value` is a UUID version 3.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
value (str): The provided value.
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ValueError: If the `value` is not a UUID version 3.
|
|
37
|
+
"""
|
|
38
|
+
uuid_object = UUID(value)
|
|
39
|
+
if uuid_object.version != 3:
|
|
40
|
+
self._raise_value_is_not_uuid3(value=value)
|
|
41
|
+
|
|
42
|
+
def _raise_value_is_not_uuid3(self, value: str) -> NoReturn:
|
|
43
|
+
"""
|
|
44
|
+
Raises a ValueError if the value object `value` is not a UUID version 3.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
value (str): The provided value.
|
|
48
|
+
|
|
49
|
+
Raises:
|
|
50
|
+
ValueError: If the `value` is not a UUID version 3.
|
|
51
|
+
"""
|
|
52
|
+
raise ValueError(f'StringUuidV3ValueObject value <<<{value}>>> must be a UUID version 3. Got version <<<{UUID(value).version}>>>.') # noqa: E501 # fmt: skip
|
|
@@ -18,10 +18,9 @@ class StringUuidV4ValueObject(StringUuidValueObject):
|
|
|
18
18
|
```python
|
|
19
19
|
from value_object_pattern.usables.identifiers import StringUuidV4ValueObject
|
|
20
20
|
|
|
21
|
-
uuid = StringUuidV4ValueObject(value='
|
|
22
|
-
|
|
21
|
+
uuid = StringUuidV4ValueObject(value='3e9e0f3a-64a3-474f-9127-368e723f389f')
|
|
23
22
|
print(repr(uuid))
|
|
24
|
-
# >>> StringUuidV4ValueObject(value=
|
|
23
|
+
# >>> StringUuidV4ValueObject(value=3e9e0f3a-64a3-474f-9127-368e723f389f)
|
|
25
24
|
```
|
|
26
25
|
"""
|
|
27
26
|
|
|
@@ -36,7 +35,7 @@ class StringUuidV4ValueObject(StringUuidValueObject):
|
|
|
36
35
|
Raises:
|
|
37
36
|
ValueError: If the `value` is not a UUID version 4.
|
|
38
37
|
"""
|
|
39
|
-
uuid_object = UUID(
|
|
38
|
+
uuid_object = UUID(value)
|
|
40
39
|
if uuid_object.version != 4:
|
|
41
40
|
self._raise_value_is_not_uuid4(value=value)
|
|
42
41
|
|
|
@@ -50,4 +49,4 @@ class StringUuidV4ValueObject(StringUuidValueObject):
|
|
|
50
49
|
Raises:
|
|
51
50
|
ValueError: If the `value` is not a UUID version 4.
|
|
52
51
|
"""
|
|
53
|
-
raise ValueError(f'StringUuidV4ValueObject value <<<{value}>>> must be a UUID version 4. Got version <<<{UUID(
|
|
52
|
+
raise ValueError(f'StringUuidV4ValueObject value <<<{value}>>> must be a UUID version 4. Got version <<<{UUID(value).version}>>>.') # noqa: E501 # fmt: skip
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""
|
|
2
|
+
StringUuidV5ValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import NoReturn
|
|
6
|
+
from uuid import UUID
|
|
7
|
+
|
|
8
|
+
from value_object_pattern.decorators import validation
|
|
9
|
+
|
|
10
|
+
from .string_uuid_value_object import StringUuidValueObject
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class StringUuidV5ValueObject(StringUuidValueObject):
|
|
14
|
+
"""
|
|
15
|
+
StringUuidV5ValueObject value object ensures the provided value is a valid UUID version 5.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
```python
|
|
19
|
+
from value_object_pattern.usables.identifiers import StringUuidV5ValueObject
|
|
20
|
+
|
|
21
|
+
uuid = StringUuidV5ValueObject(value='cfbff0d1-9375-5685-968c-48ce8b15ae17')
|
|
22
|
+
print(repr(uuid))
|
|
23
|
+
# >>> StringUuidV5ValueObject(value=cfbff0d1-9375-5685-968c-48ce8b15ae17)
|
|
24
|
+
```
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
@validation(order=1)
|
|
28
|
+
def _ensure_value_is_uuid5(self, value: str) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Ensures the value object `value` is a UUID version 5.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
value (str): The provided value.
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ValueError: If the `value` is not a UUID version 5.
|
|
37
|
+
"""
|
|
38
|
+
uuid_object = UUID(value)
|
|
39
|
+
if uuid_object.version != 5:
|
|
40
|
+
self._raise_value_is_not_uuid5(value=value)
|
|
41
|
+
|
|
42
|
+
def _raise_value_is_not_uuid5(self, value: str) -> NoReturn:
|
|
43
|
+
"""
|
|
44
|
+
Raises a ValueError if the value object `value` is not a UUID version 5.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
value (str): The provided value.
|
|
48
|
+
|
|
49
|
+
Raises:
|
|
50
|
+
ValueError: If the `value` is not a UUID version 5.
|
|
51
|
+
"""
|
|
52
|
+
raise ValueError(f'StringUuidV5ValueObject value <<<{value}>>> must be a UUID version 5. Got version <<<{UUID(value).version}>>>.') # noqa: E501 # fmt: skip
|