PyFunceble-dev 4.3.0a15__py3-none-any.whl → 4.3.0a16__py3-none-any.whl

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 (264) hide show
  1. PyFunceble/__init__.py +1 -1
  2. PyFunceble/checker/__init__.py +1 -1
  3. PyFunceble/checker/availability/__init__.py +1 -1
  4. PyFunceble/checker/availability/base.py +36 -33
  5. PyFunceble/checker/availability/domain.py +1 -1
  6. PyFunceble/checker/availability/domain_and_ip.py +1 -1
  7. PyFunceble/checker/availability/extras/__init__.py +1 -1
  8. PyFunceble/checker/availability/extras/base.py +4 -4
  9. PyFunceble/checker/availability/extras/dns.py +1 -1
  10. PyFunceble/checker/availability/extras/etoxic.py +1 -1
  11. PyFunceble/checker/availability/extras/external.py +1 -1
  12. PyFunceble/checker/availability/extras/parked.py +1 -1
  13. PyFunceble/checker/availability/extras/rules.py +1 -1
  14. PyFunceble/checker/availability/extras/subject_switch.py +1 -1
  15. PyFunceble/checker/availability/ip.py +1 -1
  16. PyFunceble/checker/availability/params.py +1 -1
  17. PyFunceble/checker/availability/status.py +1 -1
  18. PyFunceble/checker/availability/url.py +1 -1
  19. PyFunceble/checker/base.py +1 -1
  20. PyFunceble/checker/complex_json_encoder.py +1 -1
  21. PyFunceble/checker/params_base.py +1 -1
  22. PyFunceble/checker/reputation/__init__.py +1 -1
  23. PyFunceble/checker/reputation/base.py +1 -1
  24. PyFunceble/checker/reputation/domain.py +1 -1
  25. PyFunceble/checker/reputation/domain_and_ip.py +1 -1
  26. PyFunceble/checker/reputation/ip.py +1 -1
  27. PyFunceble/checker/reputation/params.py +1 -1
  28. PyFunceble/checker/reputation/status.py +1 -1
  29. PyFunceble/checker/reputation/url.py +1 -1
  30. PyFunceble/checker/status_base.py +1 -1
  31. PyFunceble/checker/syntax/__init__.py +1 -1
  32. PyFunceble/checker/syntax/base.py +1 -1
  33. PyFunceble/checker/syntax/domain.py +1 -1
  34. PyFunceble/checker/syntax/domain_and_ip.py +1 -1
  35. PyFunceble/checker/syntax/domain_base.py +1 -1
  36. PyFunceble/checker/syntax/ip.py +1 -1
  37. PyFunceble/checker/syntax/ipv4.py +1 -1
  38. PyFunceble/checker/syntax/ipv6.py +1 -1
  39. PyFunceble/checker/syntax/params.py +1 -1
  40. PyFunceble/checker/syntax/second_lvl_domain.py +1 -1
  41. PyFunceble/checker/syntax/status.py +1 -1
  42. PyFunceble/checker/syntax/subdomain.py +1 -1
  43. PyFunceble/checker/syntax/url.py +1 -1
  44. PyFunceble/checker/utils/__init__.py +1 -1
  45. PyFunceble/checker/utils/whois.py +1 -1
  46. PyFunceble/cli/__init__.py +1 -1
  47. PyFunceble/cli/continuous_integration/__init__.py +1 -1
  48. PyFunceble/cli/continuous_integration/base.py +1 -1
  49. PyFunceble/cli/continuous_integration/exceptions.py +1 -1
  50. PyFunceble/cli/continuous_integration/github_actions.py +1 -1
  51. PyFunceble/cli/continuous_integration/gitlab_ci.py +1 -1
  52. PyFunceble/cli/continuous_integration/jenkins.py +1 -1
  53. PyFunceble/cli/continuous_integration/standalone.py +1 -1
  54. PyFunceble/cli/continuous_integration/travis_ci.py +1 -1
  55. PyFunceble/cli/continuous_integration/utils.py +1 -1
  56. PyFunceble/cli/credential_loader.py +1 -1
  57. PyFunceble/cli/entry_points/__init__.py +1 -1
  58. PyFunceble/cli/entry_points/clean.py +1 -1
  59. PyFunceble/cli/entry_points/iana.py +1 -1
  60. PyFunceble/cli/entry_points/production.py +1 -1
  61. PyFunceble/cli/entry_points/public_suffix.py +1 -1
  62. PyFunceble/cli/entry_points/pyfunceble/__init__.py +1 -1
  63. PyFunceble/cli/entry_points/pyfunceble/argsparser.py +1 -1
  64. PyFunceble/cli/entry_points/pyfunceble/cli.py +2 -2
  65. PyFunceble/cli/execution_time.py +1 -1
  66. PyFunceble/cli/facility.py +1 -1
  67. PyFunceble/cli/factory.py +1 -1
  68. PyFunceble/cli/file_preloader.py +1 -1
  69. PyFunceble/cli/filesystem/__init__.py +1 -1
  70. PyFunceble/cli/filesystem/cleanup.py +1 -1
  71. PyFunceble/cli/filesystem/counter.py +1 -1
  72. PyFunceble/cli/filesystem/dir_base.py +1 -1
  73. PyFunceble/cli/filesystem/dir_structure/__init__.py +1 -1
  74. PyFunceble/cli/filesystem/dir_structure/backup.py +1 -1
  75. PyFunceble/cli/filesystem/dir_structure/base.py +1 -1
  76. PyFunceble/cli/filesystem/dir_structure/restore.py +1 -1
  77. PyFunceble/cli/filesystem/json_base.py +1 -1
  78. PyFunceble/cli/filesystem/printer/__init__.py +1 -1
  79. PyFunceble/cli/filesystem/printer/base.py +1 -1
  80. PyFunceble/cli/filesystem/printer/file.py +1 -1
  81. PyFunceble/cli/filesystem/printer/stdout.py +1 -1
  82. PyFunceble/cli/filesystem/registrar_counter.py +1 -1
  83. PyFunceble/cli/filesystem/status_file.py +1 -1
  84. PyFunceble/cli/migrators/__init__.py +1 -1
  85. PyFunceble/cli/migrators/alembic.py +1 -1
  86. PyFunceble/cli/migrators/base.py +1 -1
  87. PyFunceble/cli/migrators/csv_file/__init__.py +1 -1
  88. PyFunceble/cli/migrators/csv_file/base.py +1 -1
  89. PyFunceble/cli/migrators/csv_file/inactive_source_delete.py +1 -1
  90. PyFunceble/cli/migrators/csv_file/whois_registrar_add.py +1 -1
  91. PyFunceble/cli/migrators/db_base.py +1 -1
  92. PyFunceble/cli/migrators/file_cleanup/__init__.py +1 -1
  93. PyFunceble/cli/migrators/file_cleanup/base.py +1 -1
  94. PyFunceble/cli/migrators/file_cleanup/hashes_file.py +1 -1
  95. PyFunceble/cli/migrators/file_cleanup/mining_file.py +1 -1
  96. PyFunceble/cli/migrators/file_cleanup/production_config_file.py +1 -1
  97. PyFunceble/cli/migrators/json2csv/__init__.py +1 -1
  98. PyFunceble/cli/migrators/json2csv/base.py +1 -1
  99. PyFunceble/cli/migrators/json2csv/inactive.py +1 -1
  100. PyFunceble/cli/migrators/json2csv/whois.py +1 -1
  101. PyFunceble/cli/migrators/mariadb/__init__.py +1 -1
  102. PyFunceble/cli/migrators/mariadb/base.py +1 -1
  103. PyFunceble/cli/migrators/mariadb/file_and_status.py +1 -1
  104. PyFunceble/cli/migrators/mariadb/whois_record_idna_subject.py +1 -1
  105. PyFunceble/cli/processes/__init__.py +1 -1
  106. PyFunceble/cli/processes/base.py +4 -442
  107. PyFunceble/cli/processes/chancy_producer.py +3 -2
  108. PyFunceble/cli/processes/chancy_tester.py +3 -2
  109. PyFunceble/cli/processes/dir_files_sorter.py +3 -2
  110. PyFunceble/cli/processes/file_sorter.py +3 -2
  111. PyFunceble/cli/processes/migrator.py +25 -14
  112. PyFunceble/cli/processes/miner.py +3 -2
  113. PyFunceble/cli/processes/producer.py +3 -2
  114. PyFunceble/cli/processes/tester.py +3 -2
  115. PyFunceble/cli/processes/workers/__init__.py +1 -1
  116. PyFunceble/cli/processes/workers/base.py +33 -324
  117. PyFunceble/cli/processes/workers/chancy_producer.py +1 -3
  118. PyFunceble/cli/processes/workers/chancy_tester.py +5 -5
  119. PyFunceble/cli/processes/workers/dir_files_sorter.py +8 -3
  120. PyFunceble/cli/processes/workers/file_sorter.py +8 -3
  121. PyFunceble/cli/processes/workers/file_sorter_base.py +1 -1
  122. PyFunceble/cli/processes/workers/migrator.py +5 -3
  123. PyFunceble/cli/processes/workers/miner.py +10 -5
  124. PyFunceble/cli/processes/workers/producer.py +15 -8
  125. PyFunceble/cli/processes/workers/tester.py +5 -5
  126. PyFunceble/cli/scripts/__init__.py +1 -1
  127. PyFunceble/cli/scripts/iana.py +1 -1
  128. PyFunceble/cli/scripts/production.py +1 -1
  129. PyFunceble/cli/scripts/public_suffix.py +1 -1
  130. PyFunceble/cli/storage.py +1 -1
  131. PyFunceble/cli/storage_facility.py +1 -1
  132. PyFunceble/cli/system/__init__.py +1 -1
  133. PyFunceble/cli/system/base.py +2 -2
  134. PyFunceble/cli/system/integrator.py +2 -1
  135. PyFunceble/cli/system/launcher.py +81 -57
  136. PyFunceble/cli/utils/__init__.py +1 -1
  137. PyFunceble/cli/utils/ascii_logo.py +1 -1
  138. PyFunceble/cli/utils/sort.py +1 -1
  139. PyFunceble/cli/utils/stdout.py +1 -1
  140. PyFunceble/cli/utils/testing.py +1 -1
  141. PyFunceble/cli/utils/version.py +1 -1
  142. PyFunceble/config/__init__.py +1 -1
  143. PyFunceble/config/compare.py +1 -1
  144. PyFunceble/config/loader.py +1 -1
  145. PyFunceble/converter/__init__.py +1 -1
  146. PyFunceble/converter/adblock_input_line2subject.py +1 -1
  147. PyFunceble/converter/base.py +1 -1
  148. PyFunceble/converter/cidr2subject.py +1 -1
  149. PyFunceble/converter/input_line2subject.py +1 -1
  150. PyFunceble/converter/internal_url.py +1 -1
  151. PyFunceble/converter/rpz_input_line2subject.py +1 -1
  152. PyFunceble/converter/rpz_policy2subject.py +1 -1
  153. PyFunceble/converter/subject2complements.py +1 -1
  154. PyFunceble/converter/url2netloc.py +1 -1
  155. PyFunceble/converter/wildcard2subject.py +1 -1
  156. PyFunceble/data/alembic/__init__.py +1 -1
  157. PyFunceble/data/alembic/mysql/__init__.py +1 -1
  158. PyFunceble/data/alembic/mysql/env.py +1 -1
  159. PyFunceble/data/alembic/mysql/versions/__init__.py +1 -1
  160. PyFunceble/data/alembic/postgresql/__init__.py +1 -1
  161. PyFunceble/data/alembic/postgresql/env.py +1 -1
  162. PyFunceble/data/alembic/postgresql/versions/__init__.py +1 -1
  163. PyFunceble/database/__init__.py +1 -1
  164. PyFunceble/database/credential/__init__.py +1 -1
  165. PyFunceble/database/credential/base.py +1 -1
  166. PyFunceble/database/credential/mariadb.py +1 -1
  167. PyFunceble/database/credential/mysql.py +1 -1
  168. PyFunceble/database/credential/postgresql.py +1 -1
  169. PyFunceble/database/schemas/__init__.py +1 -1
  170. PyFunceble/database/schemas/autocontinue.py +1 -1
  171. PyFunceble/database/schemas/inactive.py +1 -1
  172. PyFunceble/database/schemas/status.py +1 -1
  173. PyFunceble/database/schemas/whois_record.py +1 -1
  174. PyFunceble/database/session.py +1 -1
  175. PyFunceble/database/sqlalchemy/__init__.py +1 -1
  176. PyFunceble/database/sqlalchemy/all_schemas.py +1 -1
  177. PyFunceble/database/sqlalchemy/base_schema.py +1 -1
  178. PyFunceble/dataset/__init__.py +1 -1
  179. PyFunceble/dataset/autocontinue/__init__.py +1 -1
  180. PyFunceble/dataset/autocontinue/base.py +1 -1
  181. PyFunceble/dataset/autocontinue/csv.py +1 -1
  182. PyFunceble/dataset/autocontinue/sql.py +1 -1
  183. PyFunceble/dataset/base.py +2 -2
  184. PyFunceble/dataset/csv_base.py +1 -1
  185. PyFunceble/dataset/db_base.py +1 -1
  186. PyFunceble/dataset/iana.py +1 -1
  187. PyFunceble/dataset/inactive/__init__.py +1 -1
  188. PyFunceble/dataset/inactive/base.py +1 -1
  189. PyFunceble/dataset/inactive/csv.py +1 -1
  190. PyFunceble/dataset/inactive/sql.py +1 -1
  191. PyFunceble/dataset/ipv4_reputation.py +1 -1
  192. PyFunceble/dataset/public_suffix.py +1 -1
  193. PyFunceble/dataset/sql_base.py +4 -3
  194. PyFunceble/dataset/user_agent.py +1 -1
  195. PyFunceble/dataset/whois/__init__.py +1 -1
  196. PyFunceble/dataset/whois/base.py +1 -1
  197. PyFunceble/dataset/whois/csv.py +1 -1
  198. PyFunceble/dataset/whois/sql.py +1 -1
  199. PyFunceble/downloader/__init__.py +1 -1
  200. PyFunceble/downloader/base.py +1 -1
  201. PyFunceble/downloader/exceptions.py +1 -1
  202. PyFunceble/downloader/iana.py +1 -1
  203. PyFunceble/downloader/ipv4_reputation.py +1 -1
  204. PyFunceble/downloader/public_suffix.py +1 -1
  205. PyFunceble/downloader/user_agents.py +1 -1
  206. PyFunceble/exceptions.py +1 -1
  207. PyFunceble/facility.py +1 -1
  208. PyFunceble/factory.py +1 -1
  209. PyFunceble/helpers/__init__.py +1 -1
  210. PyFunceble/helpers/command.py +1 -1
  211. PyFunceble/helpers/dict.py +1 -1
  212. PyFunceble/helpers/directory.py +1 -1
  213. PyFunceble/helpers/download.py +1 -1
  214. PyFunceble/helpers/environment_variable.py +1 -1
  215. PyFunceble/helpers/exceptions.py +1 -1
  216. PyFunceble/helpers/file.py +1 -1
  217. PyFunceble/helpers/hash.py +1 -1
  218. PyFunceble/helpers/list.py +1 -1
  219. PyFunceble/helpers/merge.py +1 -1
  220. PyFunceble/helpers/regex.py +1 -1
  221. PyFunceble/logger.py +34 -11
  222. PyFunceble/query/__init__.py +1 -1
  223. PyFunceble/query/dns/__init__.py +1 -1
  224. PyFunceble/query/dns/nameserver.py +1 -1
  225. PyFunceble/query/dns/query_tool.py +1 -1
  226. PyFunceble/query/dns/resolver.py +1 -1
  227. PyFunceble/query/http_status_code.py +1 -1
  228. PyFunceble/query/netinfo/__init__.py +1 -1
  229. PyFunceble/query/netinfo/address.py +1 -1
  230. PyFunceble/query/netinfo/base.py +1 -1
  231. PyFunceble/query/netinfo/hostbyaddr.py +1 -1
  232. PyFunceble/query/platform.py +1 -1
  233. PyFunceble/query/record/__init__.py +1 -1
  234. PyFunceble/query/record/base.py +1 -1
  235. PyFunceble/query/record/dns.py +1 -1
  236. PyFunceble/query/record/whois.py +1 -1
  237. PyFunceble/query/requests/__init__.py +1 -1
  238. PyFunceble/query/requests/adapter/__init__.py +1 -1
  239. PyFunceble/query/requests/adapter/base.py +1 -1
  240. PyFunceble/query/requests/adapter/http.py +1 -1
  241. PyFunceble/query/requests/adapter/https.py +1 -1
  242. PyFunceble/query/requests/requester.py +1 -1
  243. PyFunceble/query/whois/__init__.py +1 -1
  244. PyFunceble/query/whois/converter/__init__.py +1 -1
  245. PyFunceble/query/whois/converter/base.py +1 -1
  246. PyFunceble/query/whois/converter/digit2digits.py +1 -1
  247. PyFunceble/query/whois/converter/expiration_date.py +1 -1
  248. PyFunceble/query/whois/converter/month2unified.py +1 -1
  249. PyFunceble/query/whois/converter/registrar.py +1 -1
  250. PyFunceble/query/whois/query_tool.py +1 -1
  251. PyFunceble/sessions.py +1 -1
  252. PyFunceble/storage.py +2 -2
  253. PyFunceble/storage_facility.py +1 -1
  254. PyFunceble/utils/__init__.py +1 -1
  255. PyFunceble/utils/platform.py +1 -1
  256. PyFunceble/utils/profile.py +1 -1
  257. PyFunceble/utils/version.py +1 -1
  258. {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/LICENSE +1 -1
  259. {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/METADATA +133 -112
  260. pyfunceble_dev-4.3.0a16.dist-info/RECORD +284 -0
  261. {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/WHEEL +1 -1
  262. PyFunceble_dev-4.3.0a15.dist-info/RECORD +0 -284
  263. {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/entry_points.txt +0 -0
  264. {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/top_level.txt +0 -0
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -78,8 +78,6 @@ class TesterWorker(WorkerBase):
78
78
  the tests.
79
79
  """
80
80
 
81
- STD_NAME: str = "pyfunceble_tester_worker"
82
-
83
81
  continue_dataset: Optional[ContinueDatasetBase] = None
84
82
  inactive_dataset: Optional[InactiveDatasetBase] = None
85
83
  testing_object: Optional[CheckerBase] = None
@@ -87,7 +85,9 @@ class TesterWorker(WorkerBase):
87
85
  known_testing_objects: dict = {}
88
86
  initiated_testing_objects: dict = {}
89
87
 
90
- def __post_init__(self) -> None:
88
+ def perform_external_poweron_checks(self) -> None:
89
+ result = super().perform_external_poweron_checks()
90
+
91
91
  self.continue_dataset = (
92
92
  PyFunceble.cli.utils.testing.get_continue_databaset_object(
93
93
  db_session=self.db_session
@@ -123,7 +123,7 @@ class TesterWorker(WorkerBase):
123
123
  },
124
124
  }
125
125
 
126
- return super().__post_init__()
126
+ return result
127
127
 
128
128
  @staticmethod
129
129
  def should_be_ignored(subject: str) -> bool:
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
PyFunceble/cli/storage.py CHANGED
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -75,7 +75,7 @@ class SystemBase:
75
75
  self.args = args
76
76
 
77
77
  def ensure_args_is_given(
78
- func: Callable[["SystemBase"], "SystemBase"]
78
+ func: Callable[["SystemBase"], "SystemBase"],
79
79
  ): # pylint: disable=no-self-argument
80
80
  """
81
81
  Ensures that the :code:`self.args` attribute is given before launching
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -299,6 +299,7 @@ class SystemIntegrator(SystemBase):
299
299
  f"{colorama.Fore.RED}{colorama.Style.BRIGHT}Fatal Error: "
300
300
  f"{exception}"
301
301
  )
302
+
302
303
  print(message)
303
304
 
304
305
  if PyFunceble.facility.Logger.authorized:
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -199,67 +199,96 @@ class SystemLauncher(SystemBase):
199
199
 
200
200
  if not PyFunceble.storage.CONFIGURATION.cli_testing.chancy_tester:
201
201
  self.tester_process_manager = TesterProcessesManager(
202
- self.manager,
203
- max_worker=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
204
- continuous_integration=self.continuous_integration,
202
+ max_workers=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
203
+ manager=self.manager,
205
204
  daemon=True,
206
- output_workers_count=1,
207
- output_queue_num=2,
205
+ generate_output_queue=True,
206
+ output_queue_count=(
207
+ 1 if not PyFunceble.storage.CONFIGURATION.cli_testing.mining else 2
208
+ ),
209
+ spread_stop_signal=True,
210
+ spread_wait_signal=True,
211
+ dynamic_up_scaling=True,
212
+ dynamic_down_scaling=True,
213
+ delay_shutdown=PyFunceble.storage.CONFIGURATION.cli_testing.mining,
214
+ generate_configuration_queue=False,
215
+ continuous_integration=self.continuous_integration,
208
216
  )
217
+
209
218
  self.producer_process_manager = ProducerProcessesManager(
210
- self.manager,
211
- max_worker=1,
212
- continuous_integration=self.continuous_integration,
213
- input_queue=self.tester_process_manager.output_queue[0],
219
+ max_workers=1,
220
+ manager=self.manager,
214
221
  daemon=True,
215
222
  generate_output_queue=False,
223
+ spread_stop_signal=True,
224
+ spread_wait_signal=True,
225
+ delay_shutdown=PyFunceble.storage.CONFIGURATION.cli_testing.mining,
226
+ generate_configuration_queue=False,
227
+ continuous_integration=self.continuous_integration,
216
228
  )
217
229
  else:
218
230
  self.tester_process_manager = ChancyTesterProcessesManager(
219
- self.manager,
220
- max_worker=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
221
- continuous_integration=self.continuous_integration,
231
+ max_workers=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
232
+ manager=self.manager,
222
233
  daemon=True,
223
- output_workers_count=1,
224
- output_queue_num=2,
234
+ generate_output_queue=True,
235
+ output_queue_count=(
236
+ 1 if not PyFunceble.storage.CONFIGURATION.cli_testing.mining else 2
237
+ ),
238
+ spread_stop_signal=True,
239
+ spread_wait_signal=True,
240
+ dynamic_up_scaling=True,
241
+ dynamic_down_scaling=True,
242
+ delay_shutdown=PyFunceble.storage.CONFIGURATION.cli_testing.mining,
243
+ generate_configuration_queue=False,
244
+ continuous_integration=self.continuous_integration,
225
245
  )
226
246
  self.producer_process_manager = ChancyProducerProcessesManager(
227
- self.manager,
228
- max_worker=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
229
- continuous_integration=self.continuous_integration,
230
- input_queue=self.tester_process_manager.output_queue[0],
247
+ max_workers=1,
248
+ manager=self.manager,
231
249
  daemon=True,
232
250
  generate_output_queue=False,
251
+ spread_stop_signal=True,
252
+ spread_wait_signal=True,
253
+ delay_shutdown=PyFunceble.storage.CONFIGURATION.cli_testing.mining,
254
+ generate_configuration_queue=False,
255
+ continuous_integration=self.continuous_integration,
233
256
  )
234
257
 
258
+ self.tester_process_manager.add_dependent_manager(self.producer_process_manager)
259
+
235
260
  self.dir_files_sorter_process_manager = DirFileSorterProcessesManager(
236
- self.manager,
237
- max_worker=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
261
+ manager=self.manager,
262
+ max_workers=PyFunceble.storage.CONFIGURATION.cli_testing.max_workers,
238
263
  continuous_integration=self.continuous_integration,
239
264
  daemon=True,
240
265
  generate_output_queue=False,
241
- output_workers_count=0,
266
+ generate_configuration_queue=False,
242
267
  )
243
268
  self.migrator_process_manager = MigratorProcessesManager(
244
- self.manager,
269
+ manager=self.manager,
245
270
  continuous_integration=self.continuous_integration,
246
271
  daemon=True,
247
272
  generate_input_queue=False,
248
273
  generate_output_queue=False,
249
- output_workers_count=0,
250
274
  )
251
275
 
252
276
  if PyFunceble.storage.CONFIGURATION.cli_testing.mining:
253
277
  self.miner_process_manager = MinerProcessesManager(
254
- self.manager,
255
- max_worker=1,
278
+ manager=self.manager,
279
+ max_workers=1,
256
280
  continuous_integration=self.continuous_integration,
257
- input_queue=self.tester_process_manager.output_queue[1],
258
- output_queue=self.tester_process_manager.input_queue,
281
+ output_queues=[self.tester_process_manager.input_queue],
259
282
  generate_input_queue=False,
260
283
  generate_output_queue=False,
261
284
  daemon=True,
262
- output_workers_count=self.tester_process_manager.max_worker,
285
+ spread_stop_signal=False,
286
+ spread_wait_signal=True,
287
+ delay_shutdown=PyFunceble.storage.CONFIGURATION.cli_testing.mining,
288
+ )
289
+
290
+ self.tester_process_manager.add_dependent_manager(
291
+ self.miner_process_manager
263
292
  )
264
293
 
265
294
  if self.continuous_integration.authorized:
@@ -587,8 +616,8 @@ class SystemLauncher(SystemBase):
587
616
  to_send["subject"], to_send["idna_subject"] = subject, subject
588
617
  to_send["from_preload"] = True
589
618
 
590
- self.tester_process_manager.add_to_input_queue(
591
- to_send, worker_name="main"
619
+ self.tester_process_manager.push_to_input_queue(
620
+ to_send, source_worker="main"
592
621
  )
593
622
 
594
623
  else:
@@ -620,8 +649,8 @@ class SystemLauncher(SystemBase):
620
649
  to_send["subject"] = subject
621
650
  to_send["idna_subject"] = domain2idna.domain2idna(subject)
622
651
 
623
- self.tester_process_manager.add_to_input_queue(
624
- to_send, worker_name="main"
652
+ self.tester_process_manager.push_to_input_queue(
653
+ to_send, source_worker="main"
625
654
  )
626
655
 
627
656
  # Now, let's handle the inactive one :-)
@@ -642,8 +671,8 @@ class SystemLauncher(SystemBase):
642
671
  to_send["subject"] = dataset["idna_subject"]
643
672
  to_send["idna_subject"] = dataset["idna_subject"]
644
673
 
645
- self.tester_process_manager.add_to_input_queue(
646
- to_send, worker_name="main"
674
+ self.tester_process_manager.push_to_input_queue(
675
+ to_send, source_worker="main"
647
676
  )
648
677
 
649
678
  self.dir_files_sorter_process_manager.input_datasets.append(
@@ -660,14 +689,14 @@ class SystemLauncher(SystemBase):
660
689
 
661
690
  max_breakoff = 120.0
662
691
 
663
- initial_breakoff = 0.1 * self.tester_process_manager.max_worker
692
+ initial_breakoff = 0.1 * self.tester_process_manager.max_workers
664
693
  breakoff = initial_breakoff
665
694
 
666
695
  while True:
667
696
  protocol_data = {}
668
697
 
669
698
  for next_contract in next(
670
- query_tool.pull_contract(self.tester_process_manager.max_worker)
699
+ query_tool.pull_contract(self.tester_process_manager.max_workers)
671
700
  ):
672
701
  if "subject" not in next_contract or not next_contract["subject"]:
673
702
  continue
@@ -683,19 +712,14 @@ class SystemLauncher(SystemBase):
683
712
  )
684
713
  protocol_data["contract"] = copy.deepcopy(next_contract)
685
714
 
686
- self.tester_process_manager.add_to_input_queue(
687
- protocol_data, worker_name="main"
715
+ self.tester_process_manager.push_to_input_queue(
716
+ protocol_data, source_worker="main"
688
717
  )
689
718
 
690
719
  self.ci_stop_in_the_middle_if_time_exceeded()
691
720
 
692
- if (
693
- self.tester_process_manager.input_queue.qsize()
694
- >= self.tester_process_manager.max_worker
695
- ):
696
- breakoff_multiplier = (
697
- self.tester_process_manager.input_queue.qsize() * 2
698
- )
721
+ if self.tester_process_manager.queue_full:
722
+ breakoff_multiplier = self.tester_process_manager.queue_size * 2
699
723
 
700
724
  if breakoff < max_breakoff:
701
725
  breakoff += 0.1 * breakoff_multiplier
@@ -732,8 +756,8 @@ class SystemLauncher(SystemBase):
732
756
  domain2idna.domain2idna(subject),
733
757
  )
734
758
 
735
- self.tester_process_manager.add_to_input_queue(
736
- to_send, worker_name="main"
759
+ self.tester_process_manager.push_to_input_queue(
760
+ to_send, source_worker="main"
737
761
  )
738
762
  elif protocol["type"] == "file":
739
763
  handle_file(protocol)
@@ -1069,7 +1093,7 @@ class SystemLauncher(SystemBase):
1069
1093
  # The idea out here is to propate the stop signal.
1070
1094
  # Meaning that the tester will share it's stop signal to all
1071
1095
  # subsequencial queues after all submitted tasks are done.
1072
- self.tester_process_manager.send_stop_signal(worker_name="main")
1096
+ self.tester_process_manager.push_stop_signal(source_worker="main")
1073
1097
 
1074
1098
  if self.miner_process_manager:
1075
1099
  self.miner_process_manager.wait()
@@ -1081,7 +1105,7 @@ class SystemLauncher(SystemBase):
1081
1105
  # From here, we are sure that every test and files are produced.
1082
1106
  # We now format the generated file(s).
1083
1107
  self.dir_files_sorter_process_manager.start()
1084
- self.dir_files_sorter_process_manager.send_stop_signal()
1108
+ self.dir_files_sorter_process_manager.push_stop_signal()
1085
1109
  self.dir_files_sorter_process_manager.wait()
1086
1110
  except AssertionError:
1087
1111
  # Example: Already started previously.
@@ -1101,13 +1125,14 @@ class SystemLauncher(SystemBase):
1101
1125
  Starts our core processes.
1102
1126
  """
1103
1127
 
1104
- if not self.producer_process_manager.is_running():
1128
+ if not self.producer_process_manager.running:
1105
1129
  self.producer_process_manager.start()
1106
1130
 
1131
+ if not self.tester_process_manager.running:
1107
1132
  self.tester_process_manager.start()
1108
1133
 
1109
- if self.miner_process_manager:
1110
- self.miner_process_manager.start()
1134
+ if self.miner_process_manager and not self.miner_process_manager.running:
1135
+ self.miner_process_manager.start()
1111
1136
 
1112
1137
  @SystemBase.ensure_args_is_given
1113
1138
  def start(self) -> "SystemLauncher":
@@ -1122,10 +1147,8 @@ class SystemLauncher(SystemBase):
1122
1147
  # for more information about the markers.
1123
1148
  self.continuous_integration.bypass()
1124
1149
 
1125
- if self.args.files or self.args.url_files:
1126
- self.migrator_process_manager.start()
1127
-
1128
- self.migrator_process_manager.wait()
1150
+ self.migrator_process_manager.start()
1151
+ self.migrator_process_manager.wait()
1129
1152
 
1130
1153
  del self.migrator_process_manager
1131
1154
 
@@ -1166,6 +1189,7 @@ class SystemLauncher(SystemBase):
1166
1189
  f"{colorama.Fore.RED}{colorama.Style.BRIGHT}Fatal Error: "
1167
1190
  f"{exception}"
1168
1191
  )
1192
+
1169
1193
  print(message)
1170
1194
 
1171
1195
  if PyFunceble.facility.Logger.authorized:
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ License:
36
36
  ::
37
37
 
38
38
 
39
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
39
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
40
40
 
41
41
  Licensed under the Apache License, Version 2.0 (the "License");
42
42
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@ License:
35
35
  ::
36
36
 
37
37
 
38
- Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024 Nissar Chababy
38
+ Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy
39
39
 
40
40
  Licensed under the Apache License, Version 2.0 (the "License");
41
41
  you may not use this file except in compliance with the License.