PyFunceble-dev 4.0.0b34__tar.gz → 4.0.0b35__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 (271) hide show
  1. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PKG-INFO +1 -1
  2. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/base.py +3 -1
  3. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/base.py +16 -0
  4. PyFunceble-dev-4.0.0b35/PyFunceble/converter/adblock_input_line2subject.py +434 -0
  5. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/download.py +3 -1
  6. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/environment_variable.py +12 -2
  7. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/storage.py +1 -1
  8. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble_dev.egg-info/PKG-INFO +1 -1
  9. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/version.yaml +1 -1
  10. PyFunceble-dev-4.0.0b34/PyFunceble/converter/adblock_input_line2subject.py +0 -354
  11. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/.PyFunceble_production.yaml +0 -0
  12. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/CODE_OF_CONDUCT.rst +0 -0
  13. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/CONTRIBUTING.rst +0 -0
  14. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/LICENSE +0 -0
  15. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/MANIFEST.in +0 -0
  16. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/.vscode/settings.json +0 -0
  17. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/__init__.py +0 -0
  18. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/__init__.py +0 -0
  19. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/__init__.py +0 -0
  20. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/base.py +0 -0
  21. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/domain.py +0 -0
  22. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/domain_and_ip.py +0 -0
  23. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/extra_rules.py +0 -0
  24. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/ip.py +0 -0
  25. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/params.py +0 -0
  26. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/status.py +0 -0
  27. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/availability/url.py +0 -0
  28. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/base.py +0 -0
  29. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/complex_json_encoder.py +0 -0
  30. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/params_base.py +0 -0
  31. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/__init__.py +0 -0
  32. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/base.py +0 -0
  33. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/domain.py +0 -0
  34. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/domain_and_ip.py +0 -0
  35. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/ip.py +0 -0
  36. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/params.py +0 -0
  37. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/status.py +0 -0
  38. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/reputation/url.py +0 -0
  39. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/status_base.py +0 -0
  40. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/__init__.py +0 -0
  41. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/domain.py +0 -0
  42. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/domain_base.py +0 -0
  43. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/ip.py +0 -0
  44. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/ipv4.py +0 -0
  45. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/ipv6.py +0 -0
  46. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/params.py +0 -0
  47. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/second_lvl_domain.py +0 -0
  48. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/status.py +0 -0
  49. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/subdomain.py +0 -0
  50. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/syntax/url.py +0 -0
  51. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/utils/__init__.py +0 -0
  52. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/checker/utils/whois.py +0 -0
  53. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/__init__.py +0 -0
  54. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/__init__.py +0 -0
  55. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/base.py +0 -0
  56. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/exceptions.py +0 -0
  57. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/github_actions.py +0 -0
  58. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/gitlab_ci.py +0 -0
  59. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/jenkins.py +0 -0
  60. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/travis_ci.py +0 -0
  61. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/continuous_integration/utils.py +0 -0
  62. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/credential_loader.py +0 -0
  63. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/__init__.py +0 -0
  64. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/clean.py +0 -0
  65. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/iana.py +0 -0
  66. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/production.py +0 -0
  67. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/public_suffix.py +0 -0
  68. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/pyfunceble/__init__.py +0 -0
  69. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/pyfunceble/argsparser.py +0 -0
  70. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/entry_points/pyfunceble/cli.py +0 -0
  71. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/execution_time.py +0 -0
  72. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/facility.py +0 -0
  73. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/factory.py +0 -0
  74. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/file_preloader.py +0 -0
  75. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/__init__.py +0 -0
  76. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/cleanup.py +0 -0
  77. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/counter.py +0 -0
  78. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/dir_base.py +0 -0
  79. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/dir_structure/__init__.py +0 -0
  80. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/dir_structure/backup.py +0 -0
  81. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/dir_structure/base.py +0 -0
  82. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/dir_structure/restore.py +0 -0
  83. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/printer/__init__.py +0 -0
  84. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/printer/base.py +0 -0
  85. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/printer/file.py +0 -0
  86. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/printer/stdout.py +0 -0
  87. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/filesystem/status_file.py +0 -0
  88. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/__init__.py +0 -0
  89. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/alembic.py +0 -0
  90. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/base.py +0 -0
  91. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/csv_file/__init__.py +0 -0
  92. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/csv_file/base.py +0 -0
  93. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/csv_file/inactive_source_delete.py +0 -0
  94. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/db_base.py +0 -0
  95. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/file_cleanup/__init__.py +0 -0
  96. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/file_cleanup/base.py +0 -0
  97. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/file_cleanup/hashes_file.py +0 -0
  98. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/file_cleanup/mining_file.py +0 -0
  99. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/file_cleanup/production_config_file.py +0 -0
  100. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/json2csv/__init__.py +0 -0
  101. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/json2csv/base.py +0 -0
  102. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/json2csv/inactive.py +0 -0
  103. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/json2csv/whois.py +0 -0
  104. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/mariadb/__init__.py +0 -0
  105. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/mariadb/base.py +0 -0
  106. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/mariadb/file_and_status.py +0 -0
  107. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/migrators/mariadb/whois_record_idna_subject.py +0 -0
  108. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/__init__.py +0 -0
  109. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/file_sorter.py +0 -0
  110. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/migrator.py +0 -0
  111. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/miner.py +0 -0
  112. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/producer.py +0 -0
  113. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/tester.py +0 -0
  114. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/__init__.py +0 -0
  115. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/base.py +0 -0
  116. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/file_sorter.py +0 -0
  117. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/migrator.py +0 -0
  118. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/miner.py +0 -0
  119. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/producer.py +0 -0
  120. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/processes/workers/tester.py +0 -0
  121. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/scripts/__init__.py +0 -0
  122. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/scripts/iana.py +0 -0
  123. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/scripts/production.py +0 -0
  124. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/scripts/public_suffix.py +0 -0
  125. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/storage.py +0 -0
  126. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/storage_facility.py +0 -0
  127. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/system/__init__.py +0 -0
  128. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/system/base.py +0 -0
  129. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/system/integrator.py +0 -0
  130. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/system/launcher.py +0 -0
  131. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/utils/__init__.py +0 -0
  132. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/utils/ascii_logo.py +0 -0
  133. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/utils/sort.py +0 -0
  134. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/utils/stdout.py +0 -0
  135. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/utils/testing.py +0 -0
  136. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/cli/utils/version.py +0 -0
  137. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/config/__init__.py +0 -0
  138. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/config/compare.py +0 -0
  139. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/config/loader.py +0 -0
  140. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/__init__.py +0 -0
  141. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/base.py +0 -0
  142. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/input_line2subject.py +0 -0
  143. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/internal_url.py +0 -0
  144. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/rpz_input_line2subject.py +0 -0
  145. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/rpz_policy2subject.py +0 -0
  146. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/subject2complements.py +0 -0
  147. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/url2netloc.py +0 -0
  148. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/converter/wildcard2subject.py +0 -0
  149. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/__init__.py +0 -0
  150. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/__init__.py +0 -0
  151. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/env.py +0 -0
  152. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/script.py.mako +0 -0
  153. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/35c79626ecb9_fix_some_columns.py +0 -0
  154. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/3a4c55a9320d_add_continue_table.py +0 -0
  155. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/3d6f4a33cdb2_add_inactive_table.py +0 -0
  156. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py +0 -0
  157. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py +0 -0
  158. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/6f4729deaf03_delete_inactive_source_column.py +0 -0
  159. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/7bcf7fa64ba1_rename_created_to_created_at_and.py +0 -0
  160. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/83ada95132bf_delete_the_file_table.py +0 -0
  161. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/95dc17ddd729_introduction_of_the_session_id_column.py +0 -0
  162. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/__init__.py +0 -0
  163. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/ade87195b0a0_base.py +0 -0
  164. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/bef7bcaac3f2_make_id_a_bigint.py +0 -0
  165. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py +0 -0
  166. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/alembic/versions/e04e8301d1a2_deletion_of_the_mined_table.py +0 -0
  167. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/infrastructure/.PyFunceble_production.yaml +0 -0
  168. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/infrastructure/__init__.py +0 -0
  169. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/data/infrastructure/dir_structure_production.json +0 -0
  170. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/__init__.py +0 -0
  171. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/credential/__init__.py +0 -0
  172. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/credential/base.py +0 -0
  173. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/credential/mariadb.py +0 -0
  174. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/credential/mysql.py +0 -0
  175. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/schemas/__init__.py +0 -0
  176. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/schemas/autocontinue.py +0 -0
  177. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/schemas/inactive.py +0 -0
  178. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/schemas/status.py +0 -0
  179. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/schemas/whois_record.py +0 -0
  180. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/session.py +0 -0
  181. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/sqlalchemy/__init__.py +0 -0
  182. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/sqlalchemy/all_schemas.py +0 -0
  183. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/database/sqlalchemy/base_schema.py +0 -0
  184. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/__init__.py +0 -0
  185. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/autocontinue/__init__.py +0 -0
  186. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/autocontinue/base.py +0 -0
  187. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/autocontinue/csv.py +0 -0
  188. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/autocontinue/mariadb.py +0 -0
  189. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/autocontinue/mysql.py +0 -0
  190. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/base.py +0 -0
  191. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/csv_base.py +0 -0
  192. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/db_base.py +0 -0
  193. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/iana.py +0 -0
  194. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/inactive/__init__.py +0 -0
  195. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/inactive/base.py +0 -0
  196. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/inactive/csv.py +0 -0
  197. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/inactive/mariadb.py +0 -0
  198. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/inactive/mysql.py +0 -0
  199. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/ipv4_reputation.py +0 -0
  200. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/mariadb_base.py +0 -0
  201. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/public_suffix.py +0 -0
  202. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/user_agent.py +0 -0
  203. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/whois/__init__.py +0 -0
  204. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/whois/base.py +0 -0
  205. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/whois/csv.py +0 -0
  206. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/whois/mariadb.py +0 -0
  207. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/dataset/whois/mysql.py +0 -0
  208. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/__init__.py +0 -0
  209. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/base.py +0 -0
  210. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/exceptions.py +0 -0
  211. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/iana.py +0 -0
  212. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/ipv4_reputation.py +0 -0
  213. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/public_suffix.py +0 -0
  214. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/downloader/user_agents.py +0 -0
  215. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/exceptions.py +0 -0
  216. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/facility.py +0 -0
  217. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/factory.py +0 -0
  218. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/__init__.py +0 -0
  219. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/command.py +0 -0
  220. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/dict.py +0 -0
  221. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/directory.py +0 -0
  222. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/exceptions.py +0 -0
  223. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/file.py +0 -0
  224. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/hash.py +0 -0
  225. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/list.py +0 -0
  226. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/merge.py +0 -0
  227. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/helpers/regex.py +0 -0
  228. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/logger.py +0 -0
  229. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/__init__.py +0 -0
  230. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/dns/__init__.py +0 -0
  231. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/dns/nameserver.py +0 -0
  232. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/dns/query_tool.py +0 -0
  233. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/dns/resolver.py +0 -0
  234. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/http_status_code.py +0 -0
  235. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/netinfo/__init__.py +0 -0
  236. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/netinfo/address.py +0 -0
  237. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/netinfo/base.py +0 -0
  238. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/netinfo/hostbyaddr.py +0 -0
  239. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/record/__init__.py +0 -0
  240. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/record/base.py +0 -0
  241. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/record/dns.py +0 -0
  242. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/record/whois.py +0 -0
  243. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/requests/__init__.py +0 -0
  244. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/requests/adapter/__init__.py +0 -0
  245. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/requests/adapter/base.py +0 -0
  246. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/requests/adapter/http.py +0 -0
  247. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/requests/adapter/https.py +0 -0
  248. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/requests/requester.py +0 -0
  249. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/__init__.py +0 -0
  250. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/converter/__init__.py +0 -0
  251. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/converter/base.py +0 -0
  252. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/converter/digit2digits.py +0 -0
  253. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/converter/expiration_date.py +0 -0
  254. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/converter/month2unified.py +0 -0
  255. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/query/whois/query_tool.py +0 -0
  256. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/sessions.py +0 -0
  257. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/storage_facility.py +0 -0
  258. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/utils/__init__.py +0 -0
  259. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/utils/platform.py +0 -0
  260. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/utils/profile.py +0 -0
  261. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble/utils/version.py +0 -0
  262. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble_dev.egg-info/SOURCES.txt +0 -0
  263. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble_dev.egg-info/dependency_links.txt +0 -0
  264. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble_dev.egg-info/entry_points.txt +0 -0
  265. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble_dev.egg-info/requires.txt +0 -0
  266. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/PyFunceble_dev.egg-info/top_level.txt +0 -0
  267. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/README.rst +0 -0
  268. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/dir_structure_production.json +0 -0
  269. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/requirements.txt +0 -0
  270. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/setup.cfg +0 -0
  271. {PyFunceble-dev-4.0.0b34 → PyFunceble-dev-4.0.0b35}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: PyFunceble-dev
3
- Version: 4.0.0b34
3
+ Version: 4.0.0b35
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
@@ -122,5 +122,7 @@ class SyntaxCheckerBase(CheckerBase):
122
122
  raise NotImplementedError()
123
123
 
124
124
  # pylint: disable=useless-super-delegation
125
- def get_status(self) -> Optional[SyntaxCheckerStatus]:
125
+ def get_status(
126
+ self,
127
+ ) -> Optional[SyntaxCheckerStatus]: # pragma: no cover ## Safety.
126
128
  return super().get_status()
@@ -183,6 +183,21 @@ class ProcessesManagerBase:
183
183
 
184
184
  return wrapper
185
185
 
186
+ def ignore_if_running(func): # pylint: disable=no-self-argument
187
+ """
188
+ Ignore the launching of the decorated method if the workers are
189
+ running.
190
+ """
191
+
192
+ @functools.wraps(func)
193
+ def wrapper(self, *args, **kwargs):
194
+ if not self.is_running():
195
+ return func(self, *args, **kwargs) # pylint: disable=not-callable
196
+
197
+ return self
198
+
199
+ return wrapper
200
+
186
201
  @property
187
202
  def max_worker(self) -> Optional[int]:
188
203
  """
@@ -434,6 +449,7 @@ class ProcessesManagerBase:
434
449
 
435
450
  @ensure_worker_obj_is_given
436
451
  @create_workers_if_missing
452
+ # @ignore_if_running
437
453
  def start(self) -> "ProcessesManagerBase":
438
454
  """
439
455
  Starts a defined number of worker.
@@ -0,0 +1,434 @@
1
+ # pylint:disable=line-too-long
2
+ """
3
+ The tool to check the availability or syntax of domain, IP or URL.
4
+
5
+ ::
6
+
7
+
8
+ ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗
9
+ ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝
10
+ ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗
11
+ ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝
12
+ ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗
13
+ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝
14
+
15
+ Provides the conversion of an AdBlock input line into testable subjests.
16
+
17
+ Author:
18
+ Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom
19
+
20
+ Special thanks:
21
+ https://pyfunceble.github.io/#/special-thanks
22
+
23
+ Contributors:
24
+ https://pyfunceble.github.io/#/contributors
25
+
26
+ Project link:
27
+ https://github.com/funilrys/PyFunceble
28
+
29
+ Project documentation:
30
+ https://pyfunceble.readthedocs.io/en/dev/
31
+
32
+ Project homepage:
33
+ https://pyfunceble.github.io/
34
+
35
+ License:
36
+ ::
37
+
38
+
39
+ Copyright 2017, 2018, 2019, 2020, 2021 Nissar Chababy
40
+
41
+ Licensed under the Apache License, Version 2.0 (the "License");
42
+ you may not use this file except in compliance with the License.
43
+ You may obtain a copy of the License at
44
+
45
+ http://www.apache.org/licenses/LICENSE-2.0
46
+
47
+ Unless required by applicable law or agreed to in writing, software
48
+ distributed under the License is distributed on an "AS IS" BASIS,
49
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
50
+ See the License for the specific language governing permissions and
51
+ limitations under the License.
52
+ """
53
+
54
+ from typing import Any, List, Optional, Set, Union
55
+
56
+ from PyFunceble.converter.base import ConverterBase
57
+ from PyFunceble.converter.url2netloc import Url2Netloc
58
+ from PyFunceble.helpers.list import ListHelper
59
+ from PyFunceble.helpers.regex import RegexHelper
60
+
61
+
62
+ class AdblockInputLine2Subject(ConverterBase):
63
+ """
64
+ Provides an interface for the conversion or extraction of valuable subjects
65
+ from an inputted AdBlock line.
66
+ """
67
+
68
+ _aggressive: bool = False
69
+
70
+ __regex_helper: Optional[RegexHelper] = None
71
+
72
+ def __init__(
73
+ self, data_to_convert: Optional[Any] = None, aggressive: bool = False
74
+ ) -> None:
75
+ if aggressive is not None:
76
+ self.aggressive = aggressive
77
+
78
+ self.__regex_helper = RegexHelper()
79
+
80
+ super().__init__(data_to_convert=data_to_convert)
81
+
82
+ @ConverterBase.data_to_convert.setter
83
+ def data_to_convert(self, value: Any) -> None:
84
+ """
85
+ Overrites the default behavior.
86
+
87
+ :raise TypeError:
88
+ When the given data to convert is not :py:class:`str`
89
+ """
90
+
91
+ if not isinstance(value, str):
92
+ raise TypeError(f"<value> should be {str}, {type(value)} given.")
93
+
94
+ # pylint: disable=no-member
95
+ super(AdblockInputLine2Subject, self.__class__).data_to_convert.fset(
96
+ self, value
97
+ )
98
+
99
+ @property
100
+ def aggressive(self) -> bool:
101
+ """
102
+ Provides the state of the :code:`_aggressive` attribute.
103
+ """
104
+
105
+ return self._aggressive
106
+
107
+ @aggressive.setter
108
+ def aggressive(self, value: bool) -> None:
109
+ """
110
+ Provides a way to activate/deactivate the aggressive decoding.
111
+
112
+ :raise TypeError:
113
+ When the given data to convert is not :py:class:`str`
114
+ """
115
+
116
+ if not isinstance(value, bool):
117
+ raise TypeError(f"<value> should be {bool}, {type(value)} given.")
118
+
119
+ self._aggressive = value
120
+
121
+ def set_aggressive(self, value: bool) -> "AdblockInputLine2Subject":
122
+ """
123
+ Provides a way to activate/deactivate the aggressive decoding.
124
+ """
125
+
126
+ self.aggressive = value
127
+
128
+ return self
129
+
130
+ @staticmethod
131
+ def should_be_ignored(line: str) -> bool:
132
+ """
133
+ Checks if we should ignore the given line.
134
+ """
135
+
136
+ starting_chars = ["!", "@@", "/", "[", ".", "-", "_", "?", "&"]
137
+
138
+ return any(line.startswith(x) for x in starting_chars)
139
+
140
+ @staticmethod
141
+ def extract_base(subject: Union[str, List[str]]) -> Union[str, List[str]]:
142
+ """
143
+ Extracts the base of the given subject (supposely URL).
144
+
145
+ :param subject:
146
+ The subject to work with.
147
+
148
+ Example:
149
+
150
+ Giving :code:`"hello.world/?is=beautiful"` returns :code:`"hello.world"`
151
+ """
152
+
153
+ if isinstance(subject, list):
154
+ return [AdblockInputLine2Subject.extract_base(x) for x in subject]
155
+
156
+ subject = subject.replace("*", "").replace("~", "")
157
+
158
+ try:
159
+ return Url2Netloc(subject).get_converted()
160
+ except ValueError:
161
+ return subject
162
+
163
+ def _decode_multiple_subject(self, decoded: str) -> Set[str]:
164
+ """
165
+ Implementation of the decoding of the case that multiple
166
+ subjects are possible in the given :py:class:`str`.
167
+
168
+ :param decoded:
169
+ The decoded part to split.
170
+ """
171
+
172
+ result = set()
173
+
174
+ rematch = self.__regex_helper.set_regex(r"((?:[^~\*,]+))").match(
175
+ decoded, rematch=True, return_match=True
176
+ )
177
+
178
+ if rematch:
179
+ result.update({self.extract_base(x) for x in rematch})
180
+
181
+ return result
182
+
183
+ def _decode_options(self, decoded_options: List[str]) -> Set[str]:
184
+ """
185
+ Handle the decoding of the options.
186
+
187
+ What it does:
188
+
189
+ - It extracts all :code:`domain=` component - when found.
190
+ - It extracts all :code:`href` URL base - when found.
191
+
192
+
193
+ :param decoded_options:
194
+ The splitted list of options.
195
+ """
196
+
197
+ result = set()
198
+
199
+ for rule in decoded_options:
200
+ if "domain=" in rule:
201
+ rule = rule.replace("domain=", "").replace("|", ",")
202
+
203
+ result.update(self._decode_multiple_subject(rule))
204
+ continue
205
+
206
+ if "href" in rule:
207
+ matched = self.__regex_helper.set_regex(
208
+ r"((?:\"|\')(.*)(?:\"|\'))"
209
+ ).match(rule, return_match=True, rematch=True, group=1)
210
+
211
+ result.add(self.extract_base(matched))
212
+ continue
213
+
214
+ return result
215
+
216
+ def _decode_v1(self, line: str) -> Set[str]:
217
+ """
218
+ Implementation of our first decoding mode.
219
+
220
+ In this mode we try to decode the simple:
221
+
222
+ ||ads.example.com^
223
+
224
+ rule.
225
+
226
+ :param line:
227
+ The line to decode.
228
+ """
229
+
230
+ result = set()
231
+
232
+ local_line = line.strip()
233
+
234
+ if local_line.startswith("||") and (
235
+ local_line.endswith("^") or local_line.endswith("$")
236
+ ):
237
+ local_line = local_line.replace("||", "", 1)
238
+
239
+ if local_line.endswith("^"):
240
+ local_line = "".join(local_line.rsplit("^", 1))
241
+ elif local_line.endswith("$"):
242
+ local_line = "".join(local_line.rsplit("$", 1))
243
+
244
+ result.update(self._decode_multiple_subject(local_line))
245
+
246
+ return {x for x in result if "." in x}
247
+
248
+ def _decode_v2(self, line: str) -> Set[str]:
249
+ """
250
+ Implementation of our second decoding mode.
251
+
252
+ In this mode, we try to decode the simple:
253
+
254
+ |https://ads.example.com|
255
+
256
+ rule.
257
+
258
+ :param line:
259
+ The line to decode.
260
+ """
261
+
262
+ result = set()
263
+
264
+ local_line = line.strip()
265
+
266
+ if local_line.startswith("|") and local_line.endswith("|"):
267
+ local_line = local_line.replace("|", "", 1)
268
+ local_line = "".join(local_line.rsplit("|", 1))
269
+
270
+ result.add(self.extract_base(local_line))
271
+
272
+ return {x for x in result if "." in x}
273
+
274
+ def _decode_v3(self, line: str) -> Set[str]:
275
+ """
276
+ Implementation of our third decoding mode.
277
+
278
+ In this mode, we try to decode the simple:
279
+
280
+ ||ads.example.com^$script,image,domain=example.com|~foo.example.info
281
+ ||ads.example.com$script,image,domain=example.com|~foo.example.info
282
+
283
+ rule.
284
+
285
+ :param line:
286
+ The line to decode.
287
+ """
288
+
289
+ result = set()
290
+
291
+ local_line = line.strip()
292
+
293
+ if not local_line.startswith("||"):
294
+ return result
295
+
296
+ if "$" in local_line:
297
+ v1_mode, options = local_line.split("$", 1)
298
+
299
+ if not v1_mode.endswith("^"):
300
+ v1_mode += "^"
301
+
302
+ result.update(self._decode_v1(v1_mode))
303
+
304
+ if self.aggressive:
305
+ result.update(self._decode_options(options.split(",")))
306
+ elif "^" not in local_line:
307
+ result.update(self._decode_v1(f"{local_line}^"))
308
+ else:
309
+ result.update(self._decode_v1(local_line[: local_line.find("^") + 1]))
310
+
311
+ return {x for x in result if "." in x}
312
+
313
+ def _decode_v4(self, line: str) -> Set[str]:
314
+ """
315
+ Implementation of our fourth decoding mode.
316
+
317
+ In this mode, we try to decode the simple:
318
+
319
+ @@||ads.example.com/notbanner^$~script
320
+
321
+ rule.
322
+
323
+ :param line:
324
+ The line to decode.
325
+ """
326
+
327
+ result = set()
328
+ local_line = line.strip()
329
+
330
+ if (
331
+ not self.aggressive
332
+ or not local_line.startswith("@@||")
333
+ or "^$" not in local_line
334
+ ):
335
+ return result
336
+
337
+ print(not local_line.startswith("@@||"), "^$" not in local_line)
338
+
339
+ v1_mode, options = local_line.split("$", 1)
340
+
341
+ result.update(
342
+ {self.extract_base(x) for x in self._decode_v1(v1_mode.replace("@@", ""))}
343
+ )
344
+
345
+ result.update(self._decode_options(options.split(",")))
346
+
347
+ return {x for x in result if "." in x}
348
+
349
+ def _decode_v5(self, line: str) -> Set[str]:
350
+ """
351
+ Implementation of our fifth decoding mode.
352
+
353
+ In this mode, we try to decode the simple:
354
+
355
+ example.com,example.net##.advert
356
+ exception.example.com#@#.advert
357
+ example.com,example.net#?#div:-abp-has(> div > img.advert)
358
+ exception.example.com#@#div:-abp-has(> div > img.advert)
359
+
360
+ rule.
361
+
362
+ :param line:
363
+ The line to decode.
364
+ """
365
+
366
+ local_line = line.strip()
367
+ result = set()
368
+
369
+ if not self.aggressive:
370
+ return result
371
+
372
+ separators = ["##", "#@#", "#?#"]
373
+
374
+ obj_of_interest, options = "", ""
375
+
376
+ for separator in separators:
377
+ if separator in local_line:
378
+ obj_of_interest, options = local_line.split(separator, 1)
379
+ break
380
+
381
+ result.update(self._decode_multiple_subject(obj_of_interest))
382
+ result.update(self._decode_options(options.split(",")))
383
+
384
+ return {x for x in result if "." in x}
385
+
386
+ def _decode_v6(self, line: str) -> Set[str]:
387
+ """
388
+ Implementation of our sixth decoding mode.
389
+
390
+ In this mode we try to decode the simple:
391
+
392
+ $domain=exam.pl|elpmaxe.pl|example.pl
393
+
394
+ rule.
395
+
396
+ :param line:
397
+ The line to decode.
398
+ """
399
+
400
+ local_line = line.strip()
401
+ result = set()
402
+
403
+ if not self.aggressive:
404
+ return result
405
+
406
+ separators = ["$"]
407
+
408
+ for separator in separators:
409
+ if not local_line.startswith(separator):
410
+ continue
411
+
412
+ options = local_line[len(separator) :]
413
+
414
+ result.update(self._decode_options(options.split(",")))
415
+
416
+ return {x for x in result if "." in x}
417
+
418
+ def get_converted(self) -> List[str]:
419
+ """
420
+ Provides the converted data.
421
+ """
422
+
423
+ result = set()
424
+
425
+ if not self.should_be_ignored(self.data_to_convert.strip()):
426
+ result.update(self._decode_v1(self.data_to_convert))
427
+ result.update(self._decode_v2(self.data_to_convert))
428
+ result.update(self._decode_v3(self.data_to_convert))
429
+ result.update(self._decode_v5(self.data_to_convert))
430
+ result.update(self._decode_v6(self.data_to_convert))
431
+
432
+ result.update(self._decode_v4(self.data_to_convert))
433
+
434
+ return ListHelper(list(result)).sort().subject
@@ -221,7 +221,7 @@ class DownloadHelper:
221
221
 
222
222
  :param destination: The download destination.
223
223
 
224
- :raise UnableToDownload: When could not unable to donwload the URL.
224
+ :raise UnableToDownload: When could not unable to download the URL.
225
225
  """
226
226
 
227
227
  session = requests.Session()
@@ -240,8 +240,10 @@ class DownloadHelper:
240
240
  if destination and isinstance(destination, str):
241
241
  FileHelper(destination).write(req.text, overwrite=True)
242
242
 
243
+ req.close()
243
244
  return response
244
245
 
246
+ session.close()
245
247
  raise PyFunceble.helpers.exceptions.UnableToDownload(
246
248
  f"{req.url} (retries: {self.retries} | status code: {req.status_code})"
247
249
  )
@@ -144,13 +144,13 @@ class EnvironmentVariableHelper:
144
144
  The name to set.
145
145
  """
146
146
 
147
- self.name = value
147
+ self.env_file_path = value
148
148
 
149
149
  return self
150
150
 
151
151
  def exists(self) -> bool:
152
152
  """
153
- Checks if the given environement variable name exists.
153
+ Checks if the given environment variable name exists.
154
154
  """
155
155
 
156
156
  return self.name in os.environ
@@ -204,6 +204,10 @@ class EnvironmentVariableHelper:
204
204
  """
205
205
  Sets the given value and save it into the given dotenv file.
206
206
 
207
+ .. warning::
208
+ This method also set the environment variable from the current
209
+ environment.
210
+
207
211
  :param value:
208
212
  The value to set.
209
213
  """
@@ -227,8 +231,14 @@ class EnvironmentVariableHelper:
227
231
  def delete_from_env_file(self) -> "EnvironmentVariableHelper":
228
232
  """
229
233
  Deletes the given environment file from the given dotenv file.
234
+
235
+ .. warning::
236
+ This method also delete the environment variable from the current
237
+ environment.
230
238
  """
231
239
 
240
+ self.delete()
241
+
232
242
  dotenv.unset_key(self.env_file_path, self.name)
233
243
 
234
244
  return self
@@ -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.0.0b34.dev (Blue Duckling)"
64
+ PROJECT_VERSION: str = "4.0.0b35.dev (Blue Duckling)"
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: 1.2
2
2
  Name: PyFunceble-dev
3
- Version: 4.0.0b34
3
+ Version: 4.0.0b35
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.0.0b34.dev (Blue Duckling)
1
+ current_version: 4.0.0b35.dev (Blue Duckling)
2
2
  deprecated:
3
3
  - 3.0.21
4
4
  - 3.1.20