value-object-pattern 1.2.0__tar.gz → 1.4.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.2.0 → value_object_pattern-1.4.0}/PKG-INFO +1 -1
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/models/value_object.py +8 -2
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +17 -4
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/domain_value_object.py +3 -4
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +36 -62
- value_object_pattern-1.4.0/value_object_pattern/usables/internet/ipv4_network_value_object.py +223 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +40 -64
- value_object_pattern-1.4.0/value_object_pattern/usables/internet/ipv6_network_value_object.py +199 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/port_value_object.py +15 -36
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/utils/__init__.py +5 -10
- value_object_pattern-1.2.0/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -165
- value_object_pattern-1.2.0/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -145
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/.gitignore +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/LICENSE.md +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/README.md +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/pyproject.toml +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/models/base_model.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/models/collections/list_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.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.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.0}/value_object_pattern/usables/utils/__init__.py +0 -0
- {value_object_pattern-1.2.0 → value_object_pattern-1.4.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.4.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
|
|
@@ -11,7 +11,7 @@ else:
|
|
|
11
11
|
|
|
12
12
|
from abc import ABC
|
|
13
13
|
from collections import deque
|
|
14
|
-
from typing import Any, Callable, Generic,
|
|
14
|
+
from typing import Any, Callable, Generic, TypeVar
|
|
15
15
|
|
|
16
16
|
T = TypeVar('T')
|
|
17
17
|
|
|
@@ -215,7 +215,7 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
215
215
|
return self._value == other.value
|
|
216
216
|
|
|
217
217
|
@override
|
|
218
|
-
def __setattr__(self, key: str, value: T) ->
|
|
218
|
+
def __setattr__(self, key: str, value: T) -> None:
|
|
219
219
|
"""
|
|
220
220
|
Prevents modification or addition of attributes in the value object.
|
|
221
221
|
|
|
@@ -230,6 +230,12 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
|
|
|
230
230
|
public_key = key.replace('_', '')
|
|
231
231
|
public_slots1 = [slot.replace('_', '') for slot in self.__slots__]
|
|
232
232
|
|
|
233
|
+
if key.startswith('_internal_'):
|
|
234
|
+
# Allow internal attributes to be set, but not modified, those attributes should not be used outside the
|
|
235
|
+
# class, they are used for improving performance
|
|
236
|
+
object.__setattr__(self, key, value)
|
|
237
|
+
return
|
|
238
|
+
|
|
233
239
|
if key in self.__slots__:
|
|
234
240
|
raise AttributeError(f'Cannot modify attribute "{key}" of immutable instance.')
|
|
235
241
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
AwsCloudRegionValueObject value object.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
from typing import NoReturn
|
|
6
|
+
|
|
5
7
|
from value_object_pattern import process, validation
|
|
6
8
|
from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
|
|
7
9
|
|
|
@@ -19,9 +21,8 @@ class AwsCloudRegionValueObject(NotEmptyStringValueObject, TrimmedStringValueObj
|
|
|
19
21
|
```python
|
|
20
22
|
from value_object_pattern.usables.internet import AwsCloudRegionValueObject
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
print(repr(key))
|
|
24
|
+
region = AwsCloudRegionValueObject(value='us-east-1')
|
|
25
|
+
print(repr(region))
|
|
25
26
|
# >>> AwsCloudRegionValueObject(value=us-east-1)
|
|
26
27
|
```
|
|
27
28
|
"""
|
|
@@ -51,4 +52,16 @@ class AwsCloudRegionValueObject(NotEmptyStringValueObject, TrimmedStringValueObj
|
|
|
51
52
|
ValueError: If the region does not exist.
|
|
52
53
|
"""
|
|
53
54
|
if value not in get_aws_cloud_regions():
|
|
54
|
-
|
|
55
|
+
self._raise_value_is_not_valid_aws_cloud_region(value=value)
|
|
56
|
+
|
|
57
|
+
def _raise_value_is_not_valid_aws_cloud_region(self, value: str) -> NoReturn:
|
|
58
|
+
"""
|
|
59
|
+
Raises a ValueError if the value is not a valid AWS cloud region.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
value (str): The invalid AWS cloud region value.
|
|
63
|
+
|
|
64
|
+
Raises:
|
|
65
|
+
ValueError: If the value is not a valid AWS cloud region.
|
|
66
|
+
"""
|
|
67
|
+
raise ValueError(f'AwsCloudRegionValueObject value <<<{value}>>> is not a valid AWS cloud region.')
|
|
@@ -21,9 +21,8 @@ class DomainValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
21
21
|
```python
|
|
22
22
|
from value_object_pattern.usables.internet import DomainValueObject
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
print(repr(key))
|
|
24
|
+
domain = DomainValueObject(value='github.com')
|
|
25
|
+
print(repr(domain))
|
|
27
26
|
# >>> DomainValueObject(value=github.com)
|
|
28
27
|
```
|
|
29
28
|
"""
|
|
@@ -74,7 +73,7 @@ class DomainValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
|
74
73
|
raise ValueError(f'DomainValueObject value <<<{value}>>> has not a valid top level domain.')
|
|
75
74
|
|
|
76
75
|
tdl = value.lower().rstrip('.').split(sep='.')[-1]
|
|
77
|
-
if tdl not in get_tld_dict()
|
|
76
|
+
if tdl not in get_tld_dict():
|
|
78
77
|
raise ValueError(f'DomainValueObject value <<<{value}>>> has not a valid top level domain <<<{tdl}>>>.')
|
|
79
78
|
|
|
80
79
|
@validation(order=1)
|
|
@@ -5,7 +5,7 @@ Ipv4AddressValueObject value object.
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
-
from ipaddress import
|
|
8
|
+
from ipaddress import IPv4Address
|
|
9
9
|
|
|
10
10
|
from value_object_pattern.decorators import process, validation
|
|
11
11
|
from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
|
|
@@ -20,12 +20,13 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
20
20
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
21
21
|
|
|
22
22
|
ip = Ipv4AddressValueObject(value='66.162.207.81')
|
|
23
|
-
|
|
24
23
|
print(repr(ip))
|
|
25
24
|
# >>> Ipv4AddressValueObject(value=66.162.207.81)
|
|
26
25
|
```
|
|
27
26
|
"""
|
|
28
27
|
|
|
28
|
+
_internal_ip_object: IPv4Address
|
|
29
|
+
|
|
29
30
|
@process(order=0)
|
|
30
31
|
def _ensure_value_is_normalized(self, value: str) -> str:
|
|
31
32
|
"""
|
|
@@ -37,7 +38,9 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
37
38
|
Returns:
|
|
38
39
|
str: Value with the normalized IPv4 address.
|
|
39
40
|
"""
|
|
40
|
-
value
|
|
41
|
+
if '/' in value and value.endswith('/32'):
|
|
42
|
+
value = value[:-3]
|
|
43
|
+
|
|
41
44
|
return str(object=IPv4Address(address=value))
|
|
42
45
|
|
|
43
46
|
@validation(order=0)
|
|
@@ -51,44 +54,25 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
51
54
|
Raises:
|
|
52
55
|
ValueError: If the value is not a valid IPv4 address.
|
|
53
56
|
"""
|
|
54
|
-
|
|
55
|
-
self._ipv4_address_validate(value=value)
|
|
57
|
+
processed_value = self._ensure_value_is_normalized(value=value)
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"""
|
|
60
|
-
Normalizes the given IPv4 address.
|
|
61
|
-
|
|
62
|
-
Args:
|
|
63
|
-
value (str): IPv4 address.
|
|
64
|
-
|
|
65
|
-
Returns:
|
|
66
|
-
str: Normalized IPv4 address.
|
|
67
|
-
"""
|
|
68
|
-
if '/' in value and value.endswith('/32'):
|
|
69
|
-
value = value[:-3]
|
|
59
|
+
try:
|
|
60
|
+
self._internal_ip_object = IPv4Address(address=processed_value)
|
|
70
61
|
|
|
71
|
-
|
|
62
|
+
except Exception:
|
|
63
|
+
self._raise_value_is_not_valid_ipv4_address(value=value)
|
|
72
64
|
|
|
73
|
-
|
|
74
|
-
def _ipv4_address_validate(cls, value: str) -> IPv4Address:
|
|
65
|
+
def _raise_value_is_not_valid_ipv4_address(self, value: str) -> None:
|
|
75
66
|
"""
|
|
76
|
-
|
|
67
|
+
Raises a ValueError if the value is not a valid IPv4 address.
|
|
77
68
|
|
|
78
69
|
Args:
|
|
79
|
-
value (str):
|
|
70
|
+
value (str): Value.
|
|
80
71
|
|
|
81
72
|
Raises:
|
|
82
73
|
ValueError: If the value is not a valid IPv4 address.
|
|
83
|
-
|
|
84
|
-
Returns:
|
|
85
|
-
IPv4Address: IPv4 address.
|
|
86
74
|
"""
|
|
87
|
-
|
|
88
|
-
return IPv4Address(address=value)
|
|
89
|
-
|
|
90
|
-
except AddressValueError as error:
|
|
91
|
-
raise ValueError(f'Ipv4AddressValueObject value <<<{value}>>> is not a valid IPv4 address.') from error
|
|
75
|
+
raise ValueError(f'Ipv4AddressValueObject value <<<{value}>>> is not a valid IPv4 address.')
|
|
92
76
|
|
|
93
77
|
def is_reserved(self) -> bool:
|
|
94
78
|
"""
|
|
@@ -104,13 +88,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
104
88
|
```python
|
|
105
89
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
106
90
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
print(is_reserved)
|
|
91
|
+
ip = Ipv4AddressValueObject(value='240.0.0.0')
|
|
92
|
+
print(ip.is_reserved())
|
|
110
93
|
# >>> True
|
|
111
94
|
```
|
|
112
95
|
"""
|
|
113
|
-
return self.
|
|
96
|
+
return self._internal_ip_object.is_reserved
|
|
114
97
|
|
|
115
98
|
def is_private(self) -> bool:
|
|
116
99
|
"""
|
|
@@ -126,13 +109,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
126
109
|
```python
|
|
127
110
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
128
111
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
print(is_private)
|
|
112
|
+
ip = Ipv4AddressValueObject(value='192.168.10.4')
|
|
113
|
+
print(ip.is_private())
|
|
132
114
|
# >>> True
|
|
133
115
|
```
|
|
134
116
|
"""
|
|
135
|
-
return self.
|
|
117
|
+
return self._internal_ip_object.is_private
|
|
136
118
|
|
|
137
119
|
def is_global(self) -> bool:
|
|
138
120
|
"""
|
|
@@ -148,13 +130,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
148
130
|
```python
|
|
149
131
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
150
132
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
print(is_global)
|
|
133
|
+
ip = Ipv4AddressValueObject(value='66.162.207.81')
|
|
134
|
+
print(ip.is_global())
|
|
154
135
|
# >>> True
|
|
155
136
|
```
|
|
156
137
|
"""
|
|
157
|
-
return self.
|
|
138
|
+
return self._internal_ip_object.is_global
|
|
158
139
|
|
|
159
140
|
def is_multicast(self) -> bool:
|
|
160
141
|
"""
|
|
@@ -170,13 +151,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
170
151
|
```python
|
|
171
152
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
172
153
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
print(is_multicast)
|
|
154
|
+
ip = Ipv4AddressValueObject(value='224.0.0.1')
|
|
155
|
+
print(ip.is_multicast())
|
|
176
156
|
# >>> True
|
|
177
157
|
```
|
|
178
158
|
"""
|
|
179
|
-
return self.
|
|
159
|
+
return self._internal_ip_object.is_multicast
|
|
180
160
|
|
|
181
161
|
def is_unspecified(self) -> bool:
|
|
182
162
|
"""
|
|
@@ -192,13 +172,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
192
172
|
```python
|
|
193
173
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
194
174
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
print(is_unspecified)
|
|
175
|
+
ip = Ipv4AddressValueObject(value='0.0.0.0')
|
|
176
|
+
print(ip.is_unspecified())
|
|
198
177
|
# >>> True
|
|
199
178
|
```
|
|
200
179
|
"""
|
|
201
|
-
return self.
|
|
180
|
+
return self._internal_ip_object.is_unspecified
|
|
202
181
|
|
|
203
182
|
def is_loopback(self) -> bool:
|
|
204
183
|
"""
|
|
@@ -214,13 +193,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
214
193
|
```python
|
|
215
194
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
216
195
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
print(is_loopback)
|
|
196
|
+
ip = Ipv4AddressValueObject(value='127.0.0.1')
|
|
197
|
+
print(ip.is_loopback())
|
|
220
198
|
# >>> True
|
|
221
199
|
```
|
|
222
200
|
"""
|
|
223
|
-
return self.
|
|
201
|
+
return self._internal_ip_object.is_loopback
|
|
224
202
|
|
|
225
203
|
def is_link_local(self) -> bool:
|
|
226
204
|
"""
|
|
@@ -236,13 +214,12 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
236
214
|
```python
|
|
237
215
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
238
216
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
print(is_link_local)
|
|
217
|
+
ip = Ipv4AddressValueObject(value='169.254.0.0')
|
|
218
|
+
print(ip.is_link_local())
|
|
242
219
|
# >>> True
|
|
243
220
|
```
|
|
244
221
|
"""
|
|
245
|
-
return self.
|
|
222
|
+
return self._internal_ip_object.is_link_local
|
|
246
223
|
|
|
247
224
|
@classmethod
|
|
248
225
|
def UNSPECIFIED(cls) -> Ipv4AddressValueObject:
|
|
@@ -257,7 +234,6 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
257
234
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
258
235
|
|
|
259
236
|
ip = Ipv4AddressValueObject.UNSPECIFIED()
|
|
260
|
-
|
|
261
237
|
print(repr(ip))
|
|
262
238
|
# >>> Ipv4AddressValueObject(value=0.0.0.0)
|
|
263
239
|
```
|
|
@@ -277,7 +253,6 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
277
253
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
278
254
|
|
|
279
255
|
ip = Ipv4AddressValueObject.LOOPBACK()
|
|
280
|
-
|
|
281
256
|
print(repr(ip))
|
|
282
257
|
# >>> Ipv4AddressValueObject(value=127.0.0.1)
|
|
283
258
|
```
|
|
@@ -297,7 +272,6 @@ class Ipv4AddressValueObject(NotEmptyStringValueObject, TrimmedStringValueObject
|
|
|
297
272
|
from value_object_pattern.usables.internet import Ipv4AddressValueObject
|
|
298
273
|
|
|
299
274
|
ip = Ipv4AddressValueObject.BROADCAST()
|
|
300
|
-
|
|
301
275
|
print(repr(ip))
|
|
302
276
|
# >>> Ipv4AddressValueObject(value=255.255.255.255)
|
|
303
277
|
```
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# ruff: noqa: N802
|
|
2
|
+
"""
|
|
3
|
+
Ipv4NetworkValueObject value object.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from ipaddress import IPv4Network, NetmaskValueError
|
|
7
|
+
from typing import Generator, NoReturn
|
|
8
|
+
|
|
9
|
+
from value_object_pattern.decorators import process, validation
|
|
10
|
+
from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
|
|
11
|
+
|
|
12
|
+
from .ipv4_address_value_object import Ipv4AddressValueObject
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Ipv4NetworkValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
|
16
|
+
"""
|
|
17
|
+
Ipv4NetworkValueObject value object ensures the provided value is a valid IPv4 network.
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
```python
|
|
21
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
22
|
+
|
|
23
|
+
network = Ipv4NetworkValueObject(value='66.162.207.81')
|
|
24
|
+
print(repr(network))
|
|
25
|
+
# >>> Ipv4NetworkValueObject(value=66.162.207.81/32)
|
|
26
|
+
```
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
_internal_network_object: IPv4Network
|
|
30
|
+
|
|
31
|
+
@process(order=0)
|
|
32
|
+
def _ensure_value_is_normalized(self, value: str) -> str:
|
|
33
|
+
"""
|
|
34
|
+
Ensures the value object value is normalized IPv4 network.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
value (str): Value.
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
str: Value with the normalized IPv4 network.
|
|
41
|
+
"""
|
|
42
|
+
return str(object=IPv4Network(address=value))
|
|
43
|
+
|
|
44
|
+
@validation(order=0)
|
|
45
|
+
def _ensure_value_is_valid_ipv4_network(self, value: str) -> None:
|
|
46
|
+
"""
|
|
47
|
+
Ensures the value object value is a valid IPv4 network.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
value (str): Value.
|
|
51
|
+
|
|
52
|
+
Raises:
|
|
53
|
+
ValueError: If the value does not have a valid netmask.
|
|
54
|
+
ValueError: If the value is not a valid IPv4 network.
|
|
55
|
+
"""
|
|
56
|
+
try:
|
|
57
|
+
self._internal_network_object = IPv4Network(address=value)
|
|
58
|
+
|
|
59
|
+
except NetmaskValueError:
|
|
60
|
+
self._raise_value_has_not_a_valid_netmask(value=value)
|
|
61
|
+
|
|
62
|
+
except Exception:
|
|
63
|
+
self._raise_value_is_not_ipv4_network(value=value)
|
|
64
|
+
|
|
65
|
+
def _raise_value_has_not_a_valid_netmask(self, value: str) -> NoReturn:
|
|
66
|
+
"""
|
|
67
|
+
Raises a ValueError if the value does not have a valid netmask.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
value (str): The provided value.
|
|
71
|
+
|
|
72
|
+
Raises:
|
|
73
|
+
ValueError: If the value does not have a valid netmask.
|
|
74
|
+
"""
|
|
75
|
+
raise ValueError(f'Ipv4NetworkValueObject value <<<{value}>>> has an invalid netmask.')
|
|
76
|
+
|
|
77
|
+
def _raise_value_is_not_ipv4_network(self, value: str) -> NoReturn:
|
|
78
|
+
"""
|
|
79
|
+
Raises a TypeError if the value is not a valid IPv4 network.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
value (str): The provided value.
|
|
83
|
+
|
|
84
|
+
Raises:
|
|
85
|
+
TypeError: If the value is not a valid IPv4 network.
|
|
86
|
+
"""
|
|
87
|
+
raise ValueError(f'Ipv4NetworkValueObject value <<<{value}>>> is not a valid IPv4 network.')
|
|
88
|
+
|
|
89
|
+
def hosts(self) -> Generator[Ipv4AddressValueObject, None, None]: # noqa: UP043
|
|
90
|
+
"""
|
|
91
|
+
Returns an iterator over the addresses of the given IPv4 network excluding the network and broadcast addresses.
|
|
92
|
+
If you want to iterate over all the addresses including the network and broadcast addresses, use the
|
|
93
|
+
`all_addresses` method.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
Generator[Ipv4AddressValueObject, None, None]: Iterator of IP addresses.
|
|
97
|
+
|
|
98
|
+
Example:
|
|
99
|
+
```python
|
|
100
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
101
|
+
|
|
102
|
+
network = Ipv4NetworkValueObject(value='192.168.10.0/24')
|
|
103
|
+
for address in network.hosts():
|
|
104
|
+
print(repr(address))
|
|
105
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.1')
|
|
106
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.2')
|
|
107
|
+
# >>> ...
|
|
108
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.253')
|
|
109
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.254')
|
|
110
|
+
```
|
|
111
|
+
"""
|
|
112
|
+
for address in self._internal_network_object.hosts():
|
|
113
|
+
yield Ipv4AddressValueObject(value=str(object=address))
|
|
114
|
+
|
|
115
|
+
def all_addresses(self) -> Generator[Ipv4AddressValueObject, None, None]: # noqa: UP043
|
|
116
|
+
"""
|
|
117
|
+
Returns an iterator over all the addresses of the given IPv4 network, including the network and broadcast
|
|
118
|
+
addresses. If you want to iterate over the addresses excluding the network and broadcast addresses,
|
|
119
|
+
use the `hosts` method.
|
|
120
|
+
|
|
121
|
+
Returns:
|
|
122
|
+
Generator[Ipv4AddressValueObject, None, None]: Iterator of IP addresses.
|
|
123
|
+
|
|
124
|
+
Example:
|
|
125
|
+
```python
|
|
126
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
127
|
+
|
|
128
|
+
network = Ipv4NetworkValueObject(value='192.168.10.0/24')
|
|
129
|
+
for address in network.all_addresses():
|
|
130
|
+
print(repr(address))
|
|
131
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.0')
|
|
132
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.1')
|
|
133
|
+
# >>> ...
|
|
134
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.254')
|
|
135
|
+
# >>> Ipv4AddressValueObject(value='192.168.10.255')
|
|
136
|
+
```
|
|
137
|
+
"""
|
|
138
|
+
for address in self._internal_network_object:
|
|
139
|
+
yield Ipv4AddressValueObject(value=str(address))
|
|
140
|
+
|
|
141
|
+
def get_network(self) -> Ipv4AddressValueObject:
|
|
142
|
+
"""
|
|
143
|
+
Returns the network of the given IPv4 network.
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
value (str): IPv4 network.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
Ipv4AddressValueObject: The network IPv4 address.
|
|
150
|
+
|
|
151
|
+
Example:
|
|
152
|
+
```python
|
|
153
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
154
|
+
|
|
155
|
+
network = Ipv4NetworkValueObject(value='192.168.10.0/24')
|
|
156
|
+
print(repr(network.get_network()))
|
|
157
|
+
# >>> Ipv4AddressValueObject(value=192.168.10.0)
|
|
158
|
+
```
|
|
159
|
+
"""
|
|
160
|
+
return Ipv4AddressValueObject(value=str(object=self._internal_network_object.network_address))
|
|
161
|
+
|
|
162
|
+
def get_broadcast(self) -> Ipv4AddressValueObject:
|
|
163
|
+
"""
|
|
164
|
+
Returns the broadcast of the given IPv4 network.
|
|
165
|
+
|
|
166
|
+
Args:
|
|
167
|
+
value (str): IPv4 network.
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
Ipv4AddressValueObject: The broadcast IPv4 address.
|
|
171
|
+
|
|
172
|
+
Example:
|
|
173
|
+
```python
|
|
174
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
175
|
+
|
|
176
|
+
network = Ipv4NetworkValueObject(value='192.168.10.0/24')
|
|
177
|
+
print(repr(network.get_broadcast()))
|
|
178
|
+
# >>> Ipv4AddressValueObject(value=192.168.10.255)
|
|
179
|
+
```
|
|
180
|
+
"""
|
|
181
|
+
return Ipv4AddressValueObject(value=str(object=self._internal_network_object.broadcast_address))
|
|
182
|
+
|
|
183
|
+
def get_mask(self) -> int:
|
|
184
|
+
"""
|
|
185
|
+
Returns the mask of the given IPv4 network.
|
|
186
|
+
|
|
187
|
+
Args:
|
|
188
|
+
value (str): IPv4 network.
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
int: The network mask.
|
|
192
|
+
|
|
193
|
+
Example:
|
|
194
|
+
```python
|
|
195
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
196
|
+
|
|
197
|
+
network = Ipv4NetworkValueObject(value='192.168.10.0/24')
|
|
198
|
+
print(network.get_mask())
|
|
199
|
+
# >>> 24
|
|
200
|
+
```
|
|
201
|
+
"""
|
|
202
|
+
return self._internal_network_object.prefixlen
|
|
203
|
+
|
|
204
|
+
def get_number_addresses(self) -> int:
|
|
205
|
+
"""
|
|
206
|
+
Returns the number of addresses of the given IPv4 network.
|
|
207
|
+
|
|
208
|
+
Args:
|
|
209
|
+
value (str): IPv4 network.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
int: The number of addresses.
|
|
213
|
+
|
|
214
|
+
Example:
|
|
215
|
+
```python
|
|
216
|
+
from value_object_pattern.usables.internet import Ipv4NetworkValueObject
|
|
217
|
+
|
|
218
|
+
network = Ipv4NetworkValueObject(value='192.168.10.0/24')
|
|
219
|
+
print(network.get_number_addresses())
|
|
220
|
+
# >>> 256
|
|
221
|
+
```
|
|
222
|
+
"""
|
|
223
|
+
return self._internal_network_object.num_addresses
|