value-object-pattern 1.28.0__tar.gz → 1.29.1__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.28.0 → value_object_pattern-1.29.1}/PKG-INFO +1 -1
  2. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/__init__.py +1 -1
  3. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/collections/list_value_object.py +18 -2
  4. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/primitive_conversion.py +8 -1
  5. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/value_object.py +11 -2
  6. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/__init__.py +2 -0
  7. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/__init__.py +2 -0
  8. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/__init__.py +2 -0
  9. value_object_pattern-1.29.1/value_object_pattern/usables/primitives/string/secret_string_value_object.py +40 -0
  10. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/.gitignore +0 -0
  11. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/LICENSE.md +0 -0
  12. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/README.md +0 -0
  13. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/pyproject.toml +0 -0
  14. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/__init__.py +0 -0
  15. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/classproperty.py +0 -0
  16. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/value_object_process.py +0 -0
  17. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/decorators/value_object_validation.py +0 -0
  18. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/__init__.py +0 -0
  19. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/base_model.py +0 -0
  20. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/collections/__init__.py +0 -0
  21. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/collections/dict_value_object.py +0 -0
  22. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/enumeration_value_object.py +0 -0
  23. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/type_matching.py +0 -0
  24. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/models/union_value_object.py +0 -0
  25. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/py.typed +0 -0
  26. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/__init__.py +0 -0
  27. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  28. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  29. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  30. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  31. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  32. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  33. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  34. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  35. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  36. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  37. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
  38. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v1_value_object.py +0 -0
  39. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v3_value_object.py +0 -0
  40. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
  41. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v5_value_object.py +0 -0
  42. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v6_value_object.py +0 -0
  43. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v7_value_object.py +0 -0
  44. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_v8_value_object.py +0 -0
  45. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
  46. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v1_value_object.py +0 -0
  47. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v3_value_object.py +0 -0
  48. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
  49. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v5_value_object.py +0 -0
  50. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v6_value_object.py +0 -0
  51. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v7_value_object.py +0 -0
  52. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_v8_value_object.py +0 -0
  53. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
  54. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
  55. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
  56. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
  57. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
  58. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
  59. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
  60. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
  61. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
  62. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
  63. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
  64. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
  65. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
  66. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
  67. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
  68. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
  69. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
  70. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
  71. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
  72. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
  73. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
  74. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
  75. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
  76. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
  77. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
  78. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
  79. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
  80. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
  81. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
  82. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
  83. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
  84. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
  85. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
  86. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
  87. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
  88. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
  89. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
  90. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
  91. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
  92. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
  93. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
  94. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
  95. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
  96. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
  97. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
  98. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
  99. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
  100. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
  101. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
  102. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
  103. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
  104. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
  105. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
  106. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/__init__.py +0 -0
  107. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  108. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
  109. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
  110. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  111. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
  112. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  113. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  114. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  115. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  116. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/keys/__init__.py +0 -0
  117. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/keys/kebab_case_key_value_object.py +0 -0
  118. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/keys/snake_case_key_value_object.py +0 -0
  119. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  120. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
  121. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
  122. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
  123. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
  124. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
  125. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
  126. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
  127. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
  128. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  129. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/slug_value_object.py +0 -0
  130. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  131. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  132. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  133. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  134. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  135. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/user_agent_value_object.py +0 -0
  136. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
  137. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
  138. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
  139. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/__init__.py +0 -0
  140. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
  141. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
  142. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
  143. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
  144. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
  145. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
  146. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/iban_value_object.py +0 -0
  147. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/utils/__init__.py +0 -0
  148. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
  149. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  150. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  151. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  152. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  153. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  154. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  155. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  156. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  157. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  158. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/negative_or_zero_float_value_object.py +0 -0
  159. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  160. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/float/positive_or_zero_float_value_object.py +0 -0
  161. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  162. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  163. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  164. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  165. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/negative_or_zero_integer_value_object.py +0 -0
  166. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  167. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  168. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/integer/positive_or_zero_integer_value_object.py +0 -0
  169. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  170. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  171. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  172. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  173. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  174. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/camel_case_string_value_object.py +0 -0
  175. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  176. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/kebab_case_string_value_object.py +0 -0
  177. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  178. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  179. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/pascal_case_string_value_object.py +0 -0
  180. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  181. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/screaming_snake_case_string_value_object.py +0 -0
  182. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/snake_case_string_value_object.py +0 -0
  183. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  184. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  185. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
  186. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/value_object_pattern/usables/utils/__init__.py +0 -0
  187. {value_object_pattern-1.28.0 → value_object_pattern-1.29.1}/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.28.0
3
+ Version: 1.29.1
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.28.0'
1
+ __version__ = '1.29.1'
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.
@@ -26,6 +26,7 @@ from .primitives import (
26
26
  PositiveOrZeroIntegerValueObject,
27
27
  PrintableStringValueObject,
28
28
  ScreamingSnakeCaseStringValueObject,
29
+ SecretStringValueObject,
29
30
  SnakeCaseStringValueObject,
30
31
  StringValueObject,
31
32
  TrimmedStringValueObject,
@@ -64,6 +65,7 @@ __all__ = (
64
65
  'PrintableStringValueObject',
65
66
  'PrintableStringValueObject',
66
67
  'ScreamingSnakeCaseStringValueObject',
68
+ 'SecretStringValueObject',
67
69
  'SnakeCaseStringValueObject',
68
70
  'StringValueObject',
69
71
  'StringValueObject',
@@ -28,6 +28,7 @@ from .string import (
28
28
  PascalCaseStringValueObject,
29
29
  PrintableStringValueObject,
30
30
  ScreamingSnakeCaseStringValueObject,
31
+ SecretStringValueObject,
31
32
  SnakeCaseStringValueObject,
32
33
  StringValueObject,
33
34
  TrimmedStringValueObject,
@@ -62,6 +63,7 @@ __all__ = (
62
63
  'PositiveOrZeroIntegerValueObject',
63
64
  'PrintableStringValueObject',
64
65
  'ScreamingSnakeCaseStringValueObject',
66
+ 'SecretStringValueObject',
65
67
  'SnakeCaseStringValueObject',
66
68
  'StringValueObject',
67
69
  'TrimmedStringValueObject',
@@ -8,6 +8,7 @@ from .non_empty_string_value_object import NotEmptyStringValueObject
8
8
  from .pascal_case_string_value_object import PascalCaseStringValueObject
9
9
  from .printable_string_value_object import PrintableStringValueObject
10
10
  from .screaming_snake_case_string_value_object import ScreamingSnakeCaseStringValueObject
11
+ from .secret_string_value_object import SecretStringValueObject
11
12
  from .snake_case_string_value_object import SnakeCaseStringValueObject
12
13
  from .string_value_object import StringValueObject
13
14
  from .trimmed_string_value_object import TrimmedStringValueObject
@@ -24,6 +25,7 @@ __all__ = (
24
25
  'PascalCaseStringValueObject',
25
26
  'PrintableStringValueObject',
26
27
  'ScreamingSnakeCaseStringValueObject',
28
+ 'SecretStringValueObject',
27
29
  'SnakeCaseStringValueObject',
28
30
  'StringValueObject',
29
31
  'TrimmedStringValueObject',
@@ -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