PyFunceble-dev 4.3.0a11__tar.gz → 4.3.0a13__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 (298) hide show
  1. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PKG-INFO +106 -106
  2. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/pyfunceble/cli.py +15 -9
  3. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/config/loader.py +82 -17
  4. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/infrastructure/.PyFunceble_production.yaml +11 -0
  5. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/user_agent.py +37 -3
  6. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/storage.py +1 -1
  7. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble_dev.egg-info/PKG-INFO +106 -106
  8. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/version.yaml +1 -1
  9. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/CODE_OF_CONDUCT.md +0 -0
  10. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/CONTRIBUTING.md +0 -0
  11. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/CONTRIBUTORS.md +0 -0
  12. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/LICENSE +0 -0
  13. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/MANIFEST.in +0 -0
  14. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/__init__.py +0 -0
  15. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/__init__.py +0 -0
  16. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/__init__.py +0 -0
  17. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/base.py +0 -0
  18. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/domain.py +0 -0
  19. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/domain_and_ip.py +0 -0
  20. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/__init__.py +0 -0
  21. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/base.py +0 -0
  22. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/dns.py +0 -0
  23. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/etoxic.py +0 -0
  24. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/parked.py +0 -0
  25. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/rules.py +0 -0
  26. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/extras/subject_switch.py +0 -0
  27. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/ip.py +0 -0
  28. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/params.py +0 -0
  29. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/status.py +0 -0
  30. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/availability/url.py +0 -0
  31. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/base.py +0 -0
  32. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/complex_json_encoder.py +0 -0
  33. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/params_base.py +0 -0
  34. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/__init__.py +0 -0
  35. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/base.py +0 -0
  36. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/domain.py +0 -0
  37. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/domain_and_ip.py +0 -0
  38. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/ip.py +0 -0
  39. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/params.py +0 -0
  40. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/status.py +0 -0
  41. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/reputation/url.py +0 -0
  42. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/status_base.py +0 -0
  43. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/__init__.py +0 -0
  44. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/base.py +0 -0
  45. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/domain.py +0 -0
  46. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/domain_and_ip.py +0 -0
  47. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/domain_base.py +0 -0
  48. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/ip.py +0 -0
  49. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/ipv4.py +0 -0
  50. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/ipv6.py +0 -0
  51. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/params.py +0 -0
  52. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/second_lvl_domain.py +0 -0
  53. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/status.py +0 -0
  54. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/subdomain.py +0 -0
  55. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/syntax/url.py +0 -0
  56. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/utils/__init__.py +0 -0
  57. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/checker/utils/whois.py +0 -0
  58. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/__init__.py +0 -0
  59. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/__init__.py +0 -0
  60. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/base.py +0 -0
  61. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/exceptions.py +0 -0
  62. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/github_actions.py +0 -0
  63. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/gitlab_ci.py +0 -0
  64. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/jenkins.py +0 -0
  65. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/standalone.py +0 -0
  66. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/travis_ci.py +0 -0
  67. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/continuous_integration/utils.py +0 -0
  68. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/credential_loader.py +0 -0
  69. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/__init__.py +0 -0
  70. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/clean.py +0 -0
  71. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/iana.py +0 -0
  72. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/production.py +0 -0
  73. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/public_suffix.py +0 -0
  74. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/pyfunceble/__init__.py +0 -0
  75. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/entry_points/pyfunceble/argsparser.py +0 -0
  76. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/execution_time.py +0 -0
  77. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/facility.py +0 -0
  78. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/factory.py +0 -0
  79. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/file_preloader.py +0 -0
  80. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/__init__.py +0 -0
  81. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/cleanup.py +0 -0
  82. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/counter.py +0 -0
  83. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/dir_base.py +0 -0
  84. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/dir_structure/__init__.py +0 -0
  85. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/dir_structure/backup.py +0 -0
  86. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/dir_structure/base.py +0 -0
  87. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/dir_structure/restore.py +0 -0
  88. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/json_base.py +0 -0
  89. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/printer/__init__.py +0 -0
  90. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/printer/base.py +0 -0
  91. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/printer/file.py +0 -0
  92. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/printer/stdout.py +0 -0
  93. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/registrar_counter.py +0 -0
  94. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/filesystem/status_file.py +0 -0
  95. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/__init__.py +0 -0
  96. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/alembic.py +0 -0
  97. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/base.py +0 -0
  98. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/csv_file/__init__.py +0 -0
  99. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/csv_file/base.py +0 -0
  100. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/csv_file/inactive_source_delete.py +0 -0
  101. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/csv_file/whois_registrar_add.py +0 -0
  102. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/db_base.py +0 -0
  103. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/file_cleanup/__init__.py +0 -0
  104. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/file_cleanup/base.py +0 -0
  105. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/file_cleanup/hashes_file.py +0 -0
  106. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/file_cleanup/mining_file.py +0 -0
  107. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/file_cleanup/production_config_file.py +0 -0
  108. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/json2csv/__init__.py +0 -0
  109. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/json2csv/base.py +0 -0
  110. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/json2csv/inactive.py +0 -0
  111. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/json2csv/whois.py +0 -0
  112. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/mariadb/__init__.py +0 -0
  113. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/mariadb/base.py +0 -0
  114. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/mariadb/file_and_status.py +0 -0
  115. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/migrators/mariadb/whois_record_idna_subject.py +0 -0
  116. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/__init__.py +0 -0
  117. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/base.py +0 -0
  118. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/chancy_producer.py +0 -0
  119. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/chancy_tester.py +0 -0
  120. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/dir_files_sorter.py +0 -0
  121. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/file_sorter.py +0 -0
  122. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/migrator.py +0 -0
  123. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/miner.py +0 -0
  124. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/producer.py +0 -0
  125. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/tester.py +0 -0
  126. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/__init__.py +0 -0
  127. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/base.py +0 -0
  128. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/chancy_producer.py +0 -0
  129. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/chancy_tester.py +0 -0
  130. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/dir_files_sorter.py +0 -0
  131. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/file_sorter.py +0 -0
  132. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/file_sorter_base.py +0 -0
  133. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/migrator.py +0 -0
  134. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/miner.py +0 -0
  135. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/producer.py +0 -0
  136. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/processes/workers/tester.py +0 -0
  137. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/scripts/__init__.py +0 -0
  138. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/scripts/iana.py +0 -0
  139. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/scripts/production.py +0 -0
  140. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/scripts/public_suffix.py +0 -0
  141. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/storage.py +0 -0
  142. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/storage_facility.py +0 -0
  143. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/system/__init__.py +0 -0
  144. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/system/base.py +0 -0
  145. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/system/integrator.py +0 -0
  146. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/system/launcher.py +0 -0
  147. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/utils/__init__.py +0 -0
  148. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/utils/ascii_logo.py +0 -0
  149. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/utils/sort.py +0 -0
  150. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/utils/stdout.py +0 -0
  151. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/utils/testing.py +0 -0
  152. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/cli/utils/version.py +0 -0
  153. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/config/__init__.py +0 -0
  154. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/config/compare.py +0 -0
  155. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/__init__.py +0 -0
  156. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/adblock_input_line2subject.py +0 -0
  157. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/base.py +0 -0
  158. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/cidr2subject.py +0 -0
  159. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/input_line2subject.py +0 -0
  160. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/internal_url.py +0 -0
  161. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/rpz_input_line2subject.py +0 -0
  162. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/rpz_policy2subject.py +0 -0
  163. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/subject2complements.py +0 -0
  164. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/url2netloc.py +0 -0
  165. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/converter/wildcard2subject.py +0 -0
  166. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/__init__.py +0 -0
  167. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/__init__.py +0 -0
  168. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/__init__.py +0 -0
  169. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/env.py +0 -0
  170. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/script.py.mako +0 -0
  171. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/35c79626ecb9_fix_some_columns.py +0 -0
  172. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/3a4c55a9320d_add_continue_table.py +0 -0
  173. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/3d6f4a33cdb2_add_inactive_table.py +0 -0
  174. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py +0 -0
  175. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py +0 -0
  176. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/6f4729deaf03_delete_inactive_source_column.py +0 -0
  177. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/7bcf7fa64ba1_rename_created_to_created_at_and.py +0 -0
  178. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/83ada95132bf_delete_the_file_table.py +0 -0
  179. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/912bbcb77a6c_add_registrar_column.py +0 -0
  180. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/95dc17ddd729_introduction_of_the_session_id_column.py +0 -0
  181. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/__init__.py +0 -0
  182. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/ade87195b0a0_base.py +0 -0
  183. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/bef7bcaac3f2_make_id_a_bigint.py +0 -0
  184. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py +0 -0
  185. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/mysql/versions/e04e8301d1a2_deletion_of_the_mined_table.py +0 -0
  186. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/postgresql/__init__.py +0 -0
  187. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/postgresql/env.py +0 -0
  188. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/postgresql/script.py.mako +0 -0
  189. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/postgresql/versions/__init__.py +0 -0
  190. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/alembic/postgresql/versions/a32ac5d66eee_initial_version.py +0 -0
  191. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/infrastructure/__init__.py +0 -0
  192. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/data/infrastructure/dir_structure_production.json +0 -0
  193. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/__init__.py +0 -0
  194. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/credential/__init__.py +0 -0
  195. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/credential/base.py +0 -0
  196. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/credential/mariadb.py +0 -0
  197. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/credential/mysql.py +0 -0
  198. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/credential/postgresql.py +0 -0
  199. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/schemas/__init__.py +0 -0
  200. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/schemas/autocontinue.py +0 -0
  201. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/schemas/inactive.py +0 -0
  202. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/schemas/status.py +0 -0
  203. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/schemas/whois_record.py +0 -0
  204. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/session.py +0 -0
  205. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/sqlalchemy/__init__.py +0 -0
  206. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/sqlalchemy/all_schemas.py +0 -0
  207. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/database/sqlalchemy/base_schema.py +0 -0
  208. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/__init__.py +0 -0
  209. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/autocontinue/__init__.py +0 -0
  210. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/autocontinue/base.py +0 -0
  211. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/autocontinue/csv.py +0 -0
  212. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/autocontinue/sql.py +0 -0
  213. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/base.py +0 -0
  214. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/csv_base.py +0 -0
  215. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/db_base.py +0 -0
  216. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/iana.py +0 -0
  217. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/inactive/__init__.py +0 -0
  218. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/inactive/base.py +0 -0
  219. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/inactive/csv.py +0 -0
  220. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/inactive/sql.py +0 -0
  221. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/ipv4_reputation.py +0 -0
  222. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/public_suffix.py +0 -0
  223. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/sql_base.py +0 -0
  224. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/whois/__init__.py +0 -0
  225. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/whois/base.py +0 -0
  226. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/whois/csv.py +0 -0
  227. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/dataset/whois/sql.py +0 -0
  228. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/__init__.py +0 -0
  229. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/base.py +0 -0
  230. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/exceptions.py +0 -0
  231. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/iana.py +0 -0
  232. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/ipv4_reputation.py +0 -0
  233. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/public_suffix.py +0 -0
  234. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/downloader/user_agents.py +0 -0
  235. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/exceptions.py +0 -0
  236. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/facility.py +0 -0
  237. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/factory.py +0 -0
  238. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/__init__.py +0 -0
  239. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/command.py +0 -0
  240. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/dict.py +0 -0
  241. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/directory.py +0 -0
  242. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/download.py +0 -0
  243. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/environment_variable.py +0 -0
  244. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/exceptions.py +0 -0
  245. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/file.py +0 -0
  246. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/hash.py +0 -0
  247. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/list.py +0 -0
  248. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/merge.py +0 -0
  249. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/helpers/regex.py +0 -0
  250. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/logger.py +0 -0
  251. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/__init__.py +0 -0
  252. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/dns/__init__.py +0 -0
  253. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/dns/nameserver.py +0 -0
  254. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/dns/query_tool.py +0 -0
  255. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/dns/resolver.py +0 -0
  256. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/http_status_code.py +0 -0
  257. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/netinfo/__init__.py +0 -0
  258. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/netinfo/address.py +0 -0
  259. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/netinfo/base.py +0 -0
  260. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/netinfo/hostbyaddr.py +0 -0
  261. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/platform.py +0 -0
  262. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/record/__init__.py +0 -0
  263. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/record/base.py +0 -0
  264. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/record/dns.py +0 -0
  265. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/record/whois.py +0 -0
  266. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/requests/__init__.py +0 -0
  267. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/requests/adapter/__init__.py +0 -0
  268. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/requests/adapter/base.py +0 -0
  269. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/requests/adapter/http.py +0 -0
  270. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/requests/adapter/https.py +0 -0
  271. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/requests/requester.py +0 -0
  272. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/__init__.py +0 -0
  273. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/converter/__init__.py +0 -0
  274. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/converter/base.py +0 -0
  275. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/converter/digit2digits.py +0 -0
  276. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/converter/expiration_date.py +0 -0
  277. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/converter/month2unified.py +0 -0
  278. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/converter/registrar.py +0 -0
  279. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/query/whois/query_tool.py +0 -0
  280. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/sessions.py +0 -0
  281. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/storage_facility.py +0 -0
  282. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/utils/__init__.py +0 -0
  283. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/utils/platform.py +0 -0
  284. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/utils/profile.py +0 -0
  285. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble/utils/version.py +0 -0
  286. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble_dev.egg-info/SOURCES.txt +0 -0
  287. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble_dev.egg-info/dependency_links.txt +0 -0
  288. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble_dev.egg-info/entry_points.txt +0 -0
  289. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble_dev.egg-info/requires.txt +105 -105
  290. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/PyFunceble_dev.egg-info/top_level.txt +0 -0
  291. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/README.md +0 -0
  292. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/requirements.dev.txt +0 -0
  293. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/requirements.docs.txt +0 -0
  294. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/requirements.test.txt +0 -0
  295. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/requirements.txt +0 -0
  296. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/requirements.win.txt +0 -0
  297. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/setup.cfg +0 -0
  298. {pyfunceble_dev-4.3.0a11 → pyfunceble_dev-4.3.0a13}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyFunceble-dev
3
- Version: 4.3.0a11
3
+ Version: 4.3.0a13
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
@@ -22,169 +22,169 @@ Classifier: License :: OSI Approved
22
22
  Requires-Python: >=3.9, <4
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
- Requires-Dist: SQLAlchemy~=2.0
25
+ Requires-Dist: requests[socks]<3
26
+ Requires-Dist: domain2idna~=1.12.0
27
+ Requires-Dist: setuptools>=65.5.1
26
28
  Requires-Dist: python-dotenv
29
+ Requires-Dist: shtab
27
30
  Requires-Dist: PyYAML
28
- Requires-Dist: dnspython[DOH]~=2.6.0
29
- Requires-Dist: colorama
31
+ Requires-Dist: packaging
30
32
  Requires-Dist: inflection
31
- Requires-Dist: requests[socks]<3
33
+ Requires-Dist: python-box[all]~=6.0.0
32
34
  Requires-Dist: PyMySQL
33
- Requires-Dist: domain2idna~=1.12.0
35
+ Requires-Dist: dnspython[DOH]~=2.6.0
34
36
  Requires-Dist: alembic
35
- Requires-Dist: packaging
36
- Requires-Dist: python-box[all]~=6.0.0
37
- Requires-Dist: shtab
38
- Requires-Dist: setuptools>=65.5.1
37
+ Requires-Dist: SQLAlchemy~=2.0
38
+ Requires-Dist: colorama
39
39
  Provides-Extra: docs
40
- Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
41
- Requires-Dist: mkdocs-gen-files~=0.5; extra == "docs"
42
40
  Requires-Dist: mkdocs-literate-nav~=0.6; extra == "docs"
43
- Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "docs"
44
- Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "docs"
45
- Requires-Dist: mkdocs-material~=9.5; extra == "docs"
46
- Requires-Dist: mkdocs~=1.5; extra == "docs"
41
+ Requires-Dist: mkdocs-gen-files~=0.5; extra == "docs"
42
+ Requires-Dist: mkdocstrings[python]~=0.26; extra == "docs"
47
43
  Requires-Dist: zipp>=3.19.1; extra == "docs"
44
+ Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "docs"
48
45
  Requires-Dist: pymdown-extensions~=10.9; extra == "docs"
46
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
47
+ Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "docs"
48
+ Requires-Dist: mkdocs~=1.5; extra == "docs"
49
49
  Requires-Dist: mkdocs-section-index~=0.3; extra == "docs"
50
- Requires-Dist: mkdocstrings[python]~=0.26; extra == "docs"
50
+ Requires-Dist: mkdocs-material~=9.5; extra == "docs"
51
51
  Provides-Extra: dev
52
- Requires-Dist: flake8; extra == "dev"
52
+ Requires-Dist: isort; extra == "dev"
53
53
  Requires-Dist: black; extra == "dev"
54
+ Requires-Dist: flake8; extra == "dev"
54
55
  Requires-Dist: pylint; extra == "dev"
55
- Requires-Dist: isort; extra == "dev"
56
56
  Provides-Extra: test
57
57
  Requires-Dist: coverage; extra == "test"
58
58
  Requires-Dist: tox; extra == "test"
59
59
  Provides-Extra: psql
60
- Requires-Dist: SQLAlchemy~=2.0; extra == "psql"
60
+ Requires-Dist: requests[socks]<3; extra == "psql"
61
+ Requires-Dist: domain2idna~=1.12.0; extra == "psql"
62
+ Requires-Dist: setuptools>=65.5.1; extra == "psql"
61
63
  Requires-Dist: python-dotenv; extra == "psql"
64
+ Requires-Dist: shtab; extra == "psql"
62
65
  Requires-Dist: PyYAML; extra == "psql"
63
- Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql"
64
- Requires-Dist: colorama; extra == "psql"
65
- Requires-Dist: inflection; extra == "psql"
66
- Requires-Dist: requests[socks]<3; extra == "psql"
66
+ Requires-Dist: packaging; extra == "psql"
67
67
  Requires-Dist: psycopg2; extra == "psql"
68
+ Requires-Dist: inflection; extra == "psql"
69
+ Requires-Dist: python-box[all]~=6.0.0; extra == "psql"
68
70
  Requires-Dist: PyMySQL; extra == "psql"
69
- Requires-Dist: domain2idna~=1.12.0; extra == "psql"
71
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql"
70
72
  Requires-Dist: alembic; extra == "psql"
71
- Requires-Dist: packaging; extra == "psql"
72
- Requires-Dist: python-box[all]~=6.0.0; extra == "psql"
73
- Requires-Dist: shtab; extra == "psql"
74
- Requires-Dist: setuptools>=65.5.1; extra == "psql"
73
+ Requires-Dist: SQLAlchemy~=2.0; extra == "psql"
74
+ Requires-Dist: colorama; extra == "psql"
75
75
  Provides-Extra: psql-binary
76
- Requires-Dist: SQLAlchemy~=2.0; extra == "psql-binary"
77
- Requires-Dist: python-dotenv; extra == "psql-binary"
78
- Requires-Dist: PyYAML; extra == "psql-binary"
79
76
  Requires-Dist: psycopg2-binary; extra == "psql-binary"
80
- Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql-binary"
81
- Requires-Dist: colorama; extra == "psql-binary"
82
- Requires-Dist: inflection; extra == "psql-binary"
83
77
  Requires-Dist: requests[socks]<3; extra == "psql-binary"
84
- Requires-Dist: PyMySQL; extra == "psql-binary"
85
78
  Requires-Dist: domain2idna~=1.12.0; extra == "psql-binary"
86
- Requires-Dist: alembic; extra == "psql-binary"
79
+ Requires-Dist: setuptools>=65.5.1; extra == "psql-binary"
80
+ Requires-Dist: python-dotenv; extra == "psql-binary"
81
+ Requires-Dist: shtab; extra == "psql-binary"
82
+ Requires-Dist: PyYAML; extra == "psql-binary"
87
83
  Requires-Dist: packaging; extra == "psql-binary"
84
+ Requires-Dist: inflection; extra == "psql-binary"
88
85
  Requires-Dist: python-box[all]~=6.0.0; extra == "psql-binary"
89
- Requires-Dist: shtab; extra == "psql-binary"
90
- Requires-Dist: setuptools>=65.5.1; extra == "psql-binary"
86
+ Requires-Dist: PyMySQL; extra == "psql-binary"
87
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql-binary"
88
+ Requires-Dist: alembic; extra == "psql-binary"
89
+ Requires-Dist: SQLAlchemy~=2.0; extra == "psql-binary"
90
+ Requires-Dist: colorama; extra == "psql-binary"
91
91
  Provides-Extra: postgresql
92
- Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql"
92
+ Requires-Dist: requests[socks]<3; extra == "postgresql"
93
+ Requires-Dist: domain2idna~=1.12.0; extra == "postgresql"
94
+ Requires-Dist: setuptools>=65.5.1; extra == "postgresql"
93
95
  Requires-Dist: python-dotenv; extra == "postgresql"
96
+ Requires-Dist: shtab; extra == "postgresql"
94
97
  Requires-Dist: PyYAML; extra == "postgresql"
95
- Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql"
96
- Requires-Dist: colorama; extra == "postgresql"
97
- Requires-Dist: inflection; extra == "postgresql"
98
- Requires-Dist: requests[socks]<3; extra == "postgresql"
98
+ Requires-Dist: packaging; extra == "postgresql"
99
99
  Requires-Dist: psycopg2; extra == "postgresql"
100
+ Requires-Dist: inflection; extra == "postgresql"
101
+ Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql"
100
102
  Requires-Dist: PyMySQL; extra == "postgresql"
101
- Requires-Dist: domain2idna~=1.12.0; extra == "postgresql"
103
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql"
102
104
  Requires-Dist: alembic; extra == "postgresql"
103
- Requires-Dist: packaging; extra == "postgresql"
104
- Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql"
105
- Requires-Dist: shtab; extra == "postgresql"
106
- Requires-Dist: setuptools>=65.5.1; extra == "postgresql"
105
+ Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql"
106
+ Requires-Dist: colorama; extra == "postgresql"
107
107
  Provides-Extra: postgresql-binary
108
- Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql-binary"
109
- Requires-Dist: python-dotenv; extra == "postgresql-binary"
110
- Requires-Dist: PyYAML; extra == "postgresql-binary"
111
108
  Requires-Dist: psycopg2-binary; extra == "postgresql-binary"
112
- Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql-binary"
113
- Requires-Dist: colorama; extra == "postgresql-binary"
114
- Requires-Dist: inflection; extra == "postgresql-binary"
115
109
  Requires-Dist: requests[socks]<3; extra == "postgresql-binary"
116
- Requires-Dist: PyMySQL; extra == "postgresql-binary"
117
110
  Requires-Dist: domain2idna~=1.12.0; extra == "postgresql-binary"
118
- Requires-Dist: alembic; extra == "postgresql-binary"
111
+ Requires-Dist: setuptools>=65.5.1; extra == "postgresql-binary"
112
+ Requires-Dist: python-dotenv; extra == "postgresql-binary"
113
+ Requires-Dist: shtab; extra == "postgresql-binary"
114
+ Requires-Dist: PyYAML; extra == "postgresql-binary"
119
115
  Requires-Dist: packaging; extra == "postgresql-binary"
116
+ Requires-Dist: inflection; extra == "postgresql-binary"
120
117
  Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql-binary"
121
- Requires-Dist: shtab; extra == "postgresql-binary"
122
- Requires-Dist: setuptools>=65.5.1; extra == "postgresql-binary"
118
+ Requires-Dist: PyMySQL; extra == "postgresql-binary"
119
+ Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql-binary"
120
+ Requires-Dist: alembic; extra == "postgresql-binary"
121
+ Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql-binary"
122
+ Requires-Dist: colorama; extra == "postgresql-binary"
123
123
  Provides-Extra: full
124
- Requires-Dist: black; extra == "full"
125
- Requires-Dist: python-dotenv; extra == "full"
126
- Requires-Dist: colorama; extra == "full"
127
- Requires-Dist: mkdocs-material~=9.5; extra == "full"
128
- Requires-Dist: zipp>=3.19.1; extra == "full"
129
- Requires-Dist: alembic; extra == "full"
130
- Requires-Dist: packaging; extra == "full"
131
- Requires-Dist: setuptools>=65.5.1; extra == "full"
132
- Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
133
- Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
134
- Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "full"
135
124
  Requires-Dist: requests[socks]<3; extra == "full"
125
+ Requires-Dist: python-dotenv; extra == "full"
126
+ Requires-Dist: pymdown-extensions~=10.9; extra == "full"
127
+ Requires-Dist: PyYAML; extra == "full"
128
+ Requires-Dist: tox; extra == "full"
129
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "full"
136
130
  Requires-Dist: mkdocs~=1.5; extra == "full"
137
131
  Requires-Dist: python-box[all]~=6.0.0; extra == "full"
138
- Requires-Dist: SQLAlchemy~=2.0; extra == "full"
139
- Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "full"
140
- Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
141
- Requires-Dist: PyYAML; extra == "full"
142
132
  Requires-Dist: dnspython[DOH]~=2.6.0; extra == "full"
143
- Requires-Dist: PyMySQL; extra == "full"
144
- Requires-Dist: domain2idna~=1.12.0; extra == "full"
145
- Requires-Dist: pymdown-extensions~=10.9; extra == "full"
146
- Requires-Dist: coverage; extra == "full"
133
+ Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
134
+ Requires-Dist: zipp>=3.19.1; extra == "full"
147
135
  Requires-Dist: flake8; extra == "full"
148
136
  Requires-Dist: mkdocstrings[python]~=0.26; extra == "full"
149
- Requires-Dist: inflection; extra == "full"
150
- Requires-Dist: pylint; extra == "full"
151
- Requires-Dist: tox; extra == "full"
137
+ Requires-Dist: setuptools>=65.5.1; extra == "full"
138
+ Requires-Dist: black; extra == "full"
139
+ Requires-Dist: packaging; extra == "full"
140
+ Requires-Dist: coverage; extra == "full"
141
+ Requires-Dist: alembic; extra == "full"
142
+ Requires-Dist: SQLAlchemy~=2.0; extra == "full"
143
+ Requires-Dist: domain2idna~=1.12.0; extra == "full"
144
+ Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "full"
145
+ Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
146
+ Requires-Dist: PyMySQL; extra == "full"
147
+ Requires-Dist: colorama; extra == "full"
148
+ Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
152
149
  Requires-Dist: shtab; extra == "full"
153
- Requires-Dist: mkdocs-section-index~=0.3; extra == "full"
150
+ Requires-Dist: inflection; extra == "full"
154
151
  Requires-Dist: isort; extra == "full"
152
+ Requires-Dist: mkdocs-section-index~=0.3; extra == "full"
153
+ Requires-Dist: mkdocs-material~=9.5; extra == "full"
154
+ Requires-Dist: pylint; extra == "full"
155
155
  Provides-Extra: all
156
- Requires-Dist: black; extra == "all"
157
- Requires-Dist: python-dotenv; extra == "all"
158
- Requires-Dist: colorama; extra == "all"
159
- Requires-Dist: mkdocs-material~=9.5; extra == "all"
160
- Requires-Dist: zipp>=3.19.1; extra == "all"
161
- Requires-Dist: alembic; extra == "all"
162
- Requires-Dist: packaging; extra == "all"
163
- Requires-Dist: setuptools>=65.5.1; extra == "all"
164
- Requires-Dist: mkdocs-literate-nav~=0.6; extra == "all"
165
- Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "all"
166
- Requires-Dist: psycopg2-binary; extra == "all"
167
- Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "all"
168
156
  Requires-Dist: requests[socks]<3; extra == "all"
157
+ Requires-Dist: python-dotenv; extra == "all"
158
+ Requires-Dist: pymdown-extensions~=10.9; extra == "all"
159
+ Requires-Dist: PyYAML; extra == "all"
160
+ Requires-Dist: tox; extra == "all"
161
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "all"
169
162
  Requires-Dist: mkdocs~=1.5; extra == "all"
170
163
  Requires-Dist: python-box[all]~=6.0.0; extra == "all"
171
- Requires-Dist: SQLAlchemy~=2.0; extra == "all"
172
- Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "all"
173
- Requires-Dist: mkdocs-gen-files~=0.5; extra == "all"
174
- Requires-Dist: PyYAML; extra == "all"
175
164
  Requires-Dist: dnspython[DOH]~=2.6.0; extra == "all"
176
- Requires-Dist: PyMySQL; extra == "all"
177
- Requires-Dist: domain2idna~=1.12.0; extra == "all"
178
- Requires-Dist: pymdown-extensions~=10.9; extra == "all"
179
- Requires-Dist: coverage; extra == "all"
165
+ Requires-Dist: psycopg2-binary; extra == "all"
166
+ Requires-Dist: mkdocs-literate-nav~=0.6; extra == "all"
167
+ Requires-Dist: zipp>=3.19.1; extra == "all"
180
168
  Requires-Dist: flake8; extra == "all"
181
169
  Requires-Dist: mkdocstrings[python]~=0.26; extra == "all"
182
- Requires-Dist: inflection; extra == "all"
183
- Requires-Dist: pylint; extra == "all"
184
- Requires-Dist: tox; extra == "all"
170
+ Requires-Dist: setuptools>=65.5.1; extra == "all"
171
+ Requires-Dist: black; extra == "all"
172
+ Requires-Dist: packaging; extra == "all"
173
+ Requires-Dist: coverage; extra == "all"
174
+ Requires-Dist: alembic; extra == "all"
175
+ Requires-Dist: SQLAlchemy~=2.0; extra == "all"
176
+ Requires-Dist: domain2idna~=1.12.0; extra == "all"
177
+ Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "all"
178
+ Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "all"
179
+ Requires-Dist: PyMySQL; extra == "all"
180
+ Requires-Dist: colorama; extra == "all"
181
+ Requires-Dist: mkdocs-gen-files~=0.5; extra == "all"
185
182
  Requires-Dist: shtab; extra == "all"
186
- Requires-Dist: mkdocs-section-index~=0.3; extra == "all"
183
+ Requires-Dist: inflection; extra == "all"
187
184
  Requires-Dist: isort; extra == "all"
185
+ Requires-Dist: mkdocs-section-index~=0.3; extra == "all"
186
+ Requires-Dist: mkdocs-material~=9.5; extra == "all"
187
+ Requires-Dist: pylint; extra == "all"
188
188
 
189
189
  ![image](https://raw.githubusercontent.com/PyFunceble/logo/dev/Green/HD/RM.png)
190
190
 
@@ -103,6 +103,9 @@ def get_configured_value(
103
103
  else:
104
104
  result = PyFunceble.facility.ConfigLoader.get_configured_value(entry)
105
105
 
106
+ if isinstance(result, str) and "%" in result:
107
+ result = result.replace("%", "%%")
108
+
106
109
  if negate:
107
110
  result = not result
108
111
 
@@ -587,6 +590,18 @@ def get_test_control_group_data() -> List[Tuple[List[str], dict]]:
587
590
  "get the latest (automatically) for you.",
588
591
  },
589
592
  ),
593
+ (
594
+ [
595
+ "--user-agent-reference",
596
+ ],
597
+ {
598
+ "dest": "user_agent.reference",
599
+ "type": str,
600
+ "help": "Sets the reference to append to the user agent.\n\n"
601
+ "This is useful when you want to add a reference to the "
602
+ "user agent. %s" % get_configured_value("user_agent.reference"),
603
+ },
604
+ ),
590
605
  (
591
606
  [
592
607
  "-vsc",
@@ -833,15 +848,6 @@ def get_output_control_group_data() -> List[Tuple[List[str], dict]]:
833
848
  "default": "all",
834
849
  },
835
850
  ),
836
- (
837
- ["--display-datetime"],
838
- {
839
- "dest": "cli_testing.display_mode.datetime",
840
- "action": "store_true",
841
- "help": "Activates or disables the display of the datetime of the\n"
842
- "test. %s" % get_configured_value("cli_testing.display_mode.datetime"),
843
- },
844
- ),
845
851
  (
846
852
  ["--display-datetime-fmt"],
847
853
  {
@@ -92,11 +92,12 @@ class ConfigLoader:
92
92
  _path_to_config: Optional[str] = None
93
93
  _remote_config_location: Optional[str] = None
94
94
  path_to_default_config: Optional[str] = None
95
- path_to_overwrite_config: Optional[str] = None
95
+ _path_to_overwrite_config: Optional[str] = None
96
96
 
97
97
  _custom_config: dict = {}
98
98
  _merge_upstream: bool = False
99
99
  _config_dir: Optional[str] = None
100
+ __config_loaded: bool = False
100
101
 
101
102
  file_helper: FileHelper = FileHelper()
102
103
  dict_helper: DictHelper = DictHelper()
@@ -115,18 +116,8 @@ class ConfigLoader:
115
116
  else:
116
117
  self.config_dir = PyFunceble.storage.CONFIG_DIRECTORY
117
118
 
118
- self.path_to_config = os.path.join(
119
- self.config_dir,
120
- PyFunceble.storage.CONFIGURATION_FILENAME,
121
- )
122
-
123
119
  self.path_to_remote_config = None
124
120
 
125
- self.path_to_overwrite_config = os.path.join(
126
- self.config_dir,
127
- ".PyFunceble.overwrite.yaml",
128
- )
129
-
130
121
  if merge_upstream is not None:
131
122
  self.merge_upstream = merge_upstream
132
123
  elif EnvironmentVariableHelper("PYFUNCEBLE_AUTO_CONFIGURATION").exists():
@@ -206,14 +197,82 @@ class ConfigLoader:
206
197
 
207
198
  return config
208
199
 
209
- @staticmethod
210
- def is_already_loaded() -> bool:
200
+ def is_already_loaded(self) -> bool:
211
201
  """
212
202
  Checks if the configuration was already loaded.
213
203
  """
214
204
 
215
205
  return bool(PyFunceble.storage.CONFIGURATION)
216
206
 
207
+ def __is_completely_loaded(self) -> bool:
208
+ """
209
+ Checks if the configuration was completely loaded.
210
+ """
211
+
212
+ return self.is_already_loaded() and bool(self.__config_loaded)
213
+
214
+ @property
215
+ def path_to_config(self) -> Optional[str]:
216
+ """
217
+ Provides the current state of the :code:`_path_to_config` attribute.
218
+ """
219
+
220
+ if self._path_to_config is None:
221
+ self._path_to_config = os.path.join(
222
+ self.config_dir,
223
+ PyFunceble.storage.CONFIGURATION_FILENAME,
224
+ )
225
+
226
+ return self._path_to_config
227
+
228
+ @path_to_config.setter
229
+ def path_to_config(self, value: str) -> None:
230
+ """
231
+ Sets the path to the configuration file.
232
+
233
+ :param value:
234
+ The value to set.
235
+
236
+ :raise TypeError:
237
+ When value is not a :py:class:`str`.
238
+ """
239
+
240
+ if not isinstance(value, str):
241
+ raise TypeError(f"<value> should be {str}, {type(value)} given.")
242
+
243
+ self._path_to_config = value
244
+
245
+ @property
246
+ def path_to_overwrite_config(self) -> Optional[str]:
247
+ """
248
+ Provides the current state of the :code:`_path_to_overwrite_config` attribute.
249
+ """
250
+
251
+ if self._path_to_overwrite_config is None:
252
+ self._path_to_overwrite_config = os.path.join(
253
+ self.config_dir,
254
+ ".PyFunceble.overwrite.yaml",
255
+ )
256
+
257
+ return self._path_to_overwrite_config
258
+
259
+ @path_to_overwrite_config.setter
260
+ def path_to_overwrite_config(self, value: str) -> None:
261
+ """
262
+ Sets the path to the overwrite configuration file.
263
+
264
+ :param value:
265
+ The value to set.
266
+
267
+ :raise TypeError:
268
+ When value is not a :py:class:`str`.
269
+ """
270
+
271
+ if not isinstance(value, str):
272
+ raise TypeError(f"<value> should be {str}, {type(value)} given.")
273
+
274
+ self._path_to_overwrite_config = value
275
+
217
276
  @property
218
277
  def config_dir(self) -> Optional[str]:
219
278
  """
@@ -239,6 +298,9 @@ class ConfigLoader:
239
298
  raise TypeError(f"<value> should be {str}, {type(value)} given.")
240
299
 
241
300
  self._config_dir = value
301
+ # Reset the path to the configuration file.
302
+ self._path_to_config = None
303
+ self._path_to_overwrite_config = None
242
304
 
243
305
  def set_config_dir(self, value: str) -> "ConfigLoader":
244
306
  """
@@ -385,9 +447,8 @@ class ConfigLoader:
385
447
 
386
448
  return self
387
449
 
388
- @classmethod
389
450
  def download_dynamic_infrastructure_files(
390
- cls,
451
+ self,
391
452
  ) -> "ConfigLoader":
392
453
  """
393
454
  Downloads all the dynamicly (generated) infrastructure files.
@@ -400,7 +461,7 @@ class ConfigLoader:
400
461
 
401
462
  ## pragma: no cover ## Underlying download methods already tested.
402
463
 
403
- if not cls.is_already_loaded():
464
+ if not self.is_already_loaded():
404
465
  IANADownloader().start()
405
466
  PublicSuffixDownloader().start()
406
467
  UserAgentsDownloader().start()
@@ -494,7 +555,7 @@ class ConfigLoader:
494
555
  config,
495
556
  )
496
557
 
497
- if not self.is_already_loaded():
558
+ if not self.__is_completely_loaded():
498
559
  self.install_missing_infrastructure_files()
499
560
  self.download_dynamic_infrastructure_files()
500
561
  download_remote_config(
@@ -593,6 +654,8 @@ class ConfigLoader:
593
654
  # Early load user agents to allow usage of defined user agents.
594
655
  UserAgentDataset().get_latest()
595
656
 
657
+ self.__config_loaded = True
658
+
596
659
  return self
597
660
 
598
661
  def destroy(self, keep_custom: bool = False) -> "ConfigLoader":
@@ -620,4 +683,6 @@ class ConfigLoader:
620
683
  # This is not a mistake.
621
684
  self._custom_config = {}
622
685
 
686
+ self.__config_loaded = False
687
+
623
688
  return self
@@ -629,6 +629,17 @@ user_agent:
629
629
  # CLI Argument: -ua | --user-agent
630
630
  custom: null
631
631
 
632
+ # Set the reference to add to the User-Agent.
633
+ # This is useful when you want to add a reference (e.g. a link) to the User-Agent.
634
+ #
635
+ # The reference will be added at the end of the User-Agent in the following format:
636
+ # {user_agent}; +{reference}
637
+ #
638
+ # When set to `null`, no reference will be added.
639
+ #
640
+ # CLI Argument: --user-agent-reference
641
+ reference: null
642
+
632
643
  proxy:
633
644
  # Provides everything related to the proxy usage and configuration.
634
645
  #
@@ -196,6 +196,30 @@ class UserAgentDataset(DatasetBase):
196
196
  and bool(self[browser_short_name.lower()][platform.lower()])
197
197
  )
198
198
 
199
+ def format_user_agent(
200
+ self, user_agent: str, *, reference: Optional[str] = None
201
+ ) -> str:
202
+ """
203
+ Given a user agent and a reference, it returns the formatted user agent
204
+ that we have to use.
205
+
206
+ :param user_agent:
207
+ The user agent to format.
208
+ :param reference:
209
+ The reference to append to the user agent.
210
+
211
+ :return:
212
+ The formatted user agent.
213
+ """
214
+
215
+ user_agent = user_agent.strip()
216
+
217
+ if reference:
218
+ if user_agent.endswith(";"):
219
+ return f"{user_agent} +{reference}"
220
+ return f"{user_agent}; +{reference}"
221
+ return user_agent
222
+
199
223
  def get_latest(self) -> str:
200
224
  """
201
225
  Provides the latest user agent for the given platform.
@@ -205,12 +229,19 @@ class UserAgentDataset(DatasetBase):
205
229
  (if exists).
206
230
  """
207
231
 
232
+ reference = None
233
+
208
234
  if PyFunceble.storage.CONFIGURATION:
235
+ reference = PyFunceble.storage.CONFIGURATION.user_agent.reference
236
+
209
237
  if (
210
238
  PyFunceble.storage.CONFIGURATION.user_agent
211
239
  and PyFunceble.storage.CONFIGURATION.user_agent.custom
212
240
  ):
213
- return PyFunceble.storage.CONFIGURATION.user_agent.custom
241
+ return self.format_user_agent(
242
+ PyFunceble.storage.CONFIGURATION.user_agent.custom,
243
+ reference=reference,
244
+ )
214
245
 
215
246
  self.set_preferred(
216
247
  PyFunceble.storage.CONFIGURATION.user_agent.browser,
@@ -220,6 +251,9 @@ class UserAgentDataset(DatasetBase):
220
251
  result = self[self.preferred_browser][self.preferred_platform]
221
252
 
222
253
  if isinstance(result, (list, tuple)):
223
- return secrets.choice(result)
254
+ return self.format_user_agent(
255
+ secrets.choice(result),
256
+ reference=reference,
257
+ )
224
258
 
225
- return result
259
+ return self.format_user_agent(result, reference=reference)
@@ -60,7 +60,7 @@ from dotenv import load_dotenv
60
60
  from PyFunceble.storage_facility import get_config_directory
61
61
 
62
62
  PROJECT_NAME: str = "PyFunceble"
63
- PROJECT_VERSION: str = "4.3.0a11.dev (Blue Duckling: Tulip)"
63
+ PROJECT_VERSION: str = "4.3.0a13.dev (Blue Duckling: Tulip)"
64
64
 
65
65
  DISTRIBUTED_CONFIGURATION_FILENAME: str = ".PyFunceble_production.yaml"
66
66