value-object-pattern 1.15.1__tar.gz → 1.16.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 (156) hide show
  1. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/PKG-INFO +1 -1
  2. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/__init__.py +1 -1
  3. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/models/base_model.py +3 -3
  4. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/models/collections/list_value_object.py +325 -7
  5. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/.gitignore +0 -0
  6. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/LICENSE.md +0 -0
  7. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/README.md +0 -0
  8. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/pyproject.toml +0 -0
  9. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/decorators/__init__.py +0 -0
  10. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/decorators/classproperty.py +0 -0
  11. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/decorators/value_object_process.py +0 -0
  12. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
  13. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/models/__init__.py +0 -0
  14. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/models/collections/__init__.py +0 -0
  15. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
  16. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/models/value_object.py +0 -0
  17. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/py.typed +0 -0
  18. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/__init__.py +0 -0
  19. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/__init__.py +0 -0
  20. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  21. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  22. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  23. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  24. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  25. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  26. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  27. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  28. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  29. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  30. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/uuid/__init__.py +0 -0
  31. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_v4_value_object.py +0 -0
  32. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/uuid/string_uuid_value_object.py +0 -0
  33. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/uuid/uuid_v4_value_object.py +0 -0
  34. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/uuid/uuid_value_object.py +0 -0
  35. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/__init__.py +0 -0
  36. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/country_tld_value_object.py +0 -0
  37. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/__init__.py +0 -0
  38. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/__init__.py +0 -0
  39. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/dni_value_object.py +0 -0
  40. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/nie_value_object.py +0 -0
  41. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/nif_value_object.py +0 -0
  42. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/nuss_value_object.py +0 -0
  43. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/passport_value_object.py +0 -0
  44. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/phone_number_value_object.py +0 -0
  45. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/__init__.py +0 -0
  46. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/administrative_technician_vehicle_plate_value_object.py +0 -0
  47. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/air_force_vehicle_plate_value_object.py +0 -0
  48. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/army_vehicle_plate_value_object.py +0 -0
  49. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/canarias_police_vehicle_plate_value_object.py +0 -0
  50. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/catalan_police_vehicle_plate_value_object.py +0 -0
  51. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/civil_guard_vehicle_plate_value_object.py +0 -0
  52. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/consular_corps_vehicle_plate_value_object.py +0 -0
  53. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/diplomatic_corps_vehicle_plate_value_object.py +0 -0
  54. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/especial_plate_vehicle_plate_value_object.py +0 -0
  55. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/historical_vehicle_plate_value_object.py +0 -0
  56. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/international_organization_vehicle_plate_value_object.py +0 -0
  57. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_development_vehicle_plate_value_object.py +0 -0
  58. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ministry_environment_vehicle_plate_value_object.py +0 -0
  59. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/national_police_vehicle_plate_value_object.py +0 -0
  60. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/navy_vehicle_plate_value_object.py +0 -0
  61. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_truck_vehicle_plate_value_object.py +0 -0
  62. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/ordinary_vehicle_plate_value_object.py +0 -0
  63. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/provincial_system_vehicle_plate_value_object.py +0 -0
  64. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/state_motor_pool_vehicle_plate_value_object.py +0 -0
  65. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_not_registered_vehicle_plate_value_object.py +0 -0
  66. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_company_registered_vehicle_plate_value_object.py +0 -0
  67. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/temporal_private_individual_vehicle_plate_value_object.py +0 -0
  68. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/two_wheels_vehicle_plate_value_object.py +0 -0
  69. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/__init__.py +0 -0
  70. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/plates/utils/provincial_plate_codes.txt +0 -0
  71. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/__init__.py +0 -0
  72. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/utils/provincial_codes.txt +0 -0
  73. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/europe/spain/vehicle_plate_value_object.py +0 -0
  74. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha2_code_value_object.py +0 -0
  75. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/iso3166_alpha3_code_value_object.py +0 -0
  76. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/iso3166_numeric_code_value_object.py +0 -0
  77. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/phone_code_value_object.py +0 -0
  78. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/__init__.py +0 -0
  79. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_codes.txt +0 -0
  80. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_alpha3_mapping.txt +0 -0
  81. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_numeric_mapping.txt +0 -0
  82. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_phone_code_mapping.txt +0 -0
  83. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha2_to_tld_mapping.txt +0 -0
  84. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_alpha3_codes.txt +0 -0
  85. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/utils/iso3166_numeric_codes.txt +0 -0
  86. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/identifiers/world/vin_value_object.py +0 -0
  87. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/__init__.py +0 -0
  88. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  89. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
  90. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/email_address_value_object.py +0 -0
  91. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  92. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/ip_address_value_object.py +0 -0
  93. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  94. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  95. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  96. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  97. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  98. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_addresses/__init__.py +0 -0
  99. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_addresses/cisco_mac_address_value_object.py +0 -0
  100. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_addresses/raw_mac_address_value_object.py +0 -0
  101. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_addresses/space_mac_address_value_object.py +0 -0
  102. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_addresses/universal_mac_address_value_object.py +0 -0
  103. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mac_addresses/windows_mac_address_value_object.py +0 -0
  104. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mobile/__init__.py +0 -0
  105. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/mobile/imei_value_object.py +0 -0
  106. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  107. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  108. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  109. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  110. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  111. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  112. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/utils/__init__.py +0 -0
  113. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/utils/aws_regions.txt +0 -0
  114. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/internet/utils/tld_domains.txt +0 -0
  115. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/__init__.py +0 -0
  116. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/credit_card_value_object.py +0 -0
  117. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/credit_cards/__init__.py +0 -0
  118. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/credit_cards/amex_credit_card_value_object.py +0 -0
  119. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/credit_cards/discover_credit_card_value_object.py +0 -0
  120. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/credit_cards/mastercard_credit_card_value_object.py +0 -0
  121. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/credit_cards/visa_credit_card_value_object.py +0 -0
  122. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/iban_value_object.py +0 -0
  123. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/utils/__init__.py +0 -0
  124. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/money/utils/iban_lengths.txt +0 -0
  125. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
  126. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  127. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  128. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  129. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  130. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  131. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  132. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  133. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  134. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  135. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  136. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  137. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  138. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  139. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  140. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  141. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  142. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  143. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  144. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  145. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
  146. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  147. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  148. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  149. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  150. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  151. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  152. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  153. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  154. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
  155. {value_object_pattern-1.15.1 → value_object_pattern-1.16.0}/value_object_pattern/usables/utils/__init__.py +0 -0
  156. {value_object_pattern-1.15.1 → value_object_pattern-1.16.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.15.1
3
+ Version: 1.16.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.15.1'
1
+ __version__ = '1.16.0'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import BaseModel, EnumerationValueObject, ValueObject
@@ -15,7 +15,7 @@ from abc import ABC, abstractmethod
15
15
  from copy import deepcopy
16
16
  from enum import Enum
17
17
  from inspect import Parameter, _empty, signature
18
- from typing import Any, NoReturn, Self
18
+ from typing import Any, NoReturn
19
19
 
20
20
  from .value_object import ValueObject
21
21
 
@@ -307,7 +307,7 @@ class BaseModel(ABC):
307
307
  return dictionary
308
308
 
309
309
  @classmethod
310
- def from_primitives(cls, primitives: dict[str, Any]) -> Self:
310
+ def from_primitives(cls, primitives: dict[str, Any]) -> BaseModel:
311
311
  """
312
312
  Create an instance of the class with a dictionary of its primitives.
313
313
 
@@ -319,7 +319,7 @@ class BaseModel(ABC):
319
319
  ValueError: If the `primitives` does not have all the required attributes.
320
320
 
321
321
  Returns:
322
- Self: Instance of the class.
322
+ BaseModel: Instance of the class.
323
323
 
324
324
  Example:
325
325
  ```python
@@ -2,6 +2,8 @@
2
2
  ListValueObject module.
3
3
  """
4
4
 
5
+ from __future__ import annotations
6
+
5
7
  from sys import version_info
6
8
 
7
9
  if version_info >= (3, 12):
@@ -12,7 +14,7 @@ else:
12
14
  from collections.abc import Iterator
13
15
  from enum import Enum
14
16
  from inspect import isclass
15
- from typing import Any, Generic, NoReturn, Self, TypeVar, get_args, get_origin
17
+ from typing import Any, Generic, NoReturn, TypeVar, get_args, get_origin
16
18
 
17
19
  from value_object_pattern.decorators import validation
18
20
  from value_object_pattern.models import BaseModel, ValueObject
@@ -350,8 +352,324 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
350
352
  """
351
353
  return not self._value
352
354
 
355
+ def add(self, *, item: T) -> ListValueObject[T]:
356
+ """
357
+ Returns a new ListValueObject with the item added to the end.
358
+
359
+ Args:
360
+ item (T): The item to add.
361
+
362
+ Returns:
363
+ ListValueObject[T]: A new ListValueObject with the item added.
364
+
365
+ Example:
366
+ ```python
367
+ from value_object_pattern.models.collections import ListValueObject
368
+
369
+
370
+ class IntListValueObject(ListValueObject[int]):
371
+ pass
372
+
373
+
374
+ sequence = IntListValueObject(value=[1, 2, 3])
375
+ new_sequence = sequence.add(item=4)
376
+ print(new_sequence)
377
+ print(id(sequence) == id(new_sequence))
378
+ # >>> [1, 2, 3, 4]
379
+ # >>> False
380
+ ```
381
+ """
382
+ return self.__class__(value=[*self._value, item])
383
+
384
+ def add_from_primitives(self, *, item: Any) -> ListValueObject[T]:
385
+ """
386
+ Returns a new ListValueObject with the item created from a primitives added to the end.
387
+
388
+ Args:
389
+ item (Any): The primitives item to convert and add.
390
+
391
+ Returns:
392
+ ListValueObject[T]: A new ListValueObject with the item added.
393
+
394
+ Example:
395
+ ```python
396
+ from value_object_pattern.models import ValueObject
397
+ from value_object_pattern.models.collections import ListValueObject
398
+
399
+
400
+ class Age(ValueObject[int]):
401
+ pass
402
+
403
+
404
+ class AgeListValueObject(ListValueObject[Age]):
405
+ pass
406
+
407
+
408
+ sequence = AgeListValueObject(value=[Age(value=10), Age(value=20)])
409
+ new_sequence = sequence.add_from_primitives(item=30)
410
+ print(new_sequence)
411
+ print(id(sequence) == id(new_sequence))
412
+ # >>> [10, 20, 30]
413
+ # >>> False
414
+ ```
415
+ """
416
+ item = self._convert_from_primitives(value=item)
417
+
418
+ return self.add(item=item)
419
+
420
+ def extend(self, *, items: list[T]) -> ListValueObject[T]:
421
+ """
422
+ Returns a new ListValueObject with multiple items added to the end.
423
+
424
+ Args:
425
+ items (list[T]): The items to add.
426
+
427
+ Returns:
428
+ ListValueObject[T]: A new ListValueObject with the items added.
429
+
430
+ Example:
431
+ ```python
432
+ from value_object_pattern.models.collections import ListValueObject
433
+
434
+
435
+ class IntListValueObject(ListValueObject[int]):
436
+ pass
437
+
438
+
439
+ sequence = IntListValueObject(value=[1, 2, 3])
440
+ new_sequence = sequence.extend(items=[4, 5, 6])
441
+ print(new_sequence)
442
+ print(id(sequence) == id(new_sequence))
443
+ # >>> [1, 2, 3, 4, 5, 6]
444
+ # >>> False
445
+ ```
446
+ """
447
+ return self.__class__(value=self._value + items)
448
+
449
+ def extend_from_primitives(self, *, items: list[Any]) -> ListValueObject[T]:
450
+ """
451
+ Returns a new ListValueObject with multiple items created from primitives added to the end.
452
+
453
+ Args:
454
+ items (list[Any]): The primitive items to convert and add.
455
+
456
+ Returns:
457
+ ListValueObject[T]: A new ListValueObject with the items added.
458
+
459
+ Example:
460
+ ```python
461
+ from value_object_pattern.models import ValueObject
462
+ from value_object_pattern.models.collections import ListValueObject
463
+
464
+
465
+ class Age(ValueObject[int]):
466
+ pass
467
+
468
+
469
+ class AgeListValueObject(ListValueObject[Age]):
470
+ pass
471
+
472
+
473
+ sequence = AgeListValueObject(value=[Age(value=10)])
474
+ new_sequence = sequence.extend_from_primitives(items=[20, 30])
475
+ print(new_sequence)
476
+ print(id(sequence) == id(new_sequence))
477
+ # >>> [10, 20, 30]
478
+ # >>> False
479
+ ```
480
+ """
481
+ items = [self._convert_from_primitives(value=item) for item in items]
482
+
483
+ return self.extend(items=items)
484
+
485
+ def delete(self, *, item: T) -> ListValueObject[T]:
486
+ """
487
+ Returns a new ListValueObject with the first occurrence of the item deleted.
488
+
489
+ Args:
490
+ item (T): The item to delete.
491
+
492
+ Raises:
493
+ ValueError: If the item is not in the list.
494
+
495
+ Returns:
496
+ ListValueObject[T]: A new ListValueObject with the item deleted.
497
+
498
+ Example:
499
+ ```python
500
+ from value_object_pattern.models.collections import ListValueObject
501
+
502
+
503
+ class IntListValueObject(ListValueObject[int]):
504
+ pass
505
+
506
+
507
+ sequence = IntListValueObject(value=[1, 2, 3, 2])
508
+ new_sequence = sequence.delete(item=2)
509
+ print(new_sequence)
510
+ print(id(sequence) == id(new_sequence))
511
+ # >>> [1, 3, 2]
512
+ # >>> False
513
+ ```
514
+ """
515
+ items = self._value.copy()
516
+
517
+ try:
518
+ items.remove(item)
519
+
520
+ except ValueError:
521
+ self._raise_value_not_found_when_deleting(value=item)
522
+
523
+ return self.__class__(value=items)
524
+
525
+ def _raise_value_not_found_when_deleting(self, value: Any) -> NoReturn:
526
+ """
527
+ Raises a ValueError if the item to be deleted is not found.
528
+
529
+ Args:
530
+ value (Any): The item to be deleted.
531
+
532
+ Raises:
533
+ ValueError: If the item is not found.
534
+ """
535
+ raise ValueError(f'ListValueObject item <<<{value}>>> not found in thelist when attempting to delete it.')
536
+
537
+ def delete_from_primitives(self, *, item: Any) -> ListValueObject[T]:
538
+ """
539
+ Returns a new ListValueObject with the first occurrence of an item matching the primitive deleted.
540
+
541
+ Args:
542
+ item (Any): The primitive value to convert and delete.
543
+
544
+ Raises:
545
+ ValueError: If the item is not in the list.
546
+
547
+ Returns:
548
+ ListValueObject[T]: A new ListValueObject with the item deleted.
549
+
550
+ Example:
551
+ ```python
552
+ from value_object_pattern.models import ValueObject
553
+ from value_object_pattern.models.collections import ListValueObject
554
+
555
+
556
+ class Age(ValueObject[int]):
557
+ pass
558
+
559
+
560
+ class AgeListValueObject(ListValueObject[Age]):
561
+ pass
562
+
563
+
564
+ sequence = AgeListValueObject(value=[Age(value=10), Age(value=20)])
565
+ new_sequence = sequence.delete_from_primitives(item=10)
566
+ print(new_sequence)
567
+ print(id(sequence) == id(new_sequence))
568
+ # >>> [20]
569
+ # >>> False
570
+ ```
571
+ """
572
+ item = self._convert_from_primitives(value=item)
573
+
574
+ return self.delete(item=item)
575
+
576
+ def delete_all(self, *, items: list[T]) -> ListValueObject[T]:
577
+ """
578
+ Returns a new ListValueObject with all occurrences of the specified items deleted.
579
+
580
+ Args:
581
+ items (list[T]): The items to delete.
582
+
583
+ Raises:
584
+ ValueError: If any item is not in the list.
585
+
586
+ Returns:
587
+ ListValueObject[T]: A new ListValueObject with the items deleted.
588
+
589
+ Example:
590
+ ```python
591
+ from value_object_pattern.models.collections import ListValueObject
592
+
593
+
594
+ class IntListValueObject(ListValueObject[int]):
595
+ pass
596
+
597
+
598
+ sequence = IntListValueObject(value=[1, 2, 3, 2, 4])
599
+ new_sequence = sequence.delete_all(items=[2, 4])
600
+ print(new_sequence)
601
+ print(id(sequence) == id(new_sequence))
602
+ # >>> [1, 3]
603
+ # >>> False
604
+ ```
605
+ """
606
+ new_list = [item for item in self._value if item not in items]
607
+
608
+ for item in items:
609
+ if item not in self._value:
610
+ self._raise_value_not_found_when_deleting(value=item)
611
+
612
+ return self.__class__(value=new_list)
613
+
614
+ def delete_all_from_primitives(self, *, items: list[Any]) -> ListValueObject[T]:
615
+ """
616
+ Returns a new ListValueObject with all occurrences of items matching the primitives deleted.
617
+
618
+ Args:
619
+ items (list[Any]): The primitive values to convert and delete.
620
+
621
+ Raises:
622
+ ValueError: If any item is not in the list.
623
+
624
+ Returns:
625
+ ListValueObject[T]: A new ListValueObject with the items deleted.
626
+
627
+ Example:
628
+ ```python
629
+ from value_object_pattern.models.collections import ListValueObject
630
+ from value_object_pattern.models import ValueObject
631
+
632
+
633
+ class Age(ValueObject[int]):
634
+ pass
635
+
636
+
637
+ class AgeListValueObject(ListValueObject[Age]):
638
+ pass
639
+
640
+
641
+ sequence = AgeListValueObject(value=[Age(value=10), Age(value=20), Age(value=30)])
642
+ new_sequence = sequence.delete_all_from_primitives(items=[10, 30])
643
+ print(new_sequence)
644
+ print(id(sequence) == id(new_sequence))
645
+ # >>> [20]
646
+ # >>> False
647
+ ```
648
+ """
649
+ items = [self._convert_from_primitives(value=item) for item in items]
650
+
651
+ return self.delete_all(items=items)
652
+
653
+ def _convert_from_primitives(self, *, value: Any) -> T:
654
+ """
655
+ Converts a primitive value to the appropriate type T.
656
+
657
+ Args:
658
+ value (Any): The primitive value to convert.
659
+
660
+ Returns:
661
+ T: The converted value.
662
+ """
663
+ if hasattr(self._type, 'from_primitives'):
664
+ return self._type.from_primitives(value) # type: ignore[no-any-return]
665
+
666
+ if hasattr(self._type, 'value'):
667
+ return self._type(value=value) # type: ignore[no-any-return]
668
+
669
+ return value # type: ignore[no-any-return]
670
+
353
671
  @classmethod
354
- def from_primitives(cls, value: list[Any]) -> Self:
672
+ def from_primitives(cls, value: list[Any]) -> ListValueObject[T]:
355
673
  """
356
674
  Creates a ListValueObject from a list of primitives.
357
675
 
@@ -359,18 +677,18 @@ class ListValueObject(ValueObject[list[T]], Generic[T]): # noqa: UP046
359
677
  value (list[Any]): The list of primitives.
360
678
 
361
679
  Returns:
362
- Self: The created ListValueObject.
680
+ ListValueObject[T]: The created ListValueObject.
363
681
  """
364
682
  items: list[Any] = []
365
683
 
366
- for primitive in value:
684
+ for item in value:
367
685
  if hasattr(cls._type, 'from_primitives'):
368
- items.append(cls._type.from_primitives(primitive)) # BaseModel
686
+ items.append(cls._type.from_primitives(item)) # BaseModel
369
687
 
370
688
  elif hasattr(cls._type, 'value'):
371
- items.append(cls._type(value=primitive)) # ValueObject
689
+ items.append(cls._type(value=item)) # ValueObject
372
690
 
373
691
  else:
374
- items.append(primitive)
692
+ items.append(item)
375
693
 
376
694
  return cls(value=items)