value-object-pattern 1.28.0__tar.gz → 1.29.1__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.28.0 → value_object_pattern-1.29.1}/PKG-INFO +1 -1
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/collections/list_value_object.py +18 -2
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/primitive_conversion.py +8 -1
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/value_object.py +11 -2
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/__init__.py +2 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/__init__.py +2 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/__init__.py +2 -0
- value_object_pattern-1.29.1/value_object_pattern/usables/primitives/string/secret_string_value_object.py +40 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/.gitignore +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/LICENSE.md +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/README.md +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/pyproject.toml +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/classproperty.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/base_model.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/collections/dict_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/type_matching.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/union_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/keys/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/keys/kebab_case_key_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/keys/snake_case_key_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/slug_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/user_agent_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/iban_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/utils/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/camel_case_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/kebab_case_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/pascal_case_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/screaming_snake_case_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/snake_case_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/utils/__init__.py +0 -0
- {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/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.29.1
|
|
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
|
|
@@ -204,7 +204,15 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
|
|
|
204
204
|
elif isinstance(item, Enum):
|
|
205
205
|
list_to_return.append(item.value)
|
|
206
206
|
|
|
207
|
-
elif isinstance(item, ValueObject)
|
|
207
|
+
elif isinstance(item, ValueObject):
|
|
208
|
+
value = item._value_for_display()
|
|
209
|
+
|
|
210
|
+
if isinstance(value, Enum):
|
|
211
|
+
value = value.value
|
|
212
|
+
|
|
213
|
+
list_to_return.append(repr(value))
|
|
214
|
+
|
|
215
|
+
elif hasattr(item, 'value'):
|
|
208
216
|
value = item.value
|
|
209
217
|
|
|
210
218
|
if isinstance(value, Enum):
|
|
@@ -256,7 +264,15 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
|
|
|
256
264
|
elif isinstance(item, Enum):
|
|
257
265
|
list_to_return.append(item.value)
|
|
258
266
|
|
|
259
|
-
elif isinstance(item, ValueObject)
|
|
267
|
+
elif isinstance(item, ValueObject):
|
|
268
|
+
value = item._value_for_display()
|
|
269
|
+
|
|
270
|
+
if isinstance(value, Enum):
|
|
271
|
+
value = value.value
|
|
272
|
+
|
|
273
|
+
list_to_return.append(str(object=value))
|
|
274
|
+
|
|
275
|
+
elif hasattr(item, 'value'):
|
|
260
276
|
value = item.value
|
|
261
277
|
|
|
262
278
|
if isinstance(value, Enum):
|
|
@@ -101,7 +101,14 @@ def _convert_with_value_attribute(*, value: Any) -> Any:
|
|
|
101
101
|
Returns:
|
|
102
102
|
Any: Converted value or sentinel when the branch does not apply.
|
|
103
103
|
"""
|
|
104
|
-
if
|
|
104
|
+
if isinstance(value, ValueObject):
|
|
105
|
+
nested_value = value._value_for_display()
|
|
106
|
+
if nested_value is value:
|
|
107
|
+
return str(object=value)
|
|
108
|
+
|
|
109
|
+
return to_primitive(value=nested_value)
|
|
110
|
+
|
|
111
|
+
if not hasattr(value, 'value'):
|
|
105
112
|
return _MISSING
|
|
106
113
|
|
|
107
114
|
nested_value = getattr(value, 'value', value)
|
|
@@ -136,7 +136,7 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
136
136
|
# >>> IntegerValueObject(value=10)
|
|
137
137
|
```
|
|
138
138
|
"""
|
|
139
|
-
return f'{self.__class__.__name__}(value={self.
|
|
139
|
+
return f'{self.__class__.__name__}(value={self._value_for_display()!r})'
|
|
140
140
|
|
|
141
141
|
@override
|
|
142
142
|
def __str__(self) -> str:
|
|
@@ -160,7 +160,7 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
160
160
|
# >>> 10
|
|
161
161
|
```
|
|
162
162
|
"""
|
|
163
|
-
return str(object=self.
|
|
163
|
+
return str(object=self._value_for_display())
|
|
164
164
|
|
|
165
165
|
@override
|
|
166
166
|
def __hash__(self) -> int:
|
|
@@ -367,6 +367,15 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
367
367
|
|
|
368
368
|
raise error
|
|
369
369
|
|
|
370
|
+
def _value_for_display(self) -> Any:
|
|
371
|
+
"""
|
|
372
|
+
Returns the value used by display-oriented representations.
|
|
373
|
+
|
|
374
|
+
Returns:
|
|
375
|
+
Any: Value safe for string, repr, and primitive display paths.
|
|
376
|
+
"""
|
|
377
|
+
return self.value
|
|
378
|
+
|
|
370
379
|
def _post_order_dfs_mro(self, cls: type, visited: set[type] | None = None, cut_off: type = object) -> list[type]:
|
|
371
380
|
"""
|
|
372
381
|
Computes the Post-Order Depth-First Search (DFS) Method Resolution Order (MRO) of a class.
|
{value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/__init__.py
RENAMED
|
@@ -26,6 +26,7 @@ from .primitives import (
|
|
|
26
26
|
PositiveOrZeroIntegerValueObject,
|
|
27
27
|
PrintableStringValueObject,
|
|
28
28
|
ScreamingSnakeCaseStringValueObject,
|
|
29
|
+
SecretStringValueObject,
|
|
29
30
|
SnakeCaseStringValueObject,
|
|
30
31
|
StringValueObject,
|
|
31
32
|
TrimmedStringValueObject,
|
|
@@ -64,6 +65,7 @@ __all__ = (
|
|
|
64
65
|
'PrintableStringValueObject',
|
|
65
66
|
'PrintableStringValueObject',
|
|
66
67
|
'ScreamingSnakeCaseStringValueObject',
|
|
68
|
+
'SecretStringValueObject',
|
|
67
69
|
'SnakeCaseStringValueObject',
|
|
68
70
|
'StringValueObject',
|
|
69
71
|
'StringValueObject',
|
|
@@ -28,6 +28,7 @@ from .string import (
|
|
|
28
28
|
PascalCaseStringValueObject,
|
|
29
29
|
PrintableStringValueObject,
|
|
30
30
|
ScreamingSnakeCaseStringValueObject,
|
|
31
|
+
SecretStringValueObject,
|
|
31
32
|
SnakeCaseStringValueObject,
|
|
32
33
|
StringValueObject,
|
|
33
34
|
TrimmedStringValueObject,
|
|
@@ -62,6 +63,7 @@ __all__ = (
|
|
|
62
63
|
'PositiveOrZeroIntegerValueObject',
|
|
63
64
|
'PrintableStringValueObject',
|
|
64
65
|
'ScreamingSnakeCaseStringValueObject',
|
|
66
|
+
'SecretStringValueObject',
|
|
65
67
|
'SnakeCaseStringValueObject',
|
|
66
68
|
'StringValueObject',
|
|
67
69
|
'TrimmedStringValueObject',
|
|
@@ -8,6 +8,7 @@ from .non_empty_string_value_object import NotEmptyStringValueObject
|
|
|
8
8
|
from .pascal_case_string_value_object import PascalCaseStringValueObject
|
|
9
9
|
from .printable_string_value_object import PrintableStringValueObject
|
|
10
10
|
from .screaming_snake_case_string_value_object import ScreamingSnakeCaseStringValueObject
|
|
11
|
+
from .secret_string_value_object import SecretStringValueObject
|
|
11
12
|
from .snake_case_string_value_object import SnakeCaseStringValueObject
|
|
12
13
|
from .string_value_object import StringValueObject
|
|
13
14
|
from .trimmed_string_value_object import TrimmedStringValueObject
|
|
@@ -24,6 +25,7 @@ __all__ = (
|
|
|
24
25
|
'PascalCaseStringValueObject',
|
|
25
26
|
'PrintableStringValueObject',
|
|
26
27
|
'ScreamingSnakeCaseStringValueObject',
|
|
28
|
+
'SecretStringValueObject',
|
|
27
29
|
'SnakeCaseStringValueObject',
|
|
28
30
|
'StringValueObject',
|
|
29
31
|
'TrimmedStringValueObject',
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SecretStringValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from sys import version_info
|
|
6
|
+
|
|
7
|
+
if version_info >= (3, 12):
|
|
8
|
+
from typing import override # pragma: no cover
|
|
9
|
+
else:
|
|
10
|
+
from typing_extensions import override # pragma: no cover
|
|
11
|
+
|
|
12
|
+
from .string_value_object import StringValueObject
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SecretStringValueObject(StringValueObject):
|
|
16
|
+
"""
|
|
17
|
+
SecretStringValueObject stores a string that is redacted in display-oriented output.
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
```python
|
|
21
|
+
from value_object_pattern.usables import SecretStringValueObject
|
|
22
|
+
|
|
23
|
+
secret = SecretStringValueObject(value='hidden-value')
|
|
24
|
+
|
|
25
|
+
print(secret)
|
|
26
|
+
# >>> ********
|
|
27
|
+
```
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
_MASK: str = '********'
|
|
31
|
+
|
|
32
|
+
@override
|
|
33
|
+
def _value_for_display(self) -> str:
|
|
34
|
+
"""
|
|
35
|
+
Returns the display-safe representation of the secret value.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
str: The redacted secret value.
|
|
39
|
+
"""
|
|
40
|
+
return self._MASK
|
|
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.28.0 → value_object_pattern-1.29.1}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|