PyFunceble-dev 4.2.9__tar.gz → 4.2.10__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 (296) hide show
  1. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PKG-INFO +1 -1
  2. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/base.py +7 -1
  3. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/pyfunceble/cli.py +72 -6
  4. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/base.py +12 -3
  5. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/producer.py +5 -0
  6. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/system/launcher.py +47 -1
  7. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/config/loader.py +10 -0
  8. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/infrastructure/.PyFunceble_production.yaml +3 -0
  9. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/collection.py +110 -4
  10. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/storage.py +1 -1
  11. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble_dev.egg-info/PKG-INFO +1 -1
  12. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/version.yaml +1 -1
  13. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/CODE_OF_CONDUCT.rst +0 -0
  14. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/CONTRIBUTING.rst +0 -0
  15. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/LICENSE +0 -0
  16. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/MANIFEST.in +0 -0
  17. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/__init__.py +0 -0
  18. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/__init__.py +0 -0
  19. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/__init__.py +0 -0
  20. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/domain.py +0 -0
  21. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/domain_and_ip.py +0 -0
  22. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/__init__.py +0 -0
  23. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/base.py +0 -0
  24. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/dns.py +0 -0
  25. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/etoxic.py +0 -0
  26. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/parked.py +0 -0
  27. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/rules.py +0 -0
  28. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/extras/subject_switch.py +0 -0
  29. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/ip.py +0 -0
  30. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/params.py +0 -0
  31. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/status.py +0 -0
  32. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/availability/url.py +0 -0
  33. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/base.py +0 -0
  34. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/complex_json_encoder.py +0 -0
  35. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/params_base.py +0 -0
  36. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/__init__.py +0 -0
  37. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/base.py +0 -0
  38. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/domain.py +0 -0
  39. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/domain_and_ip.py +0 -0
  40. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/ip.py +0 -0
  41. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/params.py +0 -0
  42. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/status.py +0 -0
  43. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/reputation/url.py +0 -0
  44. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/status_base.py +0 -0
  45. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/__init__.py +0 -0
  46. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/base.py +0 -0
  47. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/domain.py +0 -0
  48. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/domain_and_ip.py +0 -0
  49. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/domain_base.py +0 -0
  50. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/ip.py +0 -0
  51. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/ipv4.py +0 -0
  52. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/ipv6.py +0 -0
  53. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/params.py +0 -0
  54. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/second_lvl_domain.py +0 -0
  55. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/status.py +0 -0
  56. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/subdomain.py +0 -0
  57. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/syntax/url.py +0 -0
  58. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/utils/__init__.py +0 -0
  59. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/checker/utils/whois.py +0 -0
  60. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/__init__.py +0 -0
  61. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/__init__.py +0 -0
  62. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/base.py +0 -0
  63. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/exceptions.py +0 -0
  64. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/github_actions.py +0 -0
  65. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/gitlab_ci.py +0 -0
  66. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/jenkins.py +0 -0
  67. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/travis_ci.py +0 -0
  68. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/continuous_integration/utils.py +0 -0
  69. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/credential_loader.py +0 -0
  70. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/__init__.py +0 -0
  71. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/clean.py +0 -0
  72. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/iana.py +0 -0
  73. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/production.py +0 -0
  74. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/public_suffix.py +0 -0
  75. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/pyfunceble/__init__.py +0 -0
  76. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/entry_points/pyfunceble/argsparser.py +0 -0
  77. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/execution_time.py +0 -0
  78. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/facility.py +0 -0
  79. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/factory.py +0 -0
  80. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/file_preloader.py +0 -0
  81. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/__init__.py +0 -0
  82. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/cleanup.py +0 -0
  83. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/counter.py +0 -0
  84. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/dir_base.py +0 -0
  85. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/dir_structure/__init__.py +0 -0
  86. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/dir_structure/backup.py +0 -0
  87. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/dir_structure/base.py +0 -0
  88. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/dir_structure/restore.py +0 -0
  89. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/json_base.py +0 -0
  90. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/printer/__init__.py +0 -0
  91. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/printer/base.py +0 -0
  92. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/printer/file.py +0 -0
  93. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/printer/stdout.py +0 -0
  94. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/registrar_counter.py +0 -0
  95. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/filesystem/status_file.py +0 -0
  96. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/__init__.py +0 -0
  97. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/alembic.py +0 -0
  98. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/base.py +0 -0
  99. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/csv_file/__init__.py +0 -0
  100. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/csv_file/base.py +0 -0
  101. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/csv_file/inactive_source_delete.py +0 -0
  102. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/csv_file/whois_registrar_add.py +0 -0
  103. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/db_base.py +0 -0
  104. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/file_cleanup/__init__.py +0 -0
  105. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/file_cleanup/base.py +0 -0
  106. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/file_cleanup/hashes_file.py +0 -0
  107. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/file_cleanup/mining_file.py +0 -0
  108. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/file_cleanup/production_config_file.py +0 -0
  109. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/json2csv/__init__.py +0 -0
  110. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/json2csv/base.py +0 -0
  111. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/json2csv/inactive.py +0 -0
  112. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/json2csv/whois.py +0 -0
  113. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/mariadb/__init__.py +0 -0
  114. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/mariadb/base.py +0 -0
  115. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/mariadb/file_and_status.py +0 -0
  116. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/migrators/mariadb/whois_record_idna_subject.py +0 -0
  117. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/__init__.py +0 -0
  118. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/base.py +0 -0
  119. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/chancy_producer.py +0 -0
  120. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/chancy_tester.py +0 -0
  121. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/dir_files_sorter.py +0 -0
  122. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/file_sorter.py +0 -0
  123. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/migrator.py +0 -0
  124. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/miner.py +0 -0
  125. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/producer.py +0 -0
  126. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/tester.py +0 -0
  127. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/__init__.py +0 -0
  128. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/chancy_producer.py +0 -0
  129. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/chancy_tester.py +0 -0
  130. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/dir_files_sorter.py +0 -0
  131. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/file_sorter.py +0 -0
  132. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/file_sorter_base.py +0 -0
  133. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/migrator.py +0 -0
  134. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/miner.py +0 -0
  135. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/processes/workers/tester.py +0 -0
  136. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/scripts/__init__.py +0 -0
  137. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/scripts/iana.py +0 -0
  138. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/scripts/production.py +0 -0
  139. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/scripts/public_suffix.py +0 -0
  140. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/storage.py +0 -0
  141. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/storage_facility.py +0 -0
  142. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/system/__init__.py +0 -0
  143. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/system/base.py +0 -0
  144. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/system/integrator.py +0 -0
  145. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/utils/__init__.py +0 -0
  146. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/utils/ascii_logo.py +0 -0
  147. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/utils/sort.py +0 -0
  148. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/utils/stdout.py +0 -0
  149. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/utils/testing.py +0 -0
  150. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/cli/utils/version.py +0 -0
  151. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/config/__init__.py +0 -0
  152. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/config/compare.py +0 -0
  153. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/__init__.py +0 -0
  154. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/adblock_input_line2subject.py +0 -0
  155. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/base.py +0 -0
  156. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/cidr2subject.py +0 -0
  157. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/input_line2subject.py +0 -0
  158. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/internal_url.py +0 -0
  159. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/rpz_input_line2subject.py +0 -0
  160. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/rpz_policy2subject.py +0 -0
  161. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/subject2complements.py +0 -0
  162. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/url2netloc.py +0 -0
  163. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/converter/wildcard2subject.py +0 -0
  164. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/__init__.py +0 -0
  165. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/__init__.py +0 -0
  166. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/__init__.py +0 -0
  167. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/env.py +0 -0
  168. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/script.py.mako +0 -0
  169. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/35c79626ecb9_fix_some_columns.py +0 -0
  170. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/3a4c55a9320d_add_continue_table.py +0 -0
  171. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/3d6f4a33cdb2_add_inactive_table.py +0 -0
  172. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py +0 -0
  173. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py +0 -0
  174. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/6f4729deaf03_delete_inactive_source_column.py +0 -0
  175. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/7bcf7fa64ba1_rename_created_to_created_at_and.py +0 -0
  176. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/83ada95132bf_delete_the_file_table.py +0 -0
  177. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/912bbcb77a6c_add_registrar_column.py +0 -0
  178. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/95dc17ddd729_introduction_of_the_session_id_column.py +0 -0
  179. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/__init__.py +0 -0
  180. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/ade87195b0a0_base.py +0 -0
  181. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/bef7bcaac3f2_make_id_a_bigint.py +0 -0
  182. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py +0 -0
  183. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/mysql/versions/e04e8301d1a2_deletion_of_the_mined_table.py +0 -0
  184. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/postgresql/__init__.py +0 -0
  185. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/postgresql/env.py +0 -0
  186. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/postgresql/script.py.mako +0 -0
  187. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/postgresql/versions/__init__.py +0 -0
  188. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/alembic/postgresql/versions/a32ac5d66eee_initial_version.py +0 -0
  189. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/infrastructure/__init__.py +0 -0
  190. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/data/infrastructure/dir_structure_production.json +0 -0
  191. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/__init__.py +0 -0
  192. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/credential/__init__.py +0 -0
  193. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/credential/base.py +0 -0
  194. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/credential/mariadb.py +0 -0
  195. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/credential/mysql.py +0 -0
  196. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/credential/postgresql.py +0 -0
  197. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/schemas/__init__.py +0 -0
  198. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/schemas/autocontinue.py +0 -0
  199. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/schemas/inactive.py +0 -0
  200. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/schemas/status.py +0 -0
  201. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/schemas/whois_record.py +0 -0
  202. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/session.py +0 -0
  203. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/sqlalchemy/__init__.py +0 -0
  204. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/sqlalchemy/all_schemas.py +0 -0
  205. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/database/sqlalchemy/base_schema.py +0 -0
  206. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/__init__.py +0 -0
  207. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/autocontinue/__init__.py +0 -0
  208. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/autocontinue/base.py +0 -0
  209. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/autocontinue/csv.py +0 -0
  210. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/autocontinue/sql.py +0 -0
  211. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/base.py +0 -0
  212. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/csv_base.py +0 -0
  213. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/db_base.py +0 -0
  214. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/iana.py +0 -0
  215. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/inactive/__init__.py +0 -0
  216. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/inactive/base.py +0 -0
  217. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/inactive/csv.py +0 -0
  218. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/inactive/sql.py +0 -0
  219. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/ipv4_reputation.py +0 -0
  220. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/public_suffix.py +0 -0
  221. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/sql_base.py +0 -0
  222. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/user_agent.py +0 -0
  223. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/whois/__init__.py +0 -0
  224. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/whois/base.py +0 -0
  225. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/whois/csv.py +0 -0
  226. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/dataset/whois/sql.py +0 -0
  227. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/__init__.py +0 -0
  228. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/base.py +0 -0
  229. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/exceptions.py +0 -0
  230. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/iana.py +0 -0
  231. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/ipv4_reputation.py +0 -0
  232. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/public_suffix.py +0 -0
  233. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/downloader/user_agents.py +0 -0
  234. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/exceptions.py +0 -0
  235. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/facility.py +0 -0
  236. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/factory.py +0 -0
  237. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/__init__.py +0 -0
  238. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/command.py +0 -0
  239. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/dict.py +0 -0
  240. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/directory.py +0 -0
  241. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/download.py +0 -0
  242. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/environment_variable.py +0 -0
  243. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/exceptions.py +0 -0
  244. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/file.py +0 -0
  245. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/hash.py +0 -0
  246. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/list.py +0 -0
  247. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/merge.py +0 -0
  248. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/helpers/regex.py +0 -0
  249. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/logger.py +0 -0
  250. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/__init__.py +0 -0
  251. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/dns/__init__.py +0 -0
  252. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/dns/nameserver.py +0 -0
  253. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/dns/query_tool.py +0 -0
  254. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/dns/resolver.py +0 -0
  255. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/http_status_code.py +0 -0
  256. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/netinfo/__init__.py +0 -0
  257. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/netinfo/address.py +0 -0
  258. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/netinfo/base.py +0 -0
  259. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/netinfo/hostbyaddr.py +0 -0
  260. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/record/__init__.py +0 -0
  261. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/record/base.py +0 -0
  262. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/record/dns.py +0 -0
  263. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/record/whois.py +0 -0
  264. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/requests/__init__.py +0 -0
  265. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/requests/adapter/__init__.py +0 -0
  266. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/requests/adapter/base.py +0 -0
  267. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/requests/adapter/http.py +0 -0
  268. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/requests/adapter/https.py +0 -0
  269. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/requests/requester.py +0 -0
  270. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/__init__.py +0 -0
  271. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/converter/__init__.py +0 -0
  272. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/converter/base.py +0 -0
  273. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/converter/digit2digits.py +0 -0
  274. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/converter/expiration_date.py +0 -0
  275. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/converter/month2unified.py +0 -0
  276. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/converter/registrar.py +0 -0
  277. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/query/whois/query_tool.py +0 -0
  278. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/sessions.py +0 -0
  279. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/storage_facility.py +0 -0
  280. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/utils/__init__.py +0 -0
  281. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/utils/platform.py +0 -0
  282. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/utils/profile.py +0 -0
  283. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble/utils/version.py +0 -0
  284. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble_dev.egg-info/SOURCES.txt +0 -0
  285. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble_dev.egg-info/dependency_links.txt +0 -0
  286. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble_dev.egg-info/entry_points.txt +0 -0
  287. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble_dev.egg-info/requires.txt +43 -43
  288. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/PyFunceble_dev.egg-info/top_level.txt +0 -0
  289. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/README.rst +0 -0
  290. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/requirements.dev.txt +0 -0
  291. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/requirements.docs.txt +0 -0
  292. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/requirements.test.txt +0 -0
  293. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/requirements.txt +0 -0
  294. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/requirements.win.txt +0 -0
  295. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/setup.cfg +0 -0
  296. {PyFunceble-dev-4.2.9 → PyFunceble-dev-4.2.10}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyFunceble-dev
3
- Version: 4.2.9
3
+ Version: 4.2.10
4
4
  Summary: The tool to check the availability or syntax of domain, IP or URL.
5
5
  Home-page: https://github.com/funilrys/PyFunceble
6
6
  Author: funilrys
@@ -1043,7 +1043,13 @@ class AvailabilityCheckerBase(CheckerBase):
1043
1043
  self.collection_query_tool.preferred_status_origin == "latest"
1044
1044
  and data["status"]["availability"]["latest"]
1045
1045
  ):
1046
- self.status.status = data["status"]["availability"]["latest"]["status"]
1046
+ try:
1047
+ # legacy
1048
+ self.status.status = data["status"]["availability"]["latest"][
1049
+ "status"
1050
+ ]
1051
+ except KeyError:
1052
+ self.status.status = data["status"]["availability"]["latest"]
1047
1053
  self.status.status_source = "COLLECTION"
1048
1054
  elif (
1049
1055
  self.collection_query_tool.preferred_status_origin == "recommended"
@@ -69,7 +69,9 @@ from PyFunceble.cli.system.launcher import SystemLauncher
69
69
  from PyFunceble.helpers.regex import RegexHelper
70
70
 
71
71
 
72
- def get_configured_value(entry: str, *, negate=False) -> Any:
72
+ def get_configured_value(
73
+ entry: str, *, negate: bool = False, value_only: bool = False
74
+ ) -> Any:
73
75
  """
74
76
  Provides the currently configured value.
75
77
 
@@ -81,6 +83,9 @@ def get_configured_value(entry: str, *, negate=False) -> Any:
81
83
  :param negate:
82
84
  Allows us to negate the result from the configuration.
83
85
 
86
+ :param value_only:
87
+ Whether we should only return the value or the full message.
88
+
84
89
  :raise ValueError:
85
90
  When the given :code:`entry` is not found.
86
91
  """
@@ -102,10 +107,14 @@ def get_configured_value(entry: str, *, negate=False) -> Any:
102
107
  result = not result
103
108
 
104
109
  return (
105
- f"\n{colorama.Fore.YELLOW}{colorama.Style.BRIGHT}"
106
- f"Configured value: {colorama.Fore.BLUE}"
107
- f"{result!r}"
108
- f"{colorama.Style.RESET_ALL}"
110
+ (
111
+ f"\n{colorama.Fore.YELLOW}{colorama.Style.BRIGHT}"
112
+ f"Configured value: {colorama.Fore.BLUE}"
113
+ f"{result!r}"
114
+ f"{colorama.Style.RESET_ALL}"
115
+ )
116
+ if not value_only
117
+ else result
109
118
  )
110
119
 
111
120
 
@@ -122,6 +131,12 @@ def add_arguments_to_parser(
122
131
  if "dest" in opt_args:
123
132
  opt_args["dest"] = opt_args["dest"].replace(".", "__")
124
133
 
134
+ for index, value in enumerate(pos_args):
135
+ if value.startswith("-") and "." not in value:
136
+ continue
137
+
138
+ pos_args[index] = value.replace(".", "__")
139
+
125
140
  parser.add_argument(*pos_args, **opt_args)
126
141
 
127
142
 
@@ -1184,6 +1199,42 @@ def get_default_group_data() -> List[Tuple[List[str], dict]]:
1184
1199
  ]
1185
1200
 
1186
1201
 
1202
+ def platform_parser(
1203
+ parser: Union[argparse.ArgumentParser, argparse._SubParsersAction]
1204
+ ) -> None:
1205
+ """
1206
+ Adds the platform group to the given parser.
1207
+ """
1208
+
1209
+ platform = parser.add_parser(
1210
+ "platform",
1211
+ add_help=False,
1212
+ epilog=PyFunceble.cli.storage.STD_EPILOG,
1213
+ )
1214
+
1215
+ args = [
1216
+ (
1217
+ ["cli_testing.testing_mode.platform_contribution"],
1218
+ {
1219
+ "default": get_configured_value(
1220
+ "cli_testing.testing_mode.platform_contribution", value_only=True
1221
+ ),
1222
+ "action": "store_%s"
1223
+ % str(
1224
+ not get_configured_value(
1225
+ "cli_testing.testing_mode.platform_contribution",
1226
+ value_only=True,
1227
+ )
1228
+ ).lower(),
1229
+ "help": argparse.SUPPRESS,
1230
+ },
1231
+ )
1232
+ ]
1233
+
1234
+ add_arguments_to_parser(platform, args)
1235
+ add_arguments_to_parser(platform, get_default_group_data())
1236
+
1237
+
1187
1238
  def ask_authorization_to_merge_config(missing_key: Optional[str] = None) -> bool:
1188
1239
  """
1189
1240
  Asks the end-user for the authorization to merge the upstream
@@ -1292,6 +1343,8 @@ def tool() -> None:
1292
1343
 
1293
1344
  # pylint: disable=possibly-unused-variable
1294
1345
 
1346
+ command_sub = parser.add_subparsers(dest="command", help=argparse.SUPPRESS)
1347
+
1295
1348
  shtab.add_argument_to(
1296
1349
  parser,
1297
1350
  option_string=["--show-completion"],
@@ -1321,6 +1374,8 @@ def tool() -> None:
1321
1374
  get_ci_group_data,
1322
1375
  ]
1323
1376
 
1377
+ parse_funcs = [platform_parser]
1378
+
1324
1379
  for func in funcs:
1325
1380
  parser_name = func.__name__.replace("get_", "").replace("_data", "")
1326
1381
 
@@ -1348,10 +1403,21 @@ def tool() -> None:
1348
1403
  )
1349
1404
  sys.exit(1)
1350
1405
 
1406
+ for func in parse_funcs:
1407
+ func(command_sub)
1408
+
1351
1409
  add_arguments_to_parser(parser, get_default_group_data())
1352
1410
 
1353
1411
  args = parser.parse_args()
1354
1412
 
1355
- if any(getattr(args, x) for x in ["domains", "urls", "files", "url_files"]):
1413
+ if any(
1414
+ getattr(args, x)
1415
+ for x in [
1416
+ "domains",
1417
+ "urls",
1418
+ "files",
1419
+ "url_files",
1420
+ ]
1421
+ ) or bool(args.command):
1356
1422
  SystemIntegrator(args).start()
1357
1423
  SystemLauncher(args).start()
@@ -318,8 +318,10 @@ class WorkerBase(multiprocessing.Process):
318
318
 
319
319
  try:
320
320
  worker_name, destination_worker, consumed = self.input_queue.get()
321
- except EOFError:
322
- PyFunceble.facility.Logger.info("Got EOFError. Stopping worker.")
321
+ except (EOFError, KeyboardInterrupt):
322
+ PyFunceble.facility.Logger.info(
323
+ "Got EOFError/KeyboardInterrupt. Stopping worker."
324
+ )
323
325
  self.global_exit_event.set()
324
326
  break
325
327
 
@@ -370,7 +372,14 @@ class WorkerBase(multiprocessing.Process):
370
372
  self.share_waiting_message(apply_breakoff=wait_for_stop)
371
373
  continue
372
374
 
373
- result = self.target(consumed)
375
+ try:
376
+ result = self.target(consumed)
377
+ except (EOFError, KeyboardInterrupt):
378
+ PyFunceble.facility.Logger.info(
379
+ "Got EOFError/KeyboardInterrupt. Stopping worker."
380
+ )
381
+ self.global_exit_event.set()
382
+ break
374
383
 
375
384
  if result is not None:
376
385
  self.add_to_output_queue(result)
@@ -399,6 +399,11 @@ class ProducerWorker(WorkerBase):
399
399
  )
400
400
  return None
401
401
 
402
+ if test_dataset["type"] == "platform-contribution":
403
+ self.collection_query_tool.deliver_contract(
404
+ test_dataset["contract"], test_result
405
+ )
406
+
402
407
  if (
403
408
  PyFunceble.storage.CONFIGURATION.collection.push
404
409
  and test_result.status_source != "COLLECTION"
@@ -119,6 +119,7 @@ from PyFunceble.dataset.inactive.base import InactiveDatasetBase
119
119
  from PyFunceble.helpers.directory import DirectoryHelper
120
120
  from PyFunceble.helpers.download import DownloadHelper
121
121
  from PyFunceble.helpers.file import FileHelper
122
+ from PyFunceble.query.collection import CollectionQueryTool
122
123
 
123
124
 
124
125
  class SystemLauncher(SystemBase):
@@ -222,7 +223,7 @@ class SystemLauncher(SystemBase):
222
223
  )
223
224
  self.producer_process_manager = ChancyProducerProcessesManager(
224
225
  self.manager,
225
- max_worker=1,
226
+ max_worker=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
226
227
  continuous_integration=self.continuous_integration,
227
228
  input_queue=self.tester_process_manager.output_queue[0],
228
229
  daemon=True,
@@ -406,6 +407,21 @@ class SystemLauncher(SystemBase):
406
407
  "Added to the protocol:\n%r", to_append
407
408
  )
408
409
 
410
+ # pylint: disable=line-too-long
411
+ if (
412
+ PyFunceble.storage.CONFIGURATION.cli_testing.testing_mode.platform_contribution
413
+ ):
414
+ self.testing_protocol.append(
415
+ {
416
+ "type": "platform-contribution",
417
+ "subject_type": "any",
418
+ "destination": None,
419
+ "checker_type": None,
420
+ "output_dir": None,
421
+ "session_id": None,
422
+ }
423
+ )
424
+
409
425
  def ci_stop_in_the_middle_if_time_exceeded(self) -> "SystemLauncher":
410
426
  """
411
427
  Stops our processes as soon as the time is exceeded.
@@ -648,7 +664,37 @@ class SystemLauncher(SystemBase):
648
664
  )
649
665
  elif protocol["type"] == "file":
650
666
  handle_file(protocol)
667
+ elif protocol["type"] == "platform-contribution":
668
+ query_tool = CollectionQueryTool()
669
+
670
+ while True:
671
+ for next_contract in next(
672
+ query_tool.pull_contract(
673
+ PyFunceble.storage.CONFIGURATION.cli_testing.max_workers
674
+ )
675
+ ):
676
+ if (
677
+ "subject" not in next_contract
678
+ or not next_contract["subject"]
679
+ ):
680
+ continue
651
681
 
682
+ protocol_data = copy.deepcopy(protocol)
683
+
684
+ protocol_data["checker_type"] = next_contract[
685
+ "checker_type"
686
+ ].upper()
687
+ protocol_data["subject_type"] = next_contract["subject_type"]
688
+ protocol_data["subject"] = protocol_data["idna_subject"] = (
689
+ next_contract["subject"]["subject"]
690
+ )
691
+ protocol_data["contract"] = copy.deepcopy(next_contract)
692
+
693
+ self.tester_process_manager.add_to_input_queue(
694
+ protocol_data, worker_name="main"
695
+ )
696
+
697
+ self.ci_stop_in_the_middle_if_time_exceeded()
652
698
  return self
653
699
 
654
700
  def generate_waiting_files(self) -> "SystemLauncher":
@@ -172,6 +172,16 @@ class ConfigLoader:
172
172
  # If timeout is set to a negative digit, switch to the default one.
173
173
  config["lookup"]["timeout"] = 5
174
174
 
175
+ if (
176
+ "cli_testing" in config
177
+ and "testing_mode" in config["cli_testing"]
178
+ and "platform_contribution" in config["cli_testing"]["testing_mode"]
179
+ and config["cli_testing"]["testing_mode"]["platform_contribution"]
180
+ ):
181
+ # If we are under a special testing mode. We shouldn't generate
182
+ # any files
183
+ config["cli_testing"]["file_generation"]["no_file"] = True
184
+
175
185
  return config
176
186
 
177
187
  @staticmethod
@@ -173,6 +173,9 @@ cli_testing:
173
173
  # Activates the reputation test.
174
174
  reputation: no
175
175
 
176
+ # BETA: Activates the platform contribution test.
177
+ platform_contribution: no
178
+
176
179
  days_between:
177
180
  # Provides everything which is x days periodic.
178
181
 
@@ -51,7 +51,7 @@ License:
51
51
  """
52
52
 
53
53
  import json
54
- from typing import List, Optional, Union
54
+ from typing import Generator, List, Optional, Union
55
55
 
56
56
  import requests
57
57
  import requests.exceptions
@@ -447,7 +447,7 @@ class CollectionQueryTool:
447
447
 
448
448
  return self
449
449
 
450
- def ensure_is_modern_api_is_set(func): # pylint: disable=no-self-argument
450
+ def ensure_modern_api(func): # pylint: disable=no-self-argument
451
451
  """
452
452
  Ensures that the :code:`is_modern_api` attribute is set before running
453
453
  the decorated method.
@@ -461,7 +461,7 @@ class CollectionQueryTool:
461
461
 
462
462
  return wrapper
463
463
 
464
- @ensure_is_modern_api_is_set
464
+ @ensure_modern_api
465
465
  def pull(self, subject: str) -> Optional[dict]:
466
466
  """
467
467
  Pulls all data related to the subject or :py:class:`None`
@@ -520,7 +520,113 @@ class CollectionQueryTool:
520
520
 
521
521
  return None
522
522
 
523
- @ensure_is_modern_api_is_set
523
+ @ensure_modern_api
524
+ def pull_contract(self, amount: int = 1) -> Generator[dict, None, None]:
525
+ """
526
+ Pulls the next amount of contracts.
527
+
528
+ :param int amount:
529
+ The amount of data to pull.
530
+
531
+ :return:
532
+ The response of the query.
533
+ """
534
+
535
+ PyFunceble.facility.Logger.info("Starting to pull next contract")
536
+
537
+ url = f"{self.url_base}/v1/contracts/next"
538
+ params = {
539
+ "limit": amount,
540
+ "shuffle": True,
541
+ }
542
+
543
+ try:
544
+ response = self.session.get(
545
+ url,
546
+ params=params,
547
+ timeout=self.timeout,
548
+ )
549
+
550
+ response_json = response.json()
551
+
552
+ if response.status_code == 200:
553
+ PyFunceble.facility.Logger.debug(
554
+ "Successfully pulled next %r contracts. Response: %r", response_json
555
+ )
556
+
557
+ PyFunceble.facility.Logger.info("Finished to pull next contract")
558
+
559
+ yield response_json
560
+ except (requests.RequestException, json.decoder.JSONDecodeError):
561
+ response_json = [{"subject": {}}]
562
+
563
+ PyFunceble.facility.Logger.debug(
564
+ "Failed to pull next contract. Response: %r", response_json
565
+ )
566
+ PyFunceble.facility.Logger.info("Finished to pull next contracts")
567
+
568
+ yield response_json
569
+
570
+ @ensure_modern_api
571
+ def deliver_contract(self, contract: dict, contract_data: dict) -> Optional[dict]:
572
+ """
573
+ Delivers the given contract data.
574
+
575
+ :param contract:
576
+ The contract to deliver.
577
+ :param contract_data:
578
+ The data to deliver.
579
+
580
+ :return:
581
+ The response of the query.
582
+ """
583
+
584
+ PyFunceble.facility.Logger.info(
585
+ "Starting to deliver contract data: %r", contract
586
+ )
587
+
588
+ contract_id = contract["id"]
589
+ contract_data = (
590
+ contract_data.to_json()
591
+ if not isinstance(contract_data, dict)
592
+ else contract_data
593
+ )
594
+ url = f"{self.url_base}/v1/contracts/{contract_id}/delivery"
595
+
596
+ try:
597
+ response = self.session.post(
598
+ url,
599
+ data=contract_data.encode("utf-8"),
600
+ timeout=self.timeout,
601
+ )
602
+
603
+ response_json = response.json()
604
+
605
+ if response.status_code == 200:
606
+ PyFunceble.facility.Logger.debug(
607
+ "Successfully delivered contract: %r. Response: %r",
608
+ contract_data,
609
+ response_json,
610
+ )
611
+
612
+ PyFunceble.facility.Logger.info(
613
+ "Finished to deliver contract: %r", contract_data
614
+ )
615
+
616
+ return response_json
617
+ except (requests.RequestException, json.decoder.JSONDecodeError):
618
+ response_json = {}
619
+
620
+ PyFunceble.facility.Logger.debug(
621
+ "Failed to deliver contract: %r. Response: %r", contract_data, response_json
622
+ )
623
+ PyFunceble.facility.Logger.info(
624
+ "Finished to deliver contract: %r", contract_data
625
+ )
626
+
627
+ return None
628
+
629
+ @ensure_modern_api
524
630
  def push(
525
631
  self,
526
632
  checker_status: Union[
@@ -61,7 +61,7 @@ from dotenv import load_dotenv
61
61
  from PyFunceble.storage_facility import get_config_directory
62
62
 
63
63
  PROJECT_NAME: str = "PyFunceble"
64
- PROJECT_VERSION: str = "4.2.9.dev (Blue Duckling: Ixora)"
64
+ PROJECT_VERSION: str = "4.2.10.dev (Blue Duckling: Ixora)"
65
65
 
66
66
  DISTRIBUTED_CONFIGURATION_FILENAME: str = ".PyFunceble_production.yaml"
67
67
  DISTRIBUTED_DIR_STRUCTURE_FILENAME: str = "dir_structure_production.json"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyFunceble-dev
3
- Version: 4.2.9
3
+ Version: 4.2.10
4
4
  Summary: The tool to check the availability or syntax of domain, IP or URL.
5
5
  Home-page: https://github.com/funilrys/PyFunceble
6
6
  Author: funilrys
@@ -1,4 +1,4 @@
1
- current_version: '4.2.9.dev (Blue Duckling: Ixora)'
1
+ current_version: '4.2.10.dev (Blue Duckling: Ixora)'
2
2
  deprecated:
3
3
  - 3.0.21
4
4
  - 3.1.20
File without changes