value-object-pattern 1.32.0__tar.gz → 1.33.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.32.0 → value_object_pattern-1.33.0}/PKG-INFO +1 -1
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/__init__.py +2 -0
- value_object_pattern-1.33.0/value_object_pattern/usables/internet/domain_or_localhost_value_object.py +22 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/domain_value_object.py +5 -1
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/host_value_object.py +3 -3
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/url_value_object.py +19 -3
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/.gitignore +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/LICENSE.md +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/README.md +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/pyproject.toml +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/classproperty.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/base_model.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/collections/dict_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/collections/list_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/primitive_conversion.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/type_matching.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/union_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.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.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/keys/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/keys/kebab_case_key_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/keys/snake_case_key_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/slug_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/user_agent_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/base64_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/camel_case_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/kebab_case_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/pascal_case_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/screaming_snake_case_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/secret_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/snake_case_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/utils/__init__.py +0 -0
- {value_object_pattern-1.32.0 → value_object_pattern-1.33.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.33.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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from .aws_cloud_region_value_object import AwsCloudRegionValueObject
|
|
2
|
+
from .domain_or_localhost_value_object import DomainOrLocalhostValueObject
|
|
2
3
|
from .domain_value_object import DomainValueObject
|
|
3
4
|
from .email_address_value_object import EmailAddressValueObject
|
|
4
5
|
from .host_value_object import HostValueObject
|
|
@@ -16,6 +17,7 @@ from .user_agent_value_object import UserAgentValueObject
|
|
|
16
17
|
|
|
17
18
|
__all__ = (
|
|
18
19
|
'AwsCloudRegionValueObject',
|
|
20
|
+
'DomainOrLocalhostValueObject',
|
|
19
21
|
'DomainValueObject',
|
|
20
22
|
'EmailAddressValueObject',
|
|
21
23
|
'HostValueObject',
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""
|
|
2
|
+
DomainOrLocalhostValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from .domain_value_object import DomainValueObject
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DomainOrLocalhostValueObject(DomainValueObject):
|
|
9
|
+
"""
|
|
10
|
+
DomainOrLocalhostValueObject ensures the provided value is a valid domain or localhost.
|
|
11
|
+
|
|
12
|
+
Example:
|
|
13
|
+
```python
|
|
14
|
+
from value_object_pattern.usables.internet import DomainOrLocalhostValueObject
|
|
15
|
+
|
|
16
|
+
domain = DomainOrLocalhostValueObject(value='localhost')
|
|
17
|
+
print(repr(domain))
|
|
18
|
+
# >>> DomainOrLocalhostValueObject(value=localhost)
|
|
19
|
+
```
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
_DOMAIN_VALID_SINGLE_LABELS: frozenset[str] = frozenset({'localhost'})
|
|
@@ -32,6 +32,7 @@ class DomainValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
32
32
|
_DOMAIN_MAX_LABEL_LENGTH: int = 63
|
|
33
33
|
_DOMAIN_MAX_DOMAIN_LENGTH: int = 253
|
|
34
34
|
_DOMAIN_REGEX: Pattern[str] = re_compile(pattern=r'[0-9a-zA-Z-]+')
|
|
35
|
+
_DOMAIN_VALID_SINGLE_LABELS: frozenset[str] = frozenset()
|
|
35
36
|
|
|
36
37
|
@process(order=0)
|
|
37
38
|
def _ensure_domain_is_in_lowercase(self, value: str) -> str:
|
|
@@ -72,7 +73,10 @@ class DomainValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
72
73
|
ValueError: If domain value has not a valid top level domain.
|
|
73
74
|
"""
|
|
74
75
|
if '.' not in processed_value:
|
|
75
|
-
self.
|
|
76
|
+
if processed_value not in self._DOMAIN_VALID_SINGLE_LABELS:
|
|
77
|
+
self._raise_value_has_not_valid_top_level_domain(value=value)
|
|
78
|
+
|
|
79
|
+
return
|
|
76
80
|
|
|
77
81
|
tdl = processed_value.split(sep='.')[-1]
|
|
78
82
|
if tdl not in get_tld_dict():
|
|
@@ -7,7 +7,7 @@ from typing import NoReturn
|
|
|
7
7
|
from value_object_pattern import process, validation
|
|
8
8
|
from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
|
|
9
9
|
|
|
10
|
-
from .
|
|
10
|
+
from .domain_or_localhost_value_object import DomainOrLocalhostValueObject
|
|
11
11
|
from .ipv4_address_value_object import Ipv4AddressValueObject
|
|
12
12
|
from .ipv6_address_value_object import Ipv6AddressValueObject
|
|
13
13
|
|
|
@@ -38,7 +38,7 @@ class HostValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
38
38
|
str: The host value stored in respective format.
|
|
39
39
|
"""
|
|
40
40
|
if self._is_domain(value=value):
|
|
41
|
-
return
|
|
41
|
+
return DomainOrLocalhostValueObject(value=value).value
|
|
42
42
|
|
|
43
43
|
if self._is_ipv4_address(value=value):
|
|
44
44
|
return Ipv4AddressValueObject(value=value).value
|
|
@@ -104,7 +104,7 @@ class HostValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
104
104
|
bool: True if the value is a domain, False otherwise.
|
|
105
105
|
"""
|
|
106
106
|
try:
|
|
107
|
-
|
|
107
|
+
DomainOrLocalhostValueObject(value=value)
|
|
108
108
|
return True
|
|
109
109
|
|
|
110
110
|
except (TypeError, ValueError):
|
|
@@ -37,6 +37,9 @@ def join_url(
|
|
|
37
37
|
Returns:
|
|
38
38
|
str: The URL joined.
|
|
39
39
|
"""
|
|
40
|
+
if ':' in host and not host.startswith('['):
|
|
41
|
+
host = f'[{host}]'
|
|
42
|
+
|
|
40
43
|
netloc = host
|
|
41
44
|
if user_information:
|
|
42
45
|
netloc = f'{user_information}@{netloc}'
|
|
@@ -88,9 +91,18 @@ def split_netloc(value: str) -> tuple[str | None, str, int | None]:
|
|
|
88
91
|
# prevent splitting passwords with @
|
|
89
92
|
user_information, host_port = value.rsplit(sep='@', maxsplit=1)
|
|
90
93
|
|
|
94
|
+
if host_port.startswith('['):
|
|
95
|
+
host, _, port_string = host_port[1:].partition(']')
|
|
96
|
+
if port_string:
|
|
97
|
+
port = int(port_string.removeprefix(':'))
|
|
98
|
+
|
|
99
|
+
return user_information, host, port
|
|
100
|
+
|
|
101
|
+
if host_port.count(':') > 1:
|
|
102
|
+
raise ValueError('IPv6 URL hosts must be enclosed in brackets.')
|
|
103
|
+
|
|
91
104
|
host = host_port
|
|
92
|
-
if ':' in host_port
|
|
93
|
-
# prevent splitting IPv6 addresses
|
|
105
|
+
if ':' in host_port:
|
|
94
106
|
host, port_string = host_port.rsplit(sep=':', maxsplit=1)
|
|
95
107
|
port = int(port_string)
|
|
96
108
|
|
|
@@ -207,7 +219,11 @@ class UrlValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
207
219
|
https://www.rfc-editor.org/rfc/rfc3986#section-3.2.3
|
|
208
220
|
"""
|
|
209
221
|
_, netloc, *_ = split_url(value=value)
|
|
210
|
-
|
|
222
|
+
try:
|
|
223
|
+
user_information, host, port = split_netloc(value=netloc)
|
|
224
|
+
|
|
225
|
+
except ValueError as error:
|
|
226
|
+
raise ValueError(f'UrlValueObject value <<<{value}>>> is not a valid url.') from error
|
|
211
227
|
|
|
212
228
|
if user_information is not None and not self._URL_USER_INFORMATION_REGEX.match(string=user_information): # noqa: E501 # fmt: skip
|
|
213
229
|
raise ValueError(f'UrlValueObject value <<<{value}>>> has not a valid user information <<<{user_information}>>>.') # noqa: E501 # fmt: skip
|
|
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.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/__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
|
{value_object_pattern-1.32.0 → value_object_pattern-1.33.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
|
|
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
|