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.
- PyFunceble/__init__.py +1 -1
- PyFunceble/checker/__init__.py +1 -1
- PyFunceble/checker/availability/__init__.py +1 -1
- PyFunceble/checker/availability/base.py +36 -33
- PyFunceble/checker/availability/domain.py +1 -1
- PyFunceble/checker/availability/domain_and_ip.py +1 -1
- PyFunceble/checker/availability/extras/__init__.py +1 -1
- PyFunceble/checker/availability/extras/base.py +4 -4
- PyFunceble/checker/availability/extras/dns.py +1 -1
- PyFunceble/checker/availability/extras/etoxic.py +1 -1
- PyFunceble/checker/availability/extras/external.py +1 -1
- PyFunceble/checker/availability/extras/parked.py +1 -1
- PyFunceble/checker/availability/extras/rules.py +1 -1
- PyFunceble/checker/availability/extras/subject_switch.py +1 -1
- PyFunceble/checker/availability/ip.py +1 -1
- PyFunceble/checker/availability/params.py +1 -1
- PyFunceble/checker/availability/status.py +1 -1
- PyFunceble/checker/availability/url.py +1 -1
- PyFunceble/checker/base.py +1 -1
- PyFunceble/checker/complex_json_encoder.py +1 -1
- PyFunceble/checker/params_base.py +1 -1
- PyFunceble/checker/reputation/__init__.py +1 -1
- PyFunceble/checker/reputation/base.py +1 -1
- PyFunceble/checker/reputation/domain.py +1 -1
- PyFunceble/checker/reputation/domain_and_ip.py +1 -1
- PyFunceble/checker/reputation/ip.py +1 -1
- PyFunceble/checker/reputation/params.py +1 -1
- PyFunceble/checker/reputation/status.py +1 -1
- PyFunceble/checker/reputation/url.py +1 -1
- PyFunceble/checker/status_base.py +1 -1
- PyFunceble/checker/syntax/__init__.py +1 -1
- PyFunceble/checker/syntax/base.py +1 -1
- PyFunceble/checker/syntax/domain.py +1 -1
- PyFunceble/checker/syntax/domain_and_ip.py +1 -1
- PyFunceble/checker/syntax/domain_base.py +1 -1
- PyFunceble/checker/syntax/ip.py +1 -1
- PyFunceble/checker/syntax/ipv4.py +1 -1
- PyFunceble/checker/syntax/ipv6.py +1 -1
- PyFunceble/checker/syntax/params.py +1 -1
- PyFunceble/checker/syntax/second_lvl_domain.py +1 -1
- PyFunceble/checker/syntax/status.py +1 -1
- PyFunceble/checker/syntax/subdomain.py +1 -1
- PyFunceble/checker/syntax/url.py +1 -1
- PyFunceble/checker/utils/__init__.py +1 -1
- PyFunceble/checker/utils/whois.py +1 -1
- PyFunceble/cli/__init__.py +1 -1
- PyFunceble/cli/continuous_integration/__init__.py +1 -1
- PyFunceble/cli/continuous_integration/base.py +1 -1
- PyFunceble/cli/continuous_integration/exceptions.py +1 -1
- PyFunceble/cli/continuous_integration/github_actions.py +1 -1
- PyFunceble/cli/continuous_integration/gitlab_ci.py +1 -1
- PyFunceble/cli/continuous_integration/jenkins.py +1 -1
- PyFunceble/cli/continuous_integration/standalone.py +1 -1
- PyFunceble/cli/continuous_integration/travis_ci.py +1 -1
- PyFunceble/cli/continuous_integration/utils.py +1 -1
- PyFunceble/cli/credential_loader.py +1 -1
- PyFunceble/cli/entry_points/__init__.py +1 -1
- PyFunceble/cli/entry_points/clean.py +1 -1
- PyFunceble/cli/entry_points/iana.py +1 -1
- PyFunceble/cli/entry_points/production.py +1 -1
- PyFunceble/cli/entry_points/public_suffix.py +1 -1
- PyFunceble/cli/entry_points/pyfunceble/__init__.py +1 -1
- PyFunceble/cli/entry_points/pyfunceble/argsparser.py +1 -1
- PyFunceble/cli/entry_points/pyfunceble/cli.py +2 -2
- PyFunceble/cli/execution_time.py +1 -1
- PyFunceble/cli/facility.py +1 -1
- PyFunceble/cli/factory.py +1 -1
- PyFunceble/cli/file_preloader.py +1 -1
- PyFunceble/cli/filesystem/__init__.py +1 -1
- PyFunceble/cli/filesystem/cleanup.py +1 -1
- PyFunceble/cli/filesystem/counter.py +1 -1
- PyFunceble/cli/filesystem/dir_base.py +1 -1
- PyFunceble/cli/filesystem/dir_structure/__init__.py +1 -1
- PyFunceble/cli/filesystem/dir_structure/backup.py +1 -1
- PyFunceble/cli/filesystem/dir_structure/base.py +1 -1
- PyFunceble/cli/filesystem/dir_structure/restore.py +1 -1
- PyFunceble/cli/filesystem/json_base.py +1 -1
- PyFunceble/cli/filesystem/printer/__init__.py +1 -1
- PyFunceble/cli/filesystem/printer/base.py +1 -1
- PyFunceble/cli/filesystem/printer/file.py +1 -1
- PyFunceble/cli/filesystem/printer/stdout.py +1 -1
- PyFunceble/cli/filesystem/registrar_counter.py +1 -1
- PyFunceble/cli/filesystem/status_file.py +1 -1
- PyFunceble/cli/migrators/__init__.py +1 -1
- PyFunceble/cli/migrators/alembic.py +1 -1
- PyFunceble/cli/migrators/base.py +1 -1
- PyFunceble/cli/migrators/csv_file/__init__.py +1 -1
- PyFunceble/cli/migrators/csv_file/base.py +1 -1
- PyFunceble/cli/migrators/csv_file/inactive_source_delete.py +1 -1
- PyFunceble/cli/migrators/csv_file/whois_registrar_add.py +1 -1
- PyFunceble/cli/migrators/db_base.py +1 -1
- PyFunceble/cli/migrators/file_cleanup/__init__.py +1 -1
- PyFunceble/cli/migrators/file_cleanup/base.py +1 -1
- PyFunceble/cli/migrators/file_cleanup/hashes_file.py +1 -1
- PyFunceble/cli/migrators/file_cleanup/mining_file.py +1 -1
- PyFunceble/cli/migrators/file_cleanup/production_config_file.py +1 -1
- PyFunceble/cli/migrators/json2csv/__init__.py +1 -1
- PyFunceble/cli/migrators/json2csv/base.py +1 -1
- PyFunceble/cli/migrators/json2csv/inactive.py +1 -1
- PyFunceble/cli/migrators/json2csv/whois.py +1 -1
- PyFunceble/cli/migrators/mariadb/__init__.py +1 -1
- PyFunceble/cli/migrators/mariadb/base.py +1 -1
- PyFunceble/cli/migrators/mariadb/file_and_status.py +1 -1
- PyFunceble/cli/migrators/mariadb/whois_record_idna_subject.py +1 -1
- PyFunceble/cli/processes/__init__.py +1 -1
- PyFunceble/cli/processes/base.py +4 -442
- PyFunceble/cli/processes/chancy_producer.py +3 -2
- PyFunceble/cli/processes/chancy_tester.py +3 -2
- PyFunceble/cli/processes/dir_files_sorter.py +3 -2
- PyFunceble/cli/processes/file_sorter.py +3 -2
- PyFunceble/cli/processes/migrator.py +25 -14
- PyFunceble/cli/processes/miner.py +3 -2
- PyFunceble/cli/processes/producer.py +3 -2
- PyFunceble/cli/processes/tester.py +3 -2
- PyFunceble/cli/processes/workers/__init__.py +1 -1
- PyFunceble/cli/processes/workers/base.py +33 -324
- PyFunceble/cli/processes/workers/chancy_producer.py +1 -3
- PyFunceble/cli/processes/workers/chancy_tester.py +5 -5
- PyFunceble/cli/processes/workers/dir_files_sorter.py +8 -3
- PyFunceble/cli/processes/workers/file_sorter.py +8 -3
- PyFunceble/cli/processes/workers/file_sorter_base.py +1 -1
- PyFunceble/cli/processes/workers/migrator.py +5 -3
- PyFunceble/cli/processes/workers/miner.py +10 -5
- PyFunceble/cli/processes/workers/producer.py +15 -8
- PyFunceble/cli/processes/workers/tester.py +5 -5
- PyFunceble/cli/scripts/__init__.py +1 -1
- PyFunceble/cli/scripts/iana.py +1 -1
- PyFunceble/cli/scripts/production.py +1 -1
- PyFunceble/cli/scripts/public_suffix.py +1 -1
- PyFunceble/cli/storage.py +1 -1
- PyFunceble/cli/storage_facility.py +1 -1
- PyFunceble/cli/system/__init__.py +1 -1
- PyFunceble/cli/system/base.py +2 -2
- PyFunceble/cli/system/integrator.py +2 -1
- PyFunceble/cli/system/launcher.py +81 -57
- PyFunceble/cli/utils/__init__.py +1 -1
- PyFunceble/cli/utils/ascii_logo.py +1 -1
- PyFunceble/cli/utils/sort.py +1 -1
- PyFunceble/cli/utils/stdout.py +1 -1
- PyFunceble/cli/utils/testing.py +1 -1
- PyFunceble/cli/utils/version.py +1 -1
- PyFunceble/config/__init__.py +1 -1
- PyFunceble/config/compare.py +1 -1
- PyFunceble/config/loader.py +1 -1
- PyFunceble/converter/__init__.py +1 -1
- PyFunceble/converter/adblock_input_line2subject.py +1 -1
- PyFunceble/converter/base.py +1 -1
- PyFunceble/converter/cidr2subject.py +1 -1
- PyFunceble/converter/input_line2subject.py +1 -1
- PyFunceble/converter/internal_url.py +1 -1
- PyFunceble/converter/rpz_input_line2subject.py +1 -1
- PyFunceble/converter/rpz_policy2subject.py +1 -1
- PyFunceble/converter/subject2complements.py +1 -1
- PyFunceble/converter/url2netloc.py +1 -1
- PyFunceble/converter/wildcard2subject.py +1 -1
- PyFunceble/data/alembic/__init__.py +1 -1
- PyFunceble/data/alembic/mysql/__init__.py +1 -1
- PyFunceble/data/alembic/mysql/env.py +1 -1
- PyFunceble/data/alembic/mysql/versions/__init__.py +1 -1
- PyFunceble/data/alembic/postgresql/__init__.py +1 -1
- PyFunceble/data/alembic/postgresql/env.py +1 -1
- PyFunceble/data/alembic/postgresql/versions/__init__.py +1 -1
- PyFunceble/database/__init__.py +1 -1
- PyFunceble/database/credential/__init__.py +1 -1
- PyFunceble/database/credential/base.py +1 -1
- PyFunceble/database/credential/mariadb.py +1 -1
- PyFunceble/database/credential/mysql.py +1 -1
- PyFunceble/database/credential/postgresql.py +1 -1
- PyFunceble/database/schemas/__init__.py +1 -1
- PyFunceble/database/schemas/autocontinue.py +1 -1
- PyFunceble/database/schemas/inactive.py +1 -1
- PyFunceble/database/schemas/status.py +1 -1
- PyFunceble/database/schemas/whois_record.py +1 -1
- PyFunceble/database/session.py +1 -1
- PyFunceble/database/sqlalchemy/__init__.py +1 -1
- PyFunceble/database/sqlalchemy/all_schemas.py +1 -1
- PyFunceble/database/sqlalchemy/base_schema.py +1 -1
- PyFunceble/dataset/__init__.py +1 -1
- PyFunceble/dataset/autocontinue/__init__.py +1 -1
- PyFunceble/dataset/autocontinue/base.py +1 -1
- PyFunceble/dataset/autocontinue/csv.py +1 -1
- PyFunceble/dataset/autocontinue/sql.py +1 -1
- PyFunceble/dataset/base.py +2 -2
- PyFunceble/dataset/csv_base.py +1 -1
- PyFunceble/dataset/db_base.py +1 -1
- PyFunceble/dataset/iana.py +1 -1
- PyFunceble/dataset/inactive/__init__.py +1 -1
- PyFunceble/dataset/inactive/base.py +1 -1
- PyFunceble/dataset/inactive/csv.py +1 -1
- PyFunceble/dataset/inactive/sql.py +1 -1
- PyFunceble/dataset/ipv4_reputation.py +1 -1
- PyFunceble/dataset/public_suffix.py +1 -1
- PyFunceble/dataset/sql_base.py +4 -3
- PyFunceble/dataset/user_agent.py +1 -1
- PyFunceble/dataset/whois/__init__.py +1 -1
- PyFunceble/dataset/whois/base.py +1 -1
- PyFunceble/dataset/whois/csv.py +1 -1
- PyFunceble/dataset/whois/sql.py +1 -1
- PyFunceble/downloader/__init__.py +1 -1
- PyFunceble/downloader/base.py +1 -1
- PyFunceble/downloader/exceptions.py +1 -1
- PyFunceble/downloader/iana.py +1 -1
- PyFunceble/downloader/ipv4_reputation.py +1 -1
- PyFunceble/downloader/public_suffix.py +1 -1
- PyFunceble/downloader/user_agents.py +1 -1
- PyFunceble/exceptions.py +1 -1
- PyFunceble/facility.py +1 -1
- PyFunceble/factory.py +1 -1
- PyFunceble/helpers/__init__.py +1 -1
- PyFunceble/helpers/command.py +1 -1
- PyFunceble/helpers/dict.py +1 -1
- PyFunceble/helpers/directory.py +1 -1
- PyFunceble/helpers/download.py +1 -1
- PyFunceble/helpers/environment_variable.py +1 -1
- PyFunceble/helpers/exceptions.py +1 -1
- PyFunceble/helpers/file.py +1 -1
- PyFunceble/helpers/hash.py +1 -1
- PyFunceble/helpers/list.py +1 -1
- PyFunceble/helpers/merge.py +1 -1
- PyFunceble/helpers/regex.py +1 -1
- PyFunceble/logger.py +34 -11
- PyFunceble/query/__init__.py +1 -1
- PyFunceble/query/dns/__init__.py +1 -1
- PyFunceble/query/dns/nameserver.py +1 -1
- PyFunceble/query/dns/query_tool.py +1 -1
- PyFunceble/query/dns/resolver.py +1 -1
- PyFunceble/query/http_status_code.py +1 -1
- PyFunceble/query/netinfo/__init__.py +1 -1
- PyFunceble/query/netinfo/address.py +1 -1
- PyFunceble/query/netinfo/base.py +1 -1
- PyFunceble/query/netinfo/hostbyaddr.py +1 -1
- PyFunceble/query/platform.py +1 -1
- PyFunceble/query/record/__init__.py +1 -1
- PyFunceble/query/record/base.py +1 -1
- PyFunceble/query/record/dns.py +1 -1
- PyFunceble/query/record/whois.py +1 -1
- PyFunceble/query/requests/__init__.py +1 -1
- PyFunceble/query/requests/adapter/__init__.py +1 -1
- PyFunceble/query/requests/adapter/base.py +1 -1
- PyFunceble/query/requests/adapter/http.py +1 -1
- PyFunceble/query/requests/adapter/https.py +1 -1
- PyFunceble/query/requests/requester.py +1 -1
- PyFunceble/query/whois/__init__.py +1 -1
- PyFunceble/query/whois/converter/__init__.py +1 -1
- PyFunceble/query/whois/converter/base.py +1 -1
- PyFunceble/query/whois/converter/digit2digits.py +1 -1
- PyFunceble/query/whois/converter/expiration_date.py +1 -1
- PyFunceble/query/whois/converter/month2unified.py +1 -1
- PyFunceble/query/whois/converter/registrar.py +1 -1
- PyFunceble/query/whois/query_tool.py +1 -1
- PyFunceble/sessions.py +1 -1
- PyFunceble/storage.py +2 -2
- PyFunceble/storage_facility.py +1 -1
- PyFunceble/utils/__init__.py +1 -1
- PyFunceble/utils/platform.py +1 -1
- PyFunceble/utils/profile.py +1 -1
- PyFunceble/utils/version.py +1 -1
- {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/LICENSE +1 -1
- {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/METADATA +133 -112
- pyfunceble_dev-4.3.0a16.dist-info/RECORD +284 -0
- {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/WHEEL +1 -1
- PyFunceble_dev-4.3.0a15.dist-info/RECORD +0 -284
- {PyFunceble_dev-4.3.0a15.dist-info → pyfunceble_dev-4.3.0a16.dist-info}/entry_points.txt +0 -0
- {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
|
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
|
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.
|
PyFunceble/cli/scripts/iana.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.
|
@@ -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.
|
PyFunceble/cli/system/base.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.
|
@@ -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
|
-
|
203
|
-
|
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
|
-
|
207
|
-
|
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
|
-
|
211
|
-
|
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
|
-
|
220
|
-
|
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
|
-
|
224
|
-
|
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
|
-
|
228
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
278
|
+
manager=self.manager,
|
279
|
+
max_workers=1,
|
256
280
|
continuous_integration=self.continuous_integration,
|
257
|
-
|
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
|
-
|
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.
|
591
|
-
to_send,
|
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.
|
624
|
-
to_send,
|
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.
|
646
|
-
to_send,
|
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.
|
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.
|
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.
|
687
|
-
protocol_data,
|
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.
|
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.
|
736
|
-
to_send,
|
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.
|
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.
|
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.
|
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
|
-
|
1110
|
-
|
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
|
-
|
1126
|
-
|
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:
|
PyFunceble/cli/utils/__init__.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.
|
PyFunceble/cli/utils/sort.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.
|
PyFunceble/cli/utils/stdout.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.
|
PyFunceble/cli/utils/testing.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.
|
PyFunceble/cli/utils/version.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.
|
PyFunceble/config/__init__.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.
|
PyFunceble/config/compare.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.
|
PyFunceble/config/loader.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.
|
PyFunceble/converter/__init__.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.
|
@@ -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.
|
PyFunceble/converter/base.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.
|
@@ -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.
|