value-object-pattern 1.2.0__tar.gz → 1.3.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 (151) hide show
  1. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/PKG-INFO +1 -1
  2. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/__init__.py +1 -1
  3. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/models/value_object.py +8 -2
  4. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +17 -4
  5. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/domain_value_object.py +3 -4
  6. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/port_value_object.py +15 -36
  7. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/utils/__init__.py +5 -10
  8. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/.gitignore +0 -0
  9. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/LICENSE.md +0 -0
  10. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/README.md +0 -0
  11. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/pyproject.toml +0 -0
  12. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/decorators/__init__.py +0 -0
  13. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/decorators/value_object_process.py +0 -0
  14. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
  15. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/models/__init__.py +0 -0
  16. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/models/base_model.py +0 -0
  17. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/models/collections/__init__.py +0 -0
  18. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/models/collections/list_value_object.py +0 -0
  19. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
  20. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/py.typed +0 -0
  21. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/__init__.py +0 -0
  22. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/__init__.py +0 -0
  23. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  24. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  25. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  26. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  27. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  28. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  29. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  30. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  31. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  32. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  33. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
  34. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
  35. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
  36. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
  37. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
  38. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
  39. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
  40. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
  41. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
  42. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
  43. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
  44. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
  45. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
  46. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
  47. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
  48. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
  49. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
  50. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
  51. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
  52. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
  53. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
  54. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
  55. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
  56. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
  57. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
  58. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
  59. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
  60. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
  61. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
  62. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
  63. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
  64. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
  65. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
  66. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
  67. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
  68. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
  69. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
  70. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
  71. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
  72. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
  73. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
  74. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
  75. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
  76. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
  77. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
  78. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
  79. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
  80. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
  81. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
  82. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
  83. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
  84. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
  85. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
  86. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
  87. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
  88. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/__init__.py +0 -0
  89. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  90. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  91. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  92. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  93. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  94. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  95. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
  96. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
  97. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
  98. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
  99. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
  100. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
  101. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
  102. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
  103. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  104. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  105. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  106. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  107. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  108. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
  109. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
  110. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/__init__.py +0 -0
  111. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
  112. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
  113. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
  114. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
  115. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
  116. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
  117. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
  118. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
  119. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
  120. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
  121. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  122. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  123. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  124. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  125. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  126. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  127. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  128. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  129. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  130. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  131. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  132. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  133. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  134. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  135. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  136. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  137. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  138. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  139. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  140. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
  141. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  142. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  143. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  144. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  145. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  146. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  147. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  148. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  149. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
  150. {value_object_pattern-1.2.0 → value_object_pattern-1.3.0}/value_object_pattern/usables/utils/__init__.py +0 -0
  151. {value_object_pattern-1.2.0 → value_object_pattern-1.3.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.2.0
3
+ Version: 1.3.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.2.0'
1
+ __version__ = '1.3.0'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import BaseModel, EnumerationValueObject, ValueObject
@@ -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, NoReturn, TypeVar
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) -> NoReturn:
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
- key = AwsCloudRegionValueObject(value='us-east-1')
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
- raise ValueError(f'AwsCloudRegionValueObject value <<<{value}>>> does not exist.')
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
- key = DomainValueObject(value='github.com')
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()[len(tdl)]:
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,6 +5,8 @@ PortValueObject value object.
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
+ from typing import NoReturn
9
+
8
10
  from value_object_pattern.decorators import validation
9
11
  from value_object_pattern.usables import IntegerValueObject
10
12
 
@@ -18,7 +20,6 @@ class PortValueObject(IntegerValueObject):
18
20
  from value_object_pattern.usables.internet import PortValueObject
19
21
 
20
22
  port = PortValueObject(value=443)
21
-
22
23
  print(repr(port))
23
24
  # >>> PortValueObject(value=443)
24
25
  ```
@@ -39,7 +40,19 @@ class PortValueObject(IntegerValueObject):
39
40
  ValueError: If the `value` is not a valid port.
40
41
  """
41
42
  if value < self._PORT_MIN_PORT or value > self._PORT_MAX_PORT:
42
- raise ValueError(f'PortValueObject value <<<{value}>>> must be between {self._PORT_MIN_PORT} and {self._PORT_MAX_PORT}.') # noqa: E501 # fmt: skip
43
+ self._raise_value_is_not_port(value=value)
44
+
45
+ def _raise_value_is_not_port(self, value: int) -> NoReturn:
46
+ """
47
+ Raises a ValueError if the value object `value` is not a valid port.
48
+
49
+ Args:
50
+ value (int): The provided value.
51
+
52
+ Raises:
53
+ ValueError: If the `value` is not a valid port.
54
+ """
55
+ raise ValueError(f'PortValueObject value <<<{value}>>> must be between {self._PORT_MIN_PORT} and {self._PORT_MAX_PORT}.') # noqa: E501 # fmt: skip
43
56
 
44
57
  @classmethod
45
58
  def system_ports(cls) -> tuple[PortValueObject, PortValueObject]:
@@ -57,7 +70,6 @@ class PortValueObject(IntegerValueObject):
57
70
  from value_object_pattern.usables.internet import PortValueObject
58
71
 
59
72
  system_ports = PortValueObject.system_ports()
60
-
61
73
  print(repr(system_ports))
62
74
  # >>> (PortValueObject(value=0), PortValueObject(value=1023))
63
75
  ```
@@ -80,7 +92,6 @@ class PortValueObject(IntegerValueObject):
80
92
  from value_object_pattern.usables.internet import PortValueObject
81
93
 
82
94
  user_ports = PortValueObject.user_ports()
83
-
84
95
  print(repr(user_ports))
85
96
  # >>> (PortValueObject(value=1024), PortValueObject(value=49151))
86
97
  ```
@@ -123,7 +134,6 @@ class PortValueObject(IntegerValueObject):
123
134
  from value_object_pattern.usables.internet import PortValueObject
124
135
 
125
136
  port = PortValueObject.FTP_DATA()
126
-
127
137
  print(repr(port))
128
138
  # >>> PortValueObject(value=20)
129
139
  ```
@@ -143,7 +153,6 @@ class PortValueObject(IntegerValueObject):
143
153
  from value_object_pattern.usables.internet import PortValueObject
144
154
 
145
155
  port = PortValueObject.FTP_DATA()
146
-
147
156
  print(repr(port))
148
157
  # >>> PortValueObject(value=21)
149
158
  ```
@@ -163,7 +172,6 @@ class PortValueObject(IntegerValueObject):
163
172
  from value_object_pattern.usables.internet import PortValueObject
164
173
 
165
174
  port = PortValueObject.SSH()
166
-
167
175
  print(repr(port))
168
176
  # >>> PortValueObject(value=22)
169
177
  ```
@@ -183,7 +191,6 @@ class PortValueObject(IntegerValueObject):
183
191
  from value_object_pattern.usables.internet import PortValueObject
184
192
 
185
193
  port = PortValueObject.TELNET()
186
-
187
194
  print(repr(port))
188
195
  # >>> PortValueObject(value=23)
189
196
  ```
@@ -203,7 +210,6 @@ class PortValueObject(IntegerValueObject):
203
210
  from value_object_pattern.usables.internet import PortValueObject
204
211
 
205
212
  port = PortValueObject.SMTP()
206
-
207
213
  print(repr(port))
208
214
  # >>> PortValueObject(value=25)
209
215
  ```
@@ -223,7 +229,6 @@ class PortValueObject(IntegerValueObject):
223
229
  from value_object_pattern.usables.internet import PortValueObject
224
230
 
225
231
  port = PortValueObject.DNS()
226
-
227
232
  print(repr(port))
228
233
  # >>> PortValueObject(value=53)
229
234
  ```
@@ -243,7 +248,6 @@ class PortValueObject(IntegerValueObject):
243
248
  from value_object_pattern.usables.internet import PortValueObject
244
249
 
245
250
  port = PortValueObject.DHCP_SERVER()
246
-
247
251
  print(repr(port))
248
252
  # >>> PortValueObject(value=67)
249
253
  ```
@@ -263,7 +267,6 @@ class PortValueObject(IntegerValueObject):
263
267
  from value_object_pattern.usables.internet import PortValueObject
264
268
 
265
269
  port = PortValueObject.DHCP_CLIENT()
266
-
267
270
  print(repr(port))
268
271
  # >>> PortValueObject(value=68)
269
272
  ```
@@ -283,7 +286,6 @@ class PortValueObject(IntegerValueObject):
283
286
  from value_object_pattern.usables.internet import PortValueObject
284
287
 
285
288
  port = PortValueObject.HTTP()
286
-
287
289
  print(repr(port))
288
290
  # >>> PortValueObject(value=80)
289
291
  ```
@@ -303,7 +305,6 @@ class PortValueObject(IntegerValueObject):
303
305
  from value_object_pattern.usables.internet import PortValueObject
304
306
 
305
307
  port = PortValueObject.POP3()
306
-
307
308
  print(repr(port))
308
309
  # >>> PortValueObject(value=110)
309
310
  ```
@@ -323,7 +324,6 @@ class PortValueObject(IntegerValueObject):
323
324
  from value_object_pattern.usables.internet import PortValueObject
324
325
 
325
326
  port = PortValueObject.NTP()
326
-
327
327
  print(repr(port))
328
328
  # >>> PortValueObject(value=123)
329
329
  ```
@@ -343,7 +343,6 @@ class PortValueObject(IntegerValueObject):
343
343
  from value_object_pattern.usables.internet import PortValueObject
344
344
 
345
345
  port = PortValueObject.IMAP()
346
-
347
346
  print(repr(port))
348
347
  # >>> PortValueObject(value=143)
349
348
  ```
@@ -363,7 +362,6 @@ class PortValueObject(IntegerValueObject):
363
362
  from value_object_pattern.usables.internet import PortValueObject
364
363
 
365
364
  port = PortValueObject.SNMP_MONITOR()
366
-
367
365
  print(repr(port))
368
366
  # >>> PortValueObject(value=161)
369
367
  ```
@@ -383,7 +381,6 @@ class PortValueObject(IntegerValueObject):
383
381
  from value_object_pattern.usables.internet import PortValueObject
384
382
 
385
383
  port = PortValueObject.SNMP_TRAP()
386
-
387
384
  print(repr(port))
388
385
  # >>> PortValueObject(value=162)
389
386
  ```
@@ -403,7 +400,6 @@ class PortValueObject(IntegerValueObject):
403
400
  from value_object_pattern.usables.internet import PortValueObject
404
401
 
405
402
  port = PortValueObject.LDAP()
406
-
407
403
  print(repr(port))
408
404
  # >>> PortValueObject(value=389)
409
405
  ```
@@ -423,7 +419,6 @@ class PortValueObject(IntegerValueObject):
423
419
  from value_object_pattern.usables.internet import PortValueObject
424
420
 
425
421
  port = PortValueObject.HTTPS()
426
-
427
422
  print(repr(port))
428
423
  # >>> PortValueObject(value=443)
429
424
  ```
@@ -443,7 +438,6 @@ class PortValueObject(IntegerValueObject):
443
438
  from value_object_pattern.usables.internet import PortValueObject
444
439
 
445
440
  port = PortValueObject.DoH()
446
-
447
441
  print(repr(port))
448
442
  # >>> PortValueObject(value=443)
449
443
  ```
@@ -463,7 +457,6 @@ class PortValueObject(IntegerValueObject):
463
457
  from value_object_pattern.usables.internet import PortValueObject
464
458
 
465
459
  port = PortValueObject.SMTPS()
466
-
467
460
  print(repr(port))
468
461
  # >>> PortValueObject(value=465)
469
462
  ```
@@ -483,7 +476,6 @@ class PortValueObject(IntegerValueObject):
483
476
  from value_object_pattern.usables.internet import PortValueObject
484
477
 
485
478
  port = PortValueObject.DoT()
486
-
487
479
  print(repr(port))
488
480
  # >>> PortValueObject(value=853)
489
481
  ```
@@ -503,7 +495,6 @@ class PortValueObject(IntegerValueObject):
503
495
  from value_object_pattern.usables.internet import PortValueObject
504
496
 
505
497
  port = PortValueObject.IMAPS()
506
-
507
498
  print(repr(port))
508
499
  # >>> PortValueObject(value=993)
509
500
  ```
@@ -523,7 +514,6 @@ class PortValueObject(IntegerValueObject):
523
514
  from value_object_pattern.usables.internet import PortValueObject
524
515
 
525
516
  port = PortValueObject.POP3S()
526
-
527
517
  print(repr(port))
528
518
  # >>> PortValueObject(value=995)
529
519
  ```
@@ -543,7 +533,6 @@ class PortValueObject(IntegerValueObject):
543
533
  from value_object_pattern.usables.internet import PortValueObject
544
534
 
545
535
  port = PortValueObject.OPENVPN()
546
-
547
536
  print(repr(port))
548
537
  # >>> PortValueObject(value=1194)
549
538
  ```
@@ -563,7 +552,6 @@ class PortValueObject(IntegerValueObject):
563
552
  from value_object_pattern.usables.internet import PortValueObject
564
553
 
565
554
  port = PortValueObject.MICROSOFT_SQL_SERVER()
566
-
567
555
  print(repr(port))
568
556
  # >>> PortValueObject(value=1433)
569
557
  ```
@@ -583,7 +571,6 @@ class PortValueObject(IntegerValueObject):
583
571
  from value_object_pattern.usables.internet import PortValueObject
584
572
 
585
573
  port = PortValueObject.ORACLE()
586
-
587
574
  print(repr(port))
588
575
  # >>> PortValueObject(value=1521)
589
576
  ```
@@ -603,7 +590,6 @@ class PortValueObject(IntegerValueObject):
603
590
  from value_object_pattern.usables.internet import PortValueObject
604
591
 
605
592
  port = PortValueObject.MYSQL()
606
-
607
593
  print(repr(port))
608
594
  # >>> PortValueObject(value=3306)
609
595
  ```
@@ -623,7 +609,6 @@ class PortValueObject(IntegerValueObject):
623
609
  from value_object_pattern.usables.internet import PortValueObject
624
610
 
625
611
  port = PortValueObject.MARIADB()
626
-
627
612
  print(repr(port))
628
613
  # >>> PortValueObject(value=3306)
629
614
  ```
@@ -643,7 +628,6 @@ class PortValueObject(IntegerValueObject):
643
628
  from value_object_pattern.usables.internet import PortValueObject
644
629
 
645
630
  port = PortValueObject.RDP()
646
-
647
631
  print(repr(port))
648
632
  # >>> PortValueObject(value=3389)
649
633
  ```
@@ -663,7 +647,6 @@ class PortValueObject(IntegerValueObject):
663
647
  from value_object_pattern.usables.internet import PortValueObject
664
648
 
665
649
  port = PortValueObject.POSTGRESQL()
666
-
667
650
  print(repr(port))
668
651
  # >>> PortValueObject(value=5432)
669
652
  ```
@@ -683,7 +666,6 @@ class PortValueObject(IntegerValueObject):
683
666
  from value_object_pattern.usables.internet import PortValueObject
684
667
 
685
668
  port = PortValueObject.REDIS()
686
-
687
669
  print(repr(port))
688
670
  # >>> PortValueObject(value=6379)
689
671
  ```
@@ -703,7 +685,6 @@ class PortValueObject(IntegerValueObject):
703
685
  from value_object_pattern.usables.internet import PortValueObject
704
686
 
705
687
  port = PortValueObject.MINECRAFT()
706
-
707
688
  print(repr(port))
708
689
  # >>> PortValueObject(value=25565)
709
690
  ```
@@ -723,7 +704,6 @@ class PortValueObject(IntegerValueObject):
723
704
  from value_object_pattern.usables.internet import PortValueObject
724
705
 
725
706
  port = PortValueObject.MONGODB()
726
-
727
707
  print(repr(port))
728
708
  # >>> PortValueObject(value=27017)
729
709
  ```
@@ -743,7 +723,6 @@ class PortValueObject(IntegerValueObject):
743
723
  from value_object_pattern.usables.internet import PortValueObject
744
724
 
745
725
  port = PortValueObject.WIREGUARD()
746
-
747
726
  print(repr(port))
748
727
  # >>> PortValueObject(value=51820)
749
728
  ```
@@ -21,23 +21,18 @@ def get_aws_cloud_regions() -> tuple[str, ...]:
21
21
 
22
22
 
23
23
  @lru_cache(maxsize=1)
24
- def get_tld_dict() -> dict[int, tuple[str, ...]]:
24
+ def get_tld_dict() -> tuple[str, ...]:
25
25
  """
26
- Get top level domains from IANA in a dictionary sorted by domain length.
26
+ Get top level domains from IANA in a dictionary.
27
27
 
28
28
  Returns:
29
- dict[int, tuple[str, ...]]: The top level domains in lower case sorted by domain length.
29
+ tuple[str, ...]: The top-level domains in lower case.
30
30
 
31
31
  References:
32
32
  TLD Domains: https://data.iana.org/TLD/tlds-alpha-by-domain.txt
33
33
  """
34
34
  with files(anchor='value_object_pattern.usables.internet.utils').joinpath('tld_domains.txt').open(mode='r') as file:
35
35
  lines = file.read().splitlines()
36
+ filtered_lines = tuple(line for line in lines if not line.startswith('#') and (_line := line.strip().lower()))
36
37
 
37
- temp: dict[int, list[str]] = {}
38
- tlds = tuple(line for line in lines if not line.startswith('#') and (_line := line.strip().lower()))
39
- for tld in tlds:
40
- key = len(tld)
41
- temp.setdefault(key, []).append(tld)
42
-
43
- return {key: tuple(value) for key, value in temp.items()}
38
+ return filtered_lines