value-object-pattern 1.32.0__tar.gz → 1.33.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/PKG-INFO +1 -1
  2. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/__init__.py +1 -1
  3. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/__init__.py +2 -0
  4. value_object_pattern-1.33.0/value_object_pattern/usables/internet/domain_or_localhost_value_object.py +22 -0
  5. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/domain_value_object.py +5 -1
  6. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/host_value_object.py +3 -3
  7. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/url_value_object.py +19 -3
  8. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/.gitignore +0 -0
  9. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/LICENSE.md +0 -0
  10. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/README.md +0 -0
  11. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/pyproject.toml +0 -0
  12. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/__init__.py +0 -0
  13. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/classproperty.py +0 -0
  14. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/value_object_process.py +0 -0
  15. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
  16. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/__init__.py +0 -0
  17. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/base_model.py +0 -0
  18. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/collections/__init__.py +0 -0
  19. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/collections/dict_value_object.py +0 -0
  20. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/collections/list_value_object.py +0 -0
  21. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
  22. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/primitive_conversion.py +0 -0
  23. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/type_matching.py +0 -0
  24. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/union_value_object.py +0 -0
  25. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/models/value_object.py +0 -0
  26. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/py.typed +0 -0
  27. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/__init__.py +0 -0
  28. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/__init__.py +0 -0
  29. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  30. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  31. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  32. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  33. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  34. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  35. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  36. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  37. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  38. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  39. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
  40. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
  41. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
  42. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
  43. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
  44. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
  45. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
  46. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
  47. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
  48. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
  49. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
  50. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
  51. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
  52. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
  53. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
  54. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
  55. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
  56. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
  57. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
  58. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
  59. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
  60. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
  61. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
  62. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
  63. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
  64. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
  65. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
  66. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
  67. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
  68. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
  69. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
  70. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
  71. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
  72. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
  73. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
  74. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
  75. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
  76. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
  77. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
  78. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
  79. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
  80. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
  81. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
  82. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
  83. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
  84. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
  85. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
  86. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
  87. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
  88. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
  89. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
  90. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
  91. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
  92. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
  93. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
  94. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
  95. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
  96. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
  97. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
  98. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
  99. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
  100. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
  101. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
  102. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
  103. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
  104. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
  105. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
  106. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
  107. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
  108. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  109. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
  110. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
  111. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  112. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  113. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  114. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  115. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/keys/__init__.py +0 -0
  116. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/keys/kebab_case_key_value_object.py +0 -0
  117. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/keys/snake_case_key_value_object.py +0 -0
  118. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  119. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
  120. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
  121. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
  122. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
  123. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
  124. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
  125. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
  126. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
  127. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  128. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/slug_value_object.py +0 -0
  129. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  130. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  131. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  132. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  133. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/user_agent_value_object.py +0 -0
  134. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
  135. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
  136. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
  137. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/__init__.py +0 -0
  138. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
  139. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
  140. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
  141. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
  142. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
  143. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
  144. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
  145. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
  146. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
  147. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
  148. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  149. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  150. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  151. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  152. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  153. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  154. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  155. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  156. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  157. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
  158. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  159. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
  160. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  161. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  162. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  163. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  164. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
  165. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  166. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  167. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
  168. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  169. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  170. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  171. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
  172. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  173. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  174. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/base64_value_object.py +0 -0
  175. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/camel_case_string_value_object.py +0 -0
  176. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  177. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/kebab_case_string_value_object.py +0 -0
  178. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  179. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  180. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/pascal_case_string_value_object.py +0 -0
  181. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  182. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/screaming_snake_case_string_value_object.py +0 -0
  183. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/secret_string_value_object.py +0 -0
  184. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/snake_case_string_value_object.py +0 -0
  185. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  186. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  187. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
  188. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/utils/__init__.py +0 -0
  189. {value_object_pattern-1.32.0 → value_object_pattern-1.33.0}/value_object_pattern/usables/utils/luhn_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: value-object-pattern
3
- Version: 1.32.0
3
+ Version: 1.33.0
4
4
  Summary: The Value Object Pattern is a Python package that streamlines the creation and management of value objects in your projects.
5
5
  Project-URL: Homepage, https://github.com/adriamontoto/value-object-pattern
6
6
  Project-URL: Repository, https://github.com/adriamontoto/value-object-pattern
@@ -1,4 +1,4 @@
1
- __version__ = '1.32.0'
1
+ __version__ = '1.33.0'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import BaseModel, EnumerationValueObject, UnionValueObject, ValueObject
@@ -1,4 +1,5 @@
1
1
  from .aws_cloud_region_value_object import AwsCloudRegionValueObject
2
+ from .domain_or_localhost_value_object import DomainOrLocalhostValueObject
2
3
  from .domain_value_object import DomainValueObject
3
4
  from .email_address_value_object import EmailAddressValueObject
4
5
  from .host_value_object import HostValueObject
@@ -16,6 +17,7 @@ from .user_agent_value_object import UserAgentValueObject
16
17
 
17
18
  __all__ = (
18
19
  'AwsCloudRegionValueObject',
20
+ 'DomainOrLocalhostValueObject',
19
21
  'DomainValueObject',
20
22
  'EmailAddressValueObject',
21
23
  'HostValueObject',
@@ -0,0 +1,22 @@
1
+ """
2
+ DomainOrLocalhostValueObject value object.
3
+ """
4
+
5
+ from .domain_value_object import DomainValueObject
6
+
7
+
8
+ class DomainOrLocalhostValueObject(DomainValueObject):
9
+ """
10
+ DomainOrLocalhostValueObject ensures the provided value is a valid domain or localhost.
11
+
12
+ Example:
13
+ ```python
14
+ from value_object_pattern.usables.internet import DomainOrLocalhostValueObject
15
+
16
+ domain = DomainOrLocalhostValueObject(value='localhost')
17
+ print(repr(domain))
18
+ # >>> DomainOrLocalhostValueObject(value=localhost)
19
+ ```
20
+ """
21
+
22
+ _DOMAIN_VALID_SINGLE_LABELS: frozenset[str] = frozenset({'localhost'})
@@ -32,6 +32,7 @@ class DomainValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
32
32
  _DOMAIN_MAX_LABEL_LENGTH: int = 63
33
33
  _DOMAIN_MAX_DOMAIN_LENGTH: int = 253
34
34
  _DOMAIN_REGEX: Pattern[str] = re_compile(pattern=r'[0-9a-zA-Z-]+')
35
+ _DOMAIN_VALID_SINGLE_LABELS: frozenset[str] = frozenset()
35
36
 
36
37
  @process(order=0)
37
38
  def _ensure_domain_is_in_lowercase(self, value: str) -> str:
@@ -72,7 +73,10 @@ class DomainValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
72
73
  ValueError: If domain value has not a valid top level domain.
73
74
  """
74
75
  if '.' not in processed_value:
75
- self._raise_value_has_not_valid_top_level_domain(value=value)
76
+ if processed_value not in self._DOMAIN_VALID_SINGLE_LABELS:
77
+ self._raise_value_has_not_valid_top_level_domain(value=value)
78
+
79
+ return
76
80
 
77
81
  tdl = processed_value.split(sep='.')[-1]
78
82
  if tdl not in get_tld_dict():
@@ -7,7 +7,7 @@ from typing import NoReturn
7
7
  from value_object_pattern import process, validation
8
8
  from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
9
9
 
10
- from .domain_value_object import DomainValueObject
10
+ from .domain_or_localhost_value_object import DomainOrLocalhostValueObject
11
11
  from .ipv4_address_value_object import Ipv4AddressValueObject
12
12
  from .ipv6_address_value_object import Ipv6AddressValueObject
13
13
 
@@ -38,7 +38,7 @@ class HostValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
38
38
  str: The host value stored in respective format.
39
39
  """
40
40
  if self._is_domain(value=value):
41
- return DomainValueObject(value=value).value
41
+ return DomainOrLocalhostValueObject(value=value).value
42
42
 
43
43
  if self._is_ipv4_address(value=value):
44
44
  return Ipv4AddressValueObject(value=value).value
@@ -104,7 +104,7 @@ class HostValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
104
104
  bool: True if the value is a domain, False otherwise.
105
105
  """
106
106
  try:
107
- DomainValueObject(value=value)
107
+ DomainOrLocalhostValueObject(value=value)
108
108
  return True
109
109
 
110
110
  except (TypeError, ValueError):
@@ -37,6 +37,9 @@ def join_url(
37
37
  Returns:
38
38
  str: The URL joined.
39
39
  """
40
+ if ':' in host and not host.startswith('['):
41
+ host = f'[{host}]'
42
+
40
43
  netloc = host
41
44
  if user_information:
42
45
  netloc = f'{user_information}@{netloc}'
@@ -88,9 +91,18 @@ def split_netloc(value: str) -> tuple[str | None, str, int | None]:
88
91
  # prevent splitting passwords with @
89
92
  user_information, host_port = value.rsplit(sep='@', maxsplit=1)
90
93
 
94
+ if host_port.startswith('['):
95
+ host, _, port_string = host_port[1:].partition(']')
96
+ if port_string:
97
+ port = int(port_string.removeprefix(':'))
98
+
99
+ return user_information, host, port
100
+
101
+ if host_port.count(':') > 1:
102
+ raise ValueError('IPv6 URL hosts must be enclosed in brackets.')
103
+
91
104
  host = host_port
92
- if ':' in host_port and host_port.count(':') == 1:
93
- # prevent splitting IPv6 addresses
105
+ if ':' in host_port:
94
106
  host, port_string = host_port.rsplit(sep=':', maxsplit=1)
95
107
  port = int(port_string)
96
108
 
@@ -207,7 +219,11 @@ class UrlValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
207
219
  https://www.rfc-editor.org/rfc/rfc3986#section-3.2.3
208
220
  """
209
221
  _, netloc, *_ = split_url(value=value)
210
- user_information, host, port = split_netloc(value=netloc)
222
+ try:
223
+ user_information, host, port = split_netloc(value=netloc)
224
+
225
+ except ValueError as error:
226
+ raise ValueError(f'UrlValueObject value <<<{value}>>> is not a valid url.') from error
211
227
 
212
228
  if user_information is not None and not self._URL_USER_INFORMATION_REGEX.match(string=user_information): # noqa: E501 # fmt: skip
213
229
  raise ValueError(f'UrlValueObject value <<<{value}>>> has not a valid user information <<<{user_information}>>>.') # noqa: E501 # fmt: skip