value-object-pattern 1.27.0__tar.gz → 1.29.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.27.0 → value_object_pattern-1.29.0}/PKG-INFO +1 -1
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/pyproject.toml +0 -2
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/collections/list_value_object.py +18 -2
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/primitive_conversion.py +8 -1
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/value_object.py +11 -2
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/__init__.py +4 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +2 -1
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/__init__.py +4 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/__init__.py +4 -0
- value_object_pattern-1.29.0/value_object_pattern/usables/primitives/string/pascal_case_string_value_object.py +55 -0
- value_object_pattern-1.29.0/value_object_pattern/usables/primitives/string/secret_string_value_object.py +40 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/.gitignore +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/LICENSE.md +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/README.md +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/classproperty.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/base_model.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/collections/dict_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/type_matching.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/union_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.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.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/keys/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/keys/kebab_case_key_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/keys/snake_case_key_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/slug_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/user_agent_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/camel_case_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/kebab_case_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/screaming_snake_case_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/snake_case_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/utils/__init__.py +0 -0
- {value_object_pattern-1.27.0 → value_object_pattern-1.29.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.29.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
|
|
@@ -50,7 +50,6 @@ Issues = 'https://github.com/adriamontoto/value-object-pattern/issues'
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
[dependency-groups]
|
|
53
|
-
audit = ['pip-audit>=2.9.0']
|
|
54
53
|
coverage = ['coverage[toml]>=7.0.0', 'smokeshow>=0.5.0']
|
|
55
54
|
develop = ['pre-commit>=3.0.0']
|
|
56
55
|
format = ['ruff>=0.11.10']
|
|
@@ -69,7 +68,6 @@ test = [
|
|
|
69
68
|
]
|
|
70
69
|
types = ['types-python-dateutil>=2.9.0.20241206']
|
|
71
70
|
all = [
|
|
72
|
-
{ include-group = 'audit' },
|
|
73
71
|
{ include-group = 'coverage' },
|
|
74
72
|
{ include-group = 'develop' },
|
|
75
73
|
{ include-group = 'format' },
|
|
@@ -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.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/__init__.py
RENAMED
|
@@ -19,12 +19,14 @@ from .primitives import (
|
|
|
19
19
|
NotEmptyStringValueObject,
|
|
20
20
|
NotNoneValueObject,
|
|
21
21
|
OddIntegerValueObject,
|
|
22
|
+
PascalCaseStringValueObject,
|
|
22
23
|
PositiveFloatValueObject,
|
|
23
24
|
PositiveIntegerValueObject,
|
|
24
25
|
PositiveOrZeroFloatValueObject,
|
|
25
26
|
PositiveOrZeroIntegerValueObject,
|
|
26
27
|
PrintableStringValueObject,
|
|
27
28
|
ScreamingSnakeCaseStringValueObject,
|
|
29
|
+
SecretStringValueObject,
|
|
28
30
|
SnakeCaseStringValueObject,
|
|
29
31
|
StringValueObject,
|
|
30
32
|
TrimmedStringValueObject,
|
|
@@ -55,6 +57,7 @@ __all__ = (
|
|
|
55
57
|
'NotEmptyStringValueObject',
|
|
56
58
|
'NotNoneValueObject',
|
|
57
59
|
'OddIntegerValueObject',
|
|
60
|
+
'PascalCaseStringValueObject',
|
|
58
61
|
'PositiveFloatValueObject',
|
|
59
62
|
'PositiveIntegerValueObject',
|
|
60
63
|
'PositiveOrZeroFloatValueObject',
|
|
@@ -62,6 +65,7 @@ __all__ = (
|
|
|
62
65
|
'PrintableStringValueObject',
|
|
63
66
|
'PrintableStringValueObject',
|
|
64
67
|
'ScreamingSnakeCaseStringValueObject',
|
|
68
|
+
'SecretStringValueObject',
|
|
65
69
|
'SnakeCaseStringValueObject',
|
|
66
70
|
'StringValueObject',
|
|
67
71
|
'StringValueObject',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# This file was automatically updated using "update_lists.py" on 2026-
|
|
1
|
+
# This file was automatically updated using "update_lists.py" on 2026-04-19T04:07:29.141154+00:00
|
|
2
2
|
|
|
3
3
|
aaa
|
|
4
4
|
aarp
|
|
@@ -742,6 +742,7 @@ meme
|
|
|
742
742
|
memorial
|
|
743
743
|
men
|
|
744
744
|
menu
|
|
745
|
+
merck
|
|
745
746
|
merckmsd
|
|
746
747
|
mg
|
|
747
748
|
mh
|
|
@@ -25,8 +25,10 @@ from .string import (
|
|
|
25
25
|
KebabCaseStringValueObject,
|
|
26
26
|
LowercaseStringValueObject,
|
|
27
27
|
NotEmptyStringValueObject,
|
|
28
|
+
PascalCaseStringValueObject,
|
|
28
29
|
PrintableStringValueObject,
|
|
29
30
|
ScreamingSnakeCaseStringValueObject,
|
|
31
|
+
SecretStringValueObject,
|
|
30
32
|
SnakeCaseStringValueObject,
|
|
31
33
|
StringValueObject,
|
|
32
34
|
TrimmedStringValueObject,
|
|
@@ -54,12 +56,14 @@ __all__ = (
|
|
|
54
56
|
'NotEmptyStringValueObject',
|
|
55
57
|
'NotNoneValueObject',
|
|
56
58
|
'OddIntegerValueObject',
|
|
59
|
+
'PascalCaseStringValueObject',
|
|
57
60
|
'PositiveFloatValueObject',
|
|
58
61
|
'PositiveIntegerValueObject',
|
|
59
62
|
'PositiveOrZeroFloatValueObject',
|
|
60
63
|
'PositiveOrZeroIntegerValueObject',
|
|
61
64
|
'PrintableStringValueObject',
|
|
62
65
|
'ScreamingSnakeCaseStringValueObject',
|
|
66
|
+
'SecretStringValueObject',
|
|
63
67
|
'SnakeCaseStringValueObject',
|
|
64
68
|
'StringValueObject',
|
|
65
69
|
'TrimmedStringValueObject',
|
|
@@ -5,8 +5,10 @@ from .digit_value_object import DigitStringValueObject
|
|
|
5
5
|
from .kebab_case_string_value_object import KebabCaseStringValueObject
|
|
6
6
|
from .lowercase_string_value_object import LowercaseStringValueObject
|
|
7
7
|
from .non_empty_string_value_object import NotEmptyStringValueObject
|
|
8
|
+
from .pascal_case_string_value_object import PascalCaseStringValueObject
|
|
8
9
|
from .printable_string_value_object import PrintableStringValueObject
|
|
9
10
|
from .screaming_snake_case_string_value_object import ScreamingSnakeCaseStringValueObject
|
|
11
|
+
from .secret_string_value_object import SecretStringValueObject
|
|
10
12
|
from .snake_case_string_value_object import SnakeCaseStringValueObject
|
|
11
13
|
from .string_value_object import StringValueObject
|
|
12
14
|
from .trimmed_string_value_object import TrimmedStringValueObject
|
|
@@ -20,8 +22,10 @@ __all__ = (
|
|
|
20
22
|
'KebabCaseStringValueObject',
|
|
21
23
|
'LowercaseStringValueObject',
|
|
22
24
|
'NotEmptyStringValueObject',
|
|
25
|
+
'PascalCaseStringValueObject',
|
|
23
26
|
'PrintableStringValueObject',
|
|
24
27
|
'ScreamingSnakeCaseStringValueObject',
|
|
28
|
+
'SecretStringValueObject',
|
|
25
29
|
'SnakeCaseStringValueObject',
|
|
26
30
|
'StringValueObject',
|
|
27
31
|
'TrimmedStringValueObject',
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PascalCaseStringValueObject value object.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from re import Pattern, compile as re_compile
|
|
6
|
+
from typing import NoReturn
|
|
7
|
+
|
|
8
|
+
from value_object_pattern.decorators import validation
|
|
9
|
+
|
|
10
|
+
from .non_empty_string_value_object import NotEmptyStringValueObject
|
|
11
|
+
from .trimmed_string_value_object import TrimmedStringValueObject
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class PascalCaseStringValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
15
|
+
"""
|
|
16
|
+
PascalCaseStringValueObject value object ensures the provided value is PascalCase.
|
|
17
|
+
|
|
18
|
+
Example:
|
|
19
|
+
```python
|
|
20
|
+
from value_object_pattern.usables import PascalCaseStringValueObject
|
|
21
|
+
|
|
22
|
+
string = PascalCaseStringValueObject(value='Abcd1234Word')
|
|
23
|
+
|
|
24
|
+
print(repr(string))
|
|
25
|
+
# >>> PascalCaseStringValueObject(value='Abcd1234Word')
|
|
26
|
+
```
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
_VALIDATION_REGEX: Pattern[str] = re_compile(pattern=r'^[A-Z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$')
|
|
30
|
+
|
|
31
|
+
@validation(order=0)
|
|
32
|
+
def _ensure_value_is_pascal_case(self, value: str) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Ensures the value object `value` is PascalCase.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
value (str): The provided value.
|
|
38
|
+
|
|
39
|
+
Raises:
|
|
40
|
+
ValueError: If the `value` is not PascalCase.
|
|
41
|
+
"""
|
|
42
|
+
if not self._VALIDATION_REGEX.fullmatch(string=value):
|
|
43
|
+
self._raise_value_is_not_pascal_case(value=value)
|
|
44
|
+
|
|
45
|
+
def _raise_value_is_not_pascal_case(self, value: str) -> NoReturn:
|
|
46
|
+
"""
|
|
47
|
+
Raises a ValueError if the value object `value` is PascalCase.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
value (str): The provided value.
|
|
51
|
+
|
|
52
|
+
Raises:
|
|
53
|
+
ValueError: If the `value` is not PascalCase.
|
|
54
|
+
"""
|
|
55
|
+
raise ValueError(f'PascalCaseStringValueObject value <<<{value}>>> has invalid format. Only PascalCase strings starting with an uppercase letter and continuing with alphanumeric words are allowed.') # noqa: E501 # fmt: skip
|
|
@@ -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
|
{value_object_pattern-1.27.0 → value_object_pattern-1.29.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|