value-object-pattern 1.27.0__tar.gz → 1.29.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/PKG-INFO +1 -1
  2. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/pyproject.toml +0 -2
  3. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/__init__.py +1 -1
  4. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/collections/list_value_object.py +18 -2
  5. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/primitive_conversion.py +8 -1
  6. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/value_object.py +11 -2
  7. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/__init__.py +4 -0
  8. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +2 -1
  9. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/__init__.py +4 -0
  10. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/__init__.py +4 -0
  11. value_object_pattern-1.29.0/value_object_pattern/usables/primitives/string/pascal_case_string_value_object.py +55 -0
  12. value_object_pattern-1.29.0/value_object_pattern/usables/primitives/string/secret_string_value_object.py +40 -0
  13. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/.gitignore +0 -0
  14. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/LICENSE.md +0 -0
  15. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/README.md +0 -0
  16. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/__init__.py +0 -0
  17. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/classproperty.py +0 -0
  18. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/value_object_process.py +0 -0
  19. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
  20. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/__init__.py +0 -0
  21. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/base_model.py +0 -0
  22. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/collections/__init__.py +0 -0
  23. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/collections/dict_value_object.py +0 -0
  24. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
  25. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/type_matching.py +0 -0
  26. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/models/union_value_object.py +0 -0
  27. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/py.typed +0 -0
  28. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/__init__.py +0 -0
  29. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  30. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  31. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  32. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  33. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  34. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  35. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  36. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  37. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  38. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  39. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
  40. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
  41. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
  42. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
  43. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
  44. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
  45. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
  46. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
  47. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
  48. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
  49. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
  50. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
  51. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
  52. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
  53. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
  54. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
  55. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
  56. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
  57. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
  58. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
  59. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
  60. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
  61. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
  62. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
  63. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
  64. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
  65. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
  66. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
  67. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
  68. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
  69. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
  70. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
  71. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
  72. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
  73. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
  74. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
  75. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
  76. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
  77. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
  78. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
  79. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
  80. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
  81. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
  82. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
  83. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
  84. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
  85. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
  86. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
  87. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
  88. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
  89. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
  90. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
  91. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
  92. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
  93. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
  94. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
  95. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
  96. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
  97. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
  98. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
  99. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
  100. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
  101. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
  102. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
  103. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
  104. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
  105. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
  106. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
  107. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
  108. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/__init__.py +0 -0
  109. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  110. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
  111. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
  112. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  113. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
  114. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  115. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  116. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  117. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  118. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/keys/__init__.py +0 -0
  119. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/keys/kebab_case_key_value_object.py +0 -0
  120. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/keys/snake_case_key_value_object.py +0 -0
  121. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  122. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
  123. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
  124. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
  125. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
  126. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
  127. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
  128. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
  129. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
  130. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  131. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/slug_value_object.py +0 -0
  132. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  133. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  134. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  135. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  136. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  137. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/user_agent_value_object.py +0 -0
  138. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
  139. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
  140. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/__init__.py +0 -0
  141. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
  142. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
  143. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
  144. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
  145. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
  146. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
  147. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
  148. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
  149. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
  150. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  151. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  152. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  153. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  154. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  155. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  156. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  157. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  158. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  159. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
  160. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  161. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
  162. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  163. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  164. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  165. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  166. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
  167. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  168. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  169. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
  170. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  171. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  172. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  173. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  174. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  175. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/camel_case_string_value_object.py +0 -0
  176. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  177. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/kebab_case_string_value_object.py +0 -0
  178. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  179. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  180. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  181. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/screaming_snake_case_string_value_object.py +0 -0
  182. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/snake_case_string_value_object.py +0 -0
  183. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  184. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  185. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
  186. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/utils/__init__.py +0 -0
  187. {value_object_pattern-1.27.0 → value_object_pattern-1.29.0}/value_object_pattern/usables/utils/luhn_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: value-object-pattern
3
- Version: 1.27.0
3
+ Version: 1.29.0
4
4
  Summary: The Value Object Pattern is a Python package that streamlines the creation and management of value objects in your projects.
5
5
  Project-URL: Homepage, https://github.com/adriamontoto/value-object-pattern
6
6
  Project-URL: Repository, https://github.com/adriamontoto/value-object-pattern
@@ -50,7 +50,6 @@ Issues = 'https://github.com/adriamontoto/value-object-pattern/issues'
50
50
 
51
51
 
52
52
  [dependency-groups]
53
- audit = ['pip-audit>=2.9.0']
54
53
  coverage = ['coverage[toml]>=7.0.0', 'smokeshow>=0.5.0']
55
54
  develop = ['pre-commit>=3.0.0']
56
55
  format = ['ruff>=0.11.10']
@@ -69,7 +68,6 @@ test = [
69
68
  ]
70
69
  types = ['types-python-dateutil>=2.9.0.20241206']
71
70
  all = [
72
- { include-group = 'audit' },
73
71
  { include-group = 'coverage' },
74
72
  { include-group = 'develop' },
75
73
  { include-group = 'format' },
@@ -1,4 +1,4 @@
1
- __version__ = '1.27.0'
1
+ __version__ = '1.29.0'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import BaseModel, EnumerationValueObject, UnionValueObject, ValueObject
@@ -204,7 +204,15 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
204
204
  elif isinstance(item, Enum):
205
205
  list_to_return.append(item.value)
206
206
 
207
- elif isinstance(item, ValueObject) or hasattr(item, 'value'):
207
+ elif isinstance(item, ValueObject):
208
+ value = item._value_for_display()
209
+
210
+ if isinstance(value, Enum):
211
+ value = value.value
212
+
213
+ list_to_return.append(repr(value))
214
+
215
+ elif hasattr(item, 'value'):
208
216
  value = item.value
209
217
 
210
218
  if isinstance(value, Enum):
@@ -256,7 +264,15 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
256
264
  elif isinstance(item, Enum):
257
265
  list_to_return.append(item.value)
258
266
 
259
- elif isinstance(item, ValueObject) or hasattr(item, 'value'):
267
+ elif isinstance(item, ValueObject):
268
+ value = item._value_for_display()
269
+
270
+ if isinstance(value, Enum):
271
+ value = value.value
272
+
273
+ list_to_return.append(str(object=value))
274
+
275
+ elif hasattr(item, 'value'):
260
276
  value = item.value
261
277
 
262
278
  if isinstance(value, Enum):
@@ -101,7 +101,14 @@ def _convert_with_value_attribute(*, value: Any) -> Any:
101
101
  Returns:
102
102
  Any: Converted value or sentinel when the branch does not apply.
103
103
  """
104
- if not (isinstance(value, ValueObject) or hasattr(value, 'value')):
104
+ if isinstance(value, ValueObject):
105
+ nested_value = value._value_for_display()
106
+ if nested_value is value:
107
+ return str(object=value)
108
+
109
+ return to_primitive(value=nested_value)
110
+
111
+ if not hasattr(value, 'value'):
105
112
  return _MISSING
106
113
 
107
114
  nested_value = getattr(value, 'value', value)
@@ -136,7 +136,7 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
136
136
  # >>> IntegerValueObject(value=10)
137
137
  ```
138
138
  """
139
- return f'{self.__class__.__name__}(value={self.value!r})'
139
+ return f'{self.__class__.__name__}(value={self._value_for_display()!r})'
140
140
 
141
141
  @override
142
142
  def __str__(self) -> str:
@@ -160,7 +160,7 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
160
160
  # >>> 10
161
161
  ```
162
162
  """
163
- return str(object=self.value)
163
+ return str(object=self._value_for_display())
164
164
 
165
165
  @override
166
166
  def __hash__(self) -> int:
@@ -367,6 +367,15 @@ class ValueObject(ABC, Generic[T]): # noqa: UP046
367
367
 
368
368
  raise error
369
369
 
370
+ def _value_for_display(self) -> Any:
371
+ """
372
+ Returns the value used by display-oriented representations.
373
+
374
+ Returns:
375
+ Any: Value safe for string, repr, and primitive display paths.
376
+ """
377
+ return self.value
378
+
370
379
  def _post_order_dfs_mro(self, cls: type, visited: set[type] | None = None, cut_off: type = object) -> list[type]:
371
380
  """
372
381
  Computes the Post-Order Depth-First Search (DFS) Method Resolution Order (MRO) of a class.
@@ -19,12 +19,14 @@ from .primitives import (
19
19
  NotEmptyStringValueObject,
20
20
  NotNoneValueObject,
21
21
  OddIntegerValueObject,
22
+ PascalCaseStringValueObject,
22
23
  PositiveFloatValueObject,
23
24
  PositiveIntegerValueObject,
24
25
  PositiveOrZeroFloatValueObject,
25
26
  PositiveOrZeroIntegerValueObject,
26
27
  PrintableStringValueObject,
27
28
  ScreamingSnakeCaseStringValueObject,
29
+ SecretStringValueObject,
28
30
  SnakeCaseStringValueObject,
29
31
  StringValueObject,
30
32
  TrimmedStringValueObject,
@@ -55,6 +57,7 @@ __all__ = (
55
57
  'NotEmptyStringValueObject',
56
58
  'NotNoneValueObject',
57
59
  'OddIntegerValueObject',
60
+ 'PascalCaseStringValueObject',
58
61
  'PositiveFloatValueObject',
59
62
  'PositiveIntegerValueObject',
60
63
  'PositiveOrZeroFloatValueObject',
@@ -62,6 +65,7 @@ __all__ = (
62
65
  'PrintableStringValueObject',
63
66
  'PrintableStringValueObject',
64
67
  'ScreamingSnakeCaseStringValueObject',
68
+ 'SecretStringValueObject',
65
69
  'SnakeCaseStringValueObject',
66
70
  'StringValueObject',
67
71
  'StringValueObject',
@@ -1,4 +1,4 @@
1
- # This file was automatically updated using "update_lists.py" on 2026-02-15T03:55:23.881612+00:00
1
+ # This file was automatically updated using "update_lists.py" on 2026-04-19T04:07:29.141154+00:00
2
2
 
3
3
  aaa
4
4
  aarp
@@ -742,6 +742,7 @@ meme
742
742
  memorial
743
743
  men
744
744
  menu
745
+ merck
745
746
  merckmsd
746
747
  mg
747
748
  mh
@@ -25,8 +25,10 @@ from .string import (
25
25
  KebabCaseStringValueObject,
26
26
  LowercaseStringValueObject,
27
27
  NotEmptyStringValueObject,
28
+ PascalCaseStringValueObject,
28
29
  PrintableStringValueObject,
29
30
  ScreamingSnakeCaseStringValueObject,
31
+ SecretStringValueObject,
30
32
  SnakeCaseStringValueObject,
31
33
  StringValueObject,
32
34
  TrimmedStringValueObject,
@@ -54,12 +56,14 @@ __all__ = (
54
56
  'NotEmptyStringValueObject',
55
57
  'NotNoneValueObject',
56
58
  'OddIntegerValueObject',
59
+ 'PascalCaseStringValueObject',
57
60
  'PositiveFloatValueObject',
58
61
  'PositiveIntegerValueObject',
59
62
  'PositiveOrZeroFloatValueObject',
60
63
  'PositiveOrZeroIntegerValueObject',
61
64
  'PrintableStringValueObject',
62
65
  'ScreamingSnakeCaseStringValueObject',
66
+ 'SecretStringValueObject',
63
67
  'SnakeCaseStringValueObject',
64
68
  'StringValueObject',
65
69
  'TrimmedStringValueObject',
@@ -5,8 +5,10 @@ from .digit_value_object import DigitStringValueObject
5
5
  from .kebab_case_string_value_object import KebabCaseStringValueObject
6
6
  from .lowercase_string_value_object import LowercaseStringValueObject
7
7
  from .non_empty_string_value_object import NotEmptyStringValueObject
8
+ from .pascal_case_string_value_object import PascalCaseStringValueObject
8
9
  from .printable_string_value_object import PrintableStringValueObject
9
10
  from .screaming_snake_case_string_value_object import ScreamingSnakeCaseStringValueObject
11
+ from .secret_string_value_object import SecretStringValueObject
10
12
  from .snake_case_string_value_object import SnakeCaseStringValueObject
11
13
  from .string_value_object import StringValueObject
12
14
  from .trimmed_string_value_object import TrimmedStringValueObject
@@ -20,8 +22,10 @@ __all__ = (
20
22
  'KebabCaseStringValueObject',
21
23
  'LowercaseStringValueObject',
22
24
  'NotEmptyStringValueObject',
25
+ 'PascalCaseStringValueObject',
23
26
  'PrintableStringValueObject',
24
27
  'ScreamingSnakeCaseStringValueObject',
28
+ 'SecretStringValueObject',
25
29
  'SnakeCaseStringValueObject',
26
30
  'StringValueObject',
27
31
  'TrimmedStringValueObject',
@@ -0,0 +1,55 @@
1
+ """
2
+ PascalCaseStringValueObject value object.
3
+ """
4
+
5
+ from re import Pattern, compile as re_compile
6
+ from typing import NoReturn
7
+
8
+ from value_object_pattern.decorators import validation
9
+
10
+ from .non_empty_string_value_object import NotEmptyStringValueObject
11
+ from .trimmed_string_value_object import TrimmedStringValueObject
12
+
13
+
14
+ class PascalCaseStringValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
15
+ """
16
+ PascalCaseStringValueObject value object ensures the provided value is PascalCase.
17
+
18
+ Example:
19
+ ```python
20
+ from value_object_pattern.usables import PascalCaseStringValueObject
21
+
22
+ string = PascalCaseStringValueObject(value='Abcd1234Word')
23
+
24
+ print(repr(string))
25
+ # >>> PascalCaseStringValueObject(value='Abcd1234Word')
26
+ ```
27
+ """
28
+
29
+ _VALIDATION_REGEX: Pattern[str] = re_compile(pattern=r'^[A-Z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$')
30
+
31
+ @validation(order=0)
32
+ def _ensure_value_is_pascal_case(self, value: str) -> None:
33
+ """
34
+ Ensures the value object `value` is PascalCase.
35
+
36
+ Args:
37
+ value (str): The provided value.
38
+
39
+ Raises:
40
+ ValueError: If the `value` is not PascalCase.
41
+ """
42
+ if not self._VALIDATION_REGEX.fullmatch(string=value):
43
+ self._raise_value_is_not_pascal_case(value=value)
44
+
45
+ def _raise_value_is_not_pascal_case(self, value: str) -> NoReturn:
46
+ """
47
+ Raises a ValueError if the value object `value` is PascalCase.
48
+
49
+ Args:
50
+ value (str): The provided value.
51
+
52
+ Raises:
53
+ ValueError: If the `value` is not PascalCase.
54
+ """
55
+ raise ValueError(f'PascalCaseStringValueObject value <<<{value}>>> has invalid format. Only PascalCase strings starting with an uppercase letter and continuing with alphanumeric words are allowed.') # noqa: E501 # fmt: skip
@@ -0,0 +1,40 @@
1
+ """
2
+ SecretStringValueObject value object.
3
+ """
4
+
5
+ from sys import version_info
6
+
7
+ if version_info >= (3, 12):
8
+ from typing import override # pragma: no cover
9
+ else:
10
+ from typing_extensions import override # pragma: no cover
11
+
12
+ from .string_value_object import StringValueObject
13
+
14
+
15
+ class SecretStringValueObject(StringValueObject):
16
+ """
17
+ SecretStringValueObject stores a string that is redacted in display-oriented output.
18
+
19
+ Example:
20
+ ```python
21
+ from value_object_pattern.usables import SecretStringValueObject
22
+
23
+ secret = SecretStringValueObject(value='hidden-value')
24
+
25
+ print(secret)
26
+ # >>> ********
27
+ ```
28
+ """
29
+
30
+ _MASK: str = '********'
31
+
32
+ @override
33
+ def _value_for_display(self) -> str:
34
+ """
35
+ Returns the display-safe representation of the secret value.
36
+
37
+ Returns:
38
+ str: The redacted secret value.
39
+ """
40
+ return self._MASK