value-object-pattern 1.22.1__tar.gz → 1.24.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 (174) hide show
  1. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/PKG-INFO +1 -1
  2. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/__init__.py +1 -1
  3. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/base_model.py +34 -2
  4. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/collections/dict_value_object.py +54 -1
  5. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/value_object.py +32 -2
  6. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/__init__.py +2 -0
  7. value_object_pattern-1.24.0/value_object_pattern/usables/identifiers/strict_string_identifier_value_object.py +45 -0
  8. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +1 -3
  9. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/.gitignore +0 -0
  10. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/LICENSE.md +0 -0
  11. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/README.md +0 -0
  12. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/pyproject.toml +0 -0
  13. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/__init__.py +0 -0
  14. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/classproperty.py +0 -0
  15. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/value_object_process.py +0 -0
  16. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
  17. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/__init__.py +0 -0
  18. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/collections/__init__.py +0 -0
  19. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/collections/list_value_object.py +0 -0
  20. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
  21. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/py.typed +0 -0
  22. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/__init__.py +0 -0
  23. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/__init__.py +0 -0
  24. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  25. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  26. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  27. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  28. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  29. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  30. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  31. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  32. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  33. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
  34. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
  35. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
  36. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
  37. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
  38. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
  39. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
  40. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
  41. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
  42. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
  43. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
  44. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
  45. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
  46. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
  47. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
  48. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
  49. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
  50. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
  51. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
  52. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
  53. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
  54. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
  55. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
  56. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
  57. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
  58. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
  59. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
  60. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
  61. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
  62. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
  63. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
  64. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
  65. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
  66. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
  67. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
  68. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
  69. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
  70. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
  71. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
  72. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
  73. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
  74. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
  75. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
  76. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
  77. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
  78. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
  79. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
  80. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
  81. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
  82. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
  83. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
  84. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
  85. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
  86. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
  87. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
  88. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
  89. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
  90. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
  91. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
  92. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
  93. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
  94. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
  95. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
  96. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
  97. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
  98. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
  99. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
  100. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
  101. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
  102. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/__init__.py +0 -0
  103. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  104. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
  105. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
  106. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  107. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
  108. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  109. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  110. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  111. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  112. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  113. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
  114. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
  115. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
  116. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
  117. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
  118. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
  119. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
  120. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
  121. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  122. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  123. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  124. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  125. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  126. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  127. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
  128. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
  129. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/__init__.py +0 -0
  130. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
  131. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
  132. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
  133. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
  134. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
  135. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
  136. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
  137. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
  138. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
  139. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
  140. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  141. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  142. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  143. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  144. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  145. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  146. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  147. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  148. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  149. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
  150. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  151. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
  152. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  153. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  154. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  155. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  156. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
  157. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  158. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  159. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
  160. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  161. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  162. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  163. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
  164. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  165. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  166. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  167. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  168. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  169. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  170. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  171. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  172. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
  173. {value_object_pattern-1.22.1 → value_object_pattern-1.24.0}/value_object_pattern/usables/utils/__init__.py +0 -0
  174. {value_object_pattern-1.22.1 → value_object_pattern-1.24.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.22.1
3
+ Version: 1.24.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.22.1'
1
+ __version__ = '1.24.0'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import BaseModel, EnumerationValueObject, ValueObject
@@ -242,7 +242,23 @@ class BaseModel(ABC):
242
242
 
243
243
  Example:
244
244
  ```python
245
- # TODO:
245
+ from copy import copy
246
+
247
+ from value_object_pattern import BaseModel
248
+
249
+
250
+ class User(BaseModel):
251
+ def __init__(self, tags: list[str]) -> None:
252
+ self.tags = tags
253
+
254
+
255
+ user = User(tags=['admin'])
256
+ clone = copy(user)
257
+
258
+ print(clone is user)
259
+ print(clone.tags is user.tags)
260
+ # >>> False
261
+ # >>> True
246
262
  ```
247
263
  """
248
264
  cls = self.__class__
@@ -264,7 +280,23 @@ class BaseModel(ABC):
264
280
 
265
281
  Example:
266
282
  ```python
267
- # TODO:
283
+ from copy import deepcopy
284
+
285
+ from value_object_pattern import BaseModel
286
+
287
+
288
+ class User(BaseModel):
289
+ def __init__(self, tags: list[str]) -> None:
290
+ self.tags = tags
291
+
292
+
293
+ user = User(tags=['admin'])
294
+ clone = deepcopy(user)
295
+
296
+ print(clone is user)
297
+ print(clone.tags is user.tags)
298
+ # >>> False
299
+ # >>> False
268
300
  ```
269
301
  """
270
302
  if id(self) in memo:
@@ -15,7 +15,7 @@ from collections.abc import Iterator
15
15
  from enum import Enum
16
16
  from inspect import isclass
17
17
  from types import UnionType
18
- from typing import Any, Generic, ItemsView, KeysView, NoReturn, TypeVar, Union, ValuesView, get_args, get_origin
18
+ from typing import Any, Generic, ItemsView, KeysView, NoReturn, Self, TypeVar, Union, ValuesView, get_args, get_origin
19
19
 
20
20
  from value_object_pattern.decorators import validation
21
21
  from value_object_pattern.models import BaseModel, ValueObject
@@ -525,6 +525,59 @@ class DictValueObject(ValueObject[dict[K, V]], Generic[K, V]): # noqa: UP046
525
525
 
526
526
  return str(type).replace('typing.', '')
527
527
 
528
+ @classmethod
529
+ def from_primitives(cls, value: dict[Any, Any]) -> Self:
530
+ """
531
+ Creates a DictValueObject from a dictionary of primitives.
532
+
533
+ Args:
534
+ value (dict[Any, Any]): The dictionary of primitives.
535
+
536
+ Returns:
537
+ Self: The created DictValueObject.
538
+ """
539
+ items: dict[Any, Any] = {}
540
+
541
+ for key, item in value.items():
542
+ primitive_key = cls._convert_from_primitives(value=key, expected_type=cls._key_type)
543
+ primitive_value = cls._convert_from_primitives(value=item, expected_type=cls._value_type)
544
+ items[primitive_key] = primitive_value
545
+
546
+ return cls(value=items)
547
+
548
+ @classmethod
549
+ def _convert_from_primitives(cls, *, value: Any, expected_type: Any) -> Any:
550
+ """
551
+ Converts a primitive value to the expected type.
552
+
553
+ Args:
554
+ value (Any): The primitive value to convert.
555
+ expected_type (Any): The expected type.
556
+
557
+ Returns:
558
+ Any: The converted value.
559
+ """
560
+ if expected_type is Any:
561
+ return value
562
+
563
+ origin = get_origin(tp=expected_type)
564
+ if origin in (Union, UnionType):
565
+ return value
566
+
567
+ if hasattr(expected_type, 'from_primitives'):
568
+ return expected_type.from_primitives(value)
569
+
570
+ if isclass(expected_type) and issubclass(expected_type, Enum):
571
+ if isinstance(value, expected_type):
572
+ return value
573
+
574
+ return expected_type(value)
575
+
576
+ if hasattr(expected_type, 'value'):
577
+ return expected_type(value=value)
578
+
579
+ return value
580
+
528
581
  def to_primitives(self) -> dict[Any, Any]: # noqa: C901
529
582
  """
530
583
  Returns the dictionary as a dictionary of primitives, recursively converting each key and value.
@@ -256,7 +256,22 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
256
256
 
257
257
  Example:
258
258
  ```python
259
- # TODO:
259
+ from copy import copy
260
+
261
+ from value_object_pattern import ValueObject
262
+
263
+
264
+ class IntegerValueObject(ValueObject[int]):
265
+ pass
266
+
267
+
268
+ value_object = IntegerValueObject(value=7)
269
+ clone = copy(value_object)
270
+
271
+ print(clone is value_object)
272
+ print(clone == value_object)
273
+ # >>> False
274
+ # >>> True
260
275
  ```
261
276
  """
262
277
  return self.__class__(
@@ -277,7 +292,22 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
277
292
 
278
293
  Example:
279
294
  ```python
280
- # TODO:
295
+ from copy import deepcopy
296
+
297
+ from value_object_pattern import ValueObject
298
+
299
+
300
+ class ListValueObject(ValueObject[list[int]]):
301
+ pass
302
+
303
+
304
+ value_object = ListValueObject(value=[1, 2])
305
+ clone = deepcopy(value_object)
306
+
307
+ print(clone is value_object)
308
+ print(clone.value is value_object.value)
309
+ # >>> False
310
+ # >>> False
281
311
  ```
282
312
  """
283
313
  if id(self) in memo:
@@ -1,3 +1,4 @@
1
+ from .strict_string_identifier_value_object import StrictStringIdentifierValueObject
1
2
  from .uuid import (
2
3
  StringUuidV1ValueObject,
3
4
  StringUuidV3ValueObject,
@@ -18,6 +19,7 @@ from .uuid import (
18
19
  )
19
20
 
20
21
  __all__ = (
22
+ 'StrictStringIdentifierValueObject',
21
23
  'StringUuidV1ValueObject',
22
24
  'StringUuidV3ValueObject',
23
25
  'StringUuidV4ValueObject',
@@ -0,0 +1,45 @@
1
+ """
2
+ StrictStringIdentifierValueObject value object.
3
+ """
4
+
5
+ from re import Pattern, compile as re_compile
6
+ from typing import NoReturn
7
+
8
+ from value_object_pattern.decorators import validation
9
+ from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
10
+
11
+
12
+ class StrictStringIdentifierValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
13
+ """
14
+ StrictStringIdentifierValueObject ensures the provided value is a strict identifier string.
15
+
16
+ The allowed characters are lower-case letters (`a-z`), digits (`0-9`), and hyphen (`-`).
17
+ """
18
+
19
+ _VALIDATION_REGEX: Pattern[str] = re_compile(pattern=r'[a-z0-9-]+')
20
+
21
+ @validation(order=0)
22
+ def _ensure_value_follows_validation_regex(self, value: str) -> None:
23
+ """
24
+ Ensures the value object `value` only contains allowed characters.
25
+
26
+ Args:
27
+ value (str): The provided value.
28
+
29
+ Raises:
30
+ ValueError: If the `value` contains disallowed characters.
31
+ """
32
+ if not self._VALIDATION_REGEX.fullmatch(string=value):
33
+ self._raise_value_contains_invalid_characters(value=value)
34
+
35
+ def _raise_value_contains_invalid_characters(self, value: str) -> NoReturn:
36
+ """
37
+ Raises a ValueError if the value object `value` contains invalid characters.
38
+
39
+ Args:
40
+ value (str): The provided value.
41
+
42
+ Raises:
43
+ ValueError: If the `value` contains invalid characters.
44
+ """
45
+ raise ValueError(f'StrictStringIdentifierValueObject value <<<{value}>>> contains invalid characters. Only a-z, 0-9, and - are allowed.') # noqa: E501 # fmt: skip
@@ -1,4 +1,4 @@
1
- # This file was automatically updated using "update_lists.py" on 2025-12-09T16:29:57.669510+00:00
1
+ # This file was automatically updated using "update_lists.py" on 2026-02-15T03:55:23.881612+00:00
2
2
 
3
3
  aaa
4
4
  aarp
@@ -487,7 +487,6 @@ godaddy
487
487
  gold
488
488
  goldpoint
489
489
  golf
490
- goo
491
490
  goodyear
492
491
  goog
493
492
  google
@@ -1251,7 +1250,6 @@ windows
1251
1250
  wine
1252
1251
  winners
1253
1252
  wme
1254
- wolterskluwer
1255
1253
  woodside
1256
1254
  work
1257
1255
  works