PyFunceble-dev 4.2.7__py3-none-any.whl → 4.2.9__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/checker/availability/base.py +1 -7
- PyFunceble/checker/availability/domain.py +0 -1
- PyFunceble/checker/availability/extras/base.py +1 -2
- PyFunceble/checker/availability/extras/rules.py +1 -1
- PyFunceble/checker/availability/ip.py +0 -1
- PyFunceble/checker/availability/url.py +0 -1
- PyFunceble/checker/reputation/base.py +0 -1
- PyFunceble/checker/reputation/domain.py +0 -1
- PyFunceble/checker/reputation/ip.py +0 -1
- PyFunceble/checker/reputation/url.py +0 -1
- PyFunceble/checker/syntax/second_lvl_domain.py +6 -2
- PyFunceble/checker/syntax/status.py +1 -0
- PyFunceble/checker/syntax/subdomain.py +3 -1
- PyFunceble/checker/syntax/url.py +0 -1
- PyFunceble/cli/credential_loader.py +3 -3
- PyFunceble/cli/file_preloader.py +3 -3
- PyFunceble/cli/migrators/base.py +0 -1
- PyFunceble/cli/processes/workers/base.py +3 -3
- PyFunceble/cli/scripts/production.py +3 -4
- PyFunceble/cli/storage.py +5 -3
- PyFunceble/cli/utils/testing.py +1 -3
- PyFunceble/data/alembic/mysql/versions/35c79626ecb9_fix_some_columns.py +1 -0
- PyFunceble/data/alembic/mysql/versions/3a4c55a9320d_add_continue_table.py +1 -0
- PyFunceble/data/alembic/mysql/versions/3d6f4a33cdb2_add_inactive_table.py +1 -0
- PyFunceble/data/alembic/mysql/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py +1 -0
- PyFunceble/data/alembic/mysql/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py +1 -0
- PyFunceble/data/alembic/mysql/versions/6f4729deaf03_delete_inactive_source_column.py +1 -0
- PyFunceble/data/alembic/mysql/versions/7bcf7fa64ba1_rename_created_to_created_at_and.py +1 -0
- PyFunceble/data/alembic/mysql/versions/83ada95132bf_delete_the_file_table.py +1 -0
- PyFunceble/data/alembic/mysql/versions/912bbcb77a6c_add_registrar_column.py +1 -0
- PyFunceble/data/alembic/mysql/versions/95dc17ddd729_introduction_of_the_session_id_column.py +1 -0
- PyFunceble/data/alembic/mysql/versions/ade87195b0a0_base.py +1 -0
- PyFunceble/data/alembic/mysql/versions/bef7bcaac3f2_make_id_a_bigint.py +1 -0
- PyFunceble/data/alembic/mysql/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py +1 -0
- PyFunceble/data/alembic/mysql/versions/e04e8301d1a2_deletion_of_the_mined_table.py +1 -0
- PyFunceble/data/alembic/postgresql/versions/a32ac5d66eee_initial_version.py +1 -0
- PyFunceble/query/collection.py +97 -7
- PyFunceble/query/requests/adapter/https.py +6 -6
- PyFunceble/query/whois/converter/digit2digits.py +1 -0
- PyFunceble/storage.py +4 -2
- {PyFunceble_dev-4.2.7.dist-info → PyFunceble_dev-4.2.9.dist-info}/METADATA +45 -45
- {PyFunceble_dev-4.2.7.dist-info → PyFunceble_dev-4.2.9.dist-info}/RECORD +46 -46
- {PyFunceble_dev-4.2.7.dist-info → PyFunceble_dev-4.2.9.dist-info}/WHEEL +1 -1
- {PyFunceble_dev-4.2.7.dist-info → PyFunceble_dev-4.2.9.dist-info}/LICENSE +0 -0
- {PyFunceble_dev-4.2.7.dist-info → PyFunceble_dev-4.2.9.dist-info}/entry_points.txt +0 -0
- {PyFunceble_dev-4.2.7.dist-info → PyFunceble_dev-4.2.9.dist-info}/top_level.txt +0 -0
@@ -76,7 +76,6 @@ from PyFunceble.checker.syntax.domain import DomainSyntaxChecker
|
|
76
76
|
from PyFunceble.checker.syntax.ip import IPSyntaxChecker
|
77
77
|
from PyFunceble.checker.syntax.url import URLSyntaxChecker
|
78
78
|
from PyFunceble.converter.url2netloc import Url2Netloc
|
79
|
-
from PyFunceble.helpers.regex import RegexHelper
|
80
79
|
from PyFunceble.query.dns.query_tool import DNSQueryTool
|
81
80
|
from PyFunceble.query.http_status_code import HTTPStatusCode
|
82
81
|
from PyFunceble.query.netinfo.address import AddressInfo
|
@@ -919,12 +918,7 @@ class AvailabilityCheckerBase(CheckerBase):
|
|
919
918
|
if from_domain_test and self.status.url_syntax:
|
920
919
|
return self
|
921
920
|
|
922
|
-
if not self.status.url_syntax and not
|
923
|
-
self.idna_subject, return_match=False
|
924
|
-
):
|
925
|
-
# The regex is there because while testing for domain, sometime we
|
926
|
-
# may see something like mailto:xxx@yyy.de
|
927
|
-
|
921
|
+
if not self.status.url_syntax and not self.idna_subject.startswith("http"):
|
928
922
|
self.http_status_code_query_tool.set_subject(
|
929
923
|
f"http://{self.idna_subject}:80"
|
930
924
|
)
|
@@ -50,7 +50,6 @@ License:
|
|
50
50
|
limitations under the License.
|
51
51
|
"""
|
52
52
|
|
53
|
-
|
54
53
|
import functools
|
55
54
|
import socket
|
56
55
|
from typing import Callable, Dict, List, Optional, Union
|
@@ -423,7 +422,7 @@ class ExtraRuleHandlerBase:
|
|
423
422
|
of the given one.
|
424
423
|
"""
|
425
424
|
|
426
|
-
if not isinstance(status_code, (list, tuple)):
|
425
|
+
if not isinstance(status_code, (list, tuple, set)):
|
427
426
|
status_code = [status_code]
|
428
427
|
|
429
428
|
if any(self.status.http_status_code == x for x in status_code):
|
@@ -78,7 +78,7 @@ class ExtraRulesHandler(ExtraRuleHandlerBase):
|
|
78
78
|
def __init__(self, status: Optional[AvailabilityCheckerStatus] = None) -> None:
|
79
79
|
self.regex_active2inactive = {
|
80
80
|
r"\.000webhostapp\.com": [
|
81
|
-
(self.switch_to_down_if_status_code, 410),
|
81
|
+
(self.switch_to_down_if_status_code, {410, 424}),
|
82
82
|
],
|
83
83
|
r"\.24\.eu$": [(self.switch_to_down_if_status_code, 503)],
|
84
84
|
r"\.altervista\.org$": [(self.switch_to_down_if_status_code, 403)],
|
@@ -65,8 +65,12 @@ class SecondLvlDomainSyntaxChecker(DomainSyntaxCheckerBase):
|
|
65
65
|
"""
|
66
66
|
|
67
67
|
# pylint: disable=line-too-long
|
68
|
-
REGEX_VALID_DOMAIN: str =
|
69
|
-
|
68
|
+
REGEX_VALID_DOMAIN: str = (
|
69
|
+
r"^(?=.{0,253}$)(([a-z0-9][a-z0-9-]{0,61}[a-z0-9]|[a-z0-9])\.)+((?=.*[^0-9])([a-z0-9][a-z0-9-]{0,61}[a-z0-9](?:\.)?|[a-z0-9](?:\.)?))$"
|
70
|
+
)
|
71
|
+
REGEX_VALID_RELAXED_DOMAIN: str = (
|
72
|
+
r"^(?=.{0,253}$)(([a-z0-9][a-z0-9_-]{0,61}[a-z0-9_-]|[a-z0-9])\.)+((?=.*[^0-9])([a-z0-9][a-z0-9-]{0,61}[a-z0-9](?:\.)?|[a-z0-9](?:\.)?))$"
|
73
|
+
)
|
70
74
|
|
71
75
|
last_point_index: Optional[int] = None
|
72
76
|
"""
|
@@ -63,7 +63,9 @@ class SubDomainSyntaxChecker(DomainSyntaxCheckerBase):
|
|
63
63
|
"""
|
64
64
|
|
65
65
|
# pylint: disable=line-too-long
|
66
|
-
REGEX_VALID_SUBDOMAIN: str =
|
66
|
+
REGEX_VALID_SUBDOMAIN: str = (
|
67
|
+
r"^(?=.{0,253}$)(([a-z0-9_][a-z0-9-_]{0,61}[a-z0-9_-]|[a-z0-9])\.)+((?=.*)([a-z0-9][a-z0-9-]{0,61}[a-z0-9](?:\.)?|[a-z0-9](?:\.)?))$"
|
68
|
+
)
|
67
69
|
|
68
70
|
@DomainSyntaxCheckerBase.ensure_subject_is_given
|
69
71
|
def is_valid(self) -> bool:
|
PyFunceble/checker/syntax/url.py
CHANGED
@@ -266,9 +266,9 @@ class CredentialLoader:
|
|
266
266
|
# We directly share the credential object into the DBSession object.
|
267
267
|
# This will let us use the DBSession without having to think about
|
268
268
|
# any other headache.
|
269
|
-
self.credential = (
|
270
|
-
|
271
|
-
)
|
269
|
+
self.credential = PyFunceble.cli.factory.DBSession.credential = (
|
270
|
+
self.DB_TYPE2OBJ[self.db_type]()
|
271
|
+
)
|
272
272
|
|
273
273
|
env_var_helper = EnvironmentVariableHelper(
|
274
274
|
env_file_path=self.credential.get_dot_env_file()
|
PyFunceble/cli/file_preloader.py
CHANGED
@@ -481,9 +481,9 @@ class FilePreloader:
|
|
481
481
|
raise exception
|
482
482
|
|
483
483
|
if not broken:
|
484
|
-
self.__description[self.__matching_index][
|
485
|
-
"
|
486
|
-
|
484
|
+
self.__description[self.__matching_index]["previous_hash"] = (
|
485
|
+
self.__description[self.__matching_index]["hash"]
|
486
|
+
)
|
487
487
|
|
488
488
|
self.__save_description()
|
489
489
|
|
PyFunceble/cli/migrators/base.py
CHANGED
@@ -115,9 +115,9 @@ class WorkerBase(multiprocessing.Process):
|
|
115
115
|
self.input_queue = self._params["input_queue"] = input_queue
|
116
116
|
self.output_queue = self._params["output_queue"] = output_queue
|
117
117
|
|
118
|
-
self.continuous_integration = self._params[
|
119
|
-
|
120
|
-
|
118
|
+
self.continuous_integration = self._params["continuous_integration"] = (
|
119
|
+
continuous_integration
|
120
|
+
)
|
121
121
|
|
122
122
|
self.global_exit_event = self._params["global_exit_event"] = global_exit_event
|
123
123
|
self.exit_it = multiprocessing.Event()
|
@@ -50,7 +50,6 @@ License:
|
|
50
50
|
limitations under the License.
|
51
51
|
"""
|
52
52
|
|
53
|
-
|
54
53
|
import copy
|
55
54
|
import functools
|
56
55
|
import os
|
@@ -516,9 +515,9 @@ class ProductionPrep:
|
|
516
515
|
if to_append not in self.version_file_content["deprecated"]:
|
517
516
|
self.version_file_content["deprecated"].append(to_append)
|
518
517
|
|
519
|
-
self.version_file_content[
|
520
|
-
|
521
|
-
|
518
|
+
self.version_file_content["current_version"] = (
|
519
|
+
PyFunceble.storage.PROJECT_VERSION
|
520
|
+
)
|
522
521
|
|
523
522
|
self.dict_helper.set_subject(self.version_file_content).to_yaml_file(
|
524
523
|
self.VERSION_FILE_PATH
|
PyFunceble/cli/storage.py
CHANGED
@@ -253,9 +253,11 @@ UNIVERSAL_OUTPUTS: dict = {
|
|
253
253
|
}
|
254
254
|
|
255
255
|
OUTPUTS: Optional[Box] = Box(
|
256
|
-
|
257
|
-
|
258
|
-
|
256
|
+
(
|
257
|
+
Merge(UNIX_OUTPUTS).into(UNIVERSAL_OUTPUTS)
|
258
|
+
if PlatformUtility.is_unix()
|
259
|
+
else Merge(WIN_OUTPUTS).into(UNIVERSAL_OUTPUTS)
|
260
|
+
),
|
259
261
|
frozen_box=True,
|
260
262
|
)
|
261
263
|
|
PyFunceble/cli/utils/testing.py
CHANGED
@@ -232,9 +232,7 @@ def get_subjects_from_line(
|
|
232
232
|
if cidr2subject is None:
|
233
233
|
cidr2subject = CIDR2Subject()
|
234
234
|
|
235
|
-
adblock_inputline2subject.aggressive = (
|
236
|
-
wildcard2subject.aggressive
|
237
|
-
) = (
|
235
|
+
adblock_inputline2subject.aggressive = wildcard2subject.aggressive = (
|
238
236
|
rpz_inputline2subject.aggressive
|
239
237
|
) = inputline2subject.aggressive = url2netloc.aggressive = bool(
|
240
238
|
PyFunceble.storage.CONFIGURATION.cli_decoding.aggressive
|
PyFunceble/query/collection.py
CHANGED
@@ -88,6 +88,7 @@ class CollectionQueryTool:
|
|
88
88
|
|
89
89
|
STD_URL_BASE: str = "http://localhost:8001"
|
90
90
|
STD_PREFERRED_STATUS_ORIGIN: str = "frequent"
|
91
|
+
STD_TIMEOUT: float = 5.0
|
91
92
|
|
92
93
|
_token: Optional[str] = None
|
93
94
|
"""
|
@@ -109,6 +110,11 @@ class CollectionQueryTool:
|
|
109
110
|
Whether we are working with the modern or legacy API.
|
110
111
|
"""
|
111
112
|
|
113
|
+
_timeout: float = 5.0
|
114
|
+
"""
|
115
|
+
The timeout to use while communicating with the API.
|
116
|
+
"""
|
117
|
+
|
112
118
|
session: Optional[requests.Session] = None
|
113
119
|
|
114
120
|
def __init__(
|
@@ -117,6 +123,7 @@ class CollectionQueryTool:
|
|
117
123
|
token: Optional[str] = None,
|
118
124
|
url_base: Optional[str] = None,
|
119
125
|
preferred_status_origin: Optional[str] = None,
|
126
|
+
timeout: Optional[float] = None,
|
120
127
|
) -> None:
|
121
128
|
if token is not None:
|
122
129
|
self.token = token
|
@@ -135,6 +142,11 @@ class CollectionQueryTool:
|
|
135
142
|
else:
|
136
143
|
self.guess_and_set_preferred_status_origin()
|
137
144
|
|
145
|
+
if timeout is not None:
|
146
|
+
self.timeout = timeout
|
147
|
+
else:
|
148
|
+
self.guess_and_set_timeout()
|
149
|
+
|
138
150
|
self.session = requests.Session()
|
139
151
|
self.session.headers.update(
|
140
152
|
{
|
@@ -283,6 +295,43 @@ class CollectionQueryTool:
|
|
283
295
|
|
284
296
|
return self
|
285
297
|
|
298
|
+
@property
|
299
|
+
def timeout(self) -> float:
|
300
|
+
"""
|
301
|
+
Provides the value of the :code:`_timeout` attribute.
|
302
|
+
"""
|
303
|
+
|
304
|
+
return self._timeout
|
305
|
+
|
306
|
+
@timeout.setter
|
307
|
+
def timeout(self, value: float) -> None:
|
308
|
+
"""
|
309
|
+
Sets the value of the :code:`_timeout` attribute.
|
310
|
+
|
311
|
+
:param value:
|
312
|
+
The value to set.
|
313
|
+
|
314
|
+
:raise TypeError:
|
315
|
+
When the given :code:`value` is not a :py:class:`float`.
|
316
|
+
"""
|
317
|
+
|
318
|
+
if not isinstance(value, (int, float)):
|
319
|
+
raise TypeError(f"<value> should be {float}, {type(value)} given.")
|
320
|
+
|
321
|
+
self._timeout = value
|
322
|
+
|
323
|
+
def set_timeout(self, value: float) -> "CollectionQueryTool":
|
324
|
+
"""
|
325
|
+
Sets the value of the :code:`_timeout` attribute.
|
326
|
+
|
327
|
+
:param value:
|
328
|
+
The value to set.
|
329
|
+
"""
|
330
|
+
|
331
|
+
self.timeout = value
|
332
|
+
|
333
|
+
return self
|
334
|
+
|
286
335
|
def guess_and_set_url_base(self) -> "CollectionQueryTool":
|
287
336
|
"""
|
288
337
|
Try to guess the URL base to work with.
|
@@ -307,16 +356,22 @@ class CollectionQueryTool:
|
|
307
356
|
Try to guess if we are working with a legacy version.
|
308
357
|
"""
|
309
358
|
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
359
|
+
if self.token:
|
360
|
+
try:
|
361
|
+
response = self.session.get(
|
362
|
+
f"{self.url_base}/v1/stats/subject",
|
363
|
+
timeout=self.timeout,
|
364
|
+
)
|
314
365
|
|
315
|
-
|
366
|
+
response.raise_for_status()
|
316
367
|
|
368
|
+
self.is_modern_api = False
|
369
|
+
except (requests.RequestException, json.decoder.JSONDecodeError):
|
370
|
+
self.is_modern_api = True
|
371
|
+
else:
|
317
372
|
self.is_modern_api = False
|
318
|
-
|
319
|
-
|
373
|
+
|
374
|
+
return self
|
320
375
|
|
321
376
|
@property
|
322
377
|
def preferred_status_origin(self) -> Optional[str]:
|
@@ -380,6 +435,18 @@ class CollectionQueryTool:
|
|
380
435
|
|
381
436
|
return self
|
382
437
|
|
438
|
+
def guess_and_set_timeout(self) -> "CollectionQueryTool":
|
439
|
+
"""
|
440
|
+
Try to guess the timeout to use.
|
441
|
+
"""
|
442
|
+
|
443
|
+
if PyFunceble.facility.ConfigLoader.is_already_loaded():
|
444
|
+
self.timeout = PyFunceble.storage.CONFIGURATION.lookup.timeout
|
445
|
+
else:
|
446
|
+
self.timeout = self.STD_TIMEOUT
|
447
|
+
|
448
|
+
return self
|
449
|
+
|
383
450
|
def ensure_is_modern_api_is_set(func): # pylint: disable=no-self-argument
|
384
451
|
"""
|
385
452
|
Ensures that the :code:`is_modern_api` attribute is set before running
|
@@ -426,6 +493,7 @@ class CollectionQueryTool:
|
|
426
493
|
response = self.session.post(
|
427
494
|
url,
|
428
495
|
json={"subject": subject},
|
496
|
+
timeout=self.timeout,
|
429
497
|
)
|
430
498
|
|
431
499
|
response_json = response.json()
|
@@ -574,11 +642,26 @@ class CollectionQueryTool:
|
|
574
642
|
response = self.session.post(
|
575
643
|
url,
|
576
644
|
json=data,
|
645
|
+
timeout=self.timeout,
|
646
|
+
)
|
647
|
+
elif isinstance(
|
648
|
+
data,
|
649
|
+
(
|
650
|
+
AvailabilityCheckerStatus,
|
651
|
+
SyntaxCheckerStatus,
|
652
|
+
ReputationCheckerStatus,
|
653
|
+
),
|
654
|
+
):
|
655
|
+
response = self.session.post(
|
656
|
+
url,
|
657
|
+
json=data.to_dict(),
|
658
|
+
timeout=self.timeout,
|
577
659
|
)
|
578
660
|
else:
|
579
661
|
response = self.session.post(
|
580
662
|
url,
|
581
663
|
data=data,
|
664
|
+
timeout=self.timeout,
|
582
665
|
)
|
583
666
|
|
584
667
|
response_json = response.json()
|
@@ -622,6 +705,12 @@ class CollectionQueryTool:
|
|
622
705
|
if not self.token:
|
623
706
|
return None
|
624
707
|
|
708
|
+
if isinstance(
|
709
|
+
data,
|
710
|
+
(AvailabilityCheckerStatus, SyntaxCheckerStatus, ReputationCheckerStatus),
|
711
|
+
):
|
712
|
+
data = data.to_dict()
|
713
|
+
|
625
714
|
if not isinstance(data, dict): # pragma: no cover ## Should never happen
|
626
715
|
raise TypeError(f"<data> should be {dict}, {type(data)} given.")
|
627
716
|
|
@@ -633,6 +722,7 @@ class CollectionQueryTool:
|
|
633
722
|
response = self.session.post(
|
634
723
|
url,
|
635
724
|
json=data,
|
725
|
+
timeout=self.timeout,
|
636
726
|
)
|
637
727
|
|
638
728
|
response_json = response.json()
|
@@ -113,12 +113,12 @@ class RequestHTTPSAdapter(RequestAdapterBase):
|
|
113
113
|
)
|
114
114
|
|
115
115
|
if parsed_url.scheme == "https":
|
116
|
-
self.poolmanager.connection_pool_kw[
|
117
|
-
|
118
|
-
|
119
|
-
self.poolmanager.connection_pool_kw[
|
120
|
-
|
121
|
-
|
116
|
+
self.poolmanager.connection_pool_kw["server_hostname"] = (
|
117
|
+
parsed_url.hostname
|
118
|
+
)
|
119
|
+
self.poolmanager.connection_pool_kw["assert_hostname"] = (
|
120
|
+
parsed_url.hostname
|
121
|
+
)
|
122
122
|
|
123
123
|
# Ensure that the Hosts header is present. Otherwise, connection might
|
124
124
|
# not work.
|
PyFunceble/storage.py
CHANGED
@@ -61,7 +61,7 @@ from dotenv import load_dotenv
|
|
61
61
|
from PyFunceble.storage_facility import get_config_directory
|
62
62
|
|
63
63
|
PROJECT_NAME: str = "PyFunceble"
|
64
|
-
PROJECT_VERSION: str = "4.2.
|
64
|
+
PROJECT_VERSION: str = "4.2.9.dev (Blue Duckling: Ixora)"
|
65
65
|
|
66
66
|
DISTRIBUTED_CONFIGURATION_FILENAME: str = ".PyFunceble_production.yaml"
|
67
67
|
DISTRIBUTED_DIR_STRUCTURE_FILENAME: str = "dir_structure_production.json"
|
@@ -79,7 +79,9 @@ IPV4_REPUTATION_FILENAME: str = "ipv4_reputation.data"
|
|
79
79
|
IANA_DUMP_LINK: str = (
|
80
80
|
"https://raw.githubusercontent.com/PyFunceble/iana/master/iana-domains-db.json"
|
81
81
|
)
|
82
|
-
PUBLIC_SUFFIX_DUMP_LINK: str =
|
82
|
+
PUBLIC_SUFFIX_DUMP_LINK: str = (
|
83
|
+
"https://raw.githubusercontent.com/PyFunceble/public-suffix/master/public-suffix.json"
|
84
|
+
)
|
83
85
|
USER_AGENT_DUMP_LINK: str = (
|
84
86
|
"https://raw.githubusercontent.com/PyFunceble/user_agents/master/user_agents.json"
|
85
87
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: PyFunceble-dev
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.9
|
4
4
|
Summary: The tool to check the availability or syntax of domain, IP or URL.
|
5
5
|
Home-page: https://github.com/funilrys/PyFunceble
|
6
6
|
Author: funilrys
|
@@ -22,73 +22,73 @@ Classifier: License :: OSI Approved
|
|
22
22
|
Requires-Python: >=3.8, <4
|
23
23
|
License-File: LICENSE
|
24
24
|
Requires-Dist: inflection
|
25
|
+
Requires-Dist: setuptools >=65.5.1
|
26
|
+
Requires-Dist: dnspython[doh] ~=2.6.0
|
27
|
+
Requires-Dist: PyYAML
|
28
|
+
Requires-Dist: SQLAlchemy ~=2.0
|
29
|
+
Requires-Dist: cryptography ~=42.0
|
25
30
|
Requires-Dist: domain2idna ~=1.12.0
|
26
|
-
Requires-Dist: python-dotenv
|
27
|
-
Requires-Dist: dnspython[doh] ~=2.0.0
|
28
|
-
Requires-Dist: PyMySQL
|
29
|
-
Requires-Dist: python-box[all] ~=6.0.0
|
30
|
-
Requires-Dist: requests[socks] <3
|
31
|
-
Requires-Dist: cryptography >=3.3.2
|
32
31
|
Requires-Dist: packaging
|
33
|
-
Requires-Dist:
|
32
|
+
Requires-Dist: python-box[all] ~=6.0.0
|
33
|
+
Requires-Dist: colorama
|
34
|
+
Requires-Dist: python-dotenv
|
34
35
|
Requires-Dist: shtab
|
36
|
+
Requires-Dist: requests[socks] <3
|
37
|
+
Requires-Dist: PyMySQL
|
35
38
|
Requires-Dist: alembic
|
36
|
-
Requires-Dist: setuptools >=65.5.1
|
37
|
-
Requires-Dist: SQLAlchemy ~=2.0
|
38
|
-
Requires-Dist: colorama
|
39
39
|
Provides-Extra: dev
|
40
|
-
Requires-Dist: flake8 ; extra == 'dev'
|
41
|
-
Requires-Dist: isort ; extra == 'dev'
|
42
40
|
Requires-Dist: pylint ; extra == 'dev'
|
43
41
|
Requires-Dist: black ; extra == 'dev'
|
42
|
+
Requires-Dist: flake8 ; extra == 'dev'
|
43
|
+
Requires-Dist: isort ; extra == 'dev'
|
44
44
|
Provides-Extra: docs
|
45
|
-
Requires-Dist: alabaster <0.8,>=0.7 ; extra == 'docs'
|
46
|
-
Requires-Dist: sphinx >=3.4.3 ; extra == 'docs'
|
47
|
-
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
|
48
45
|
Requires-Dist: Pygments >=2.0 ; extra == 'docs'
|
46
|
+
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
|
47
|
+
Requires-Dist: sphinx >=3.4.3 ; extra == 'docs'
|
48
|
+
Requires-Dist: alabaster <0.8,>=0.7 ; extra == 'docs'
|
49
49
|
Provides-Extra: full
|
50
|
-
Requires-Dist:
|
51
|
-
Requires-Dist:
|
52
|
-
Requires-Dist: sphinx-rtd-theme ; extra == 'full'
|
53
|
-
Requires-Dist: isort ; extra == 'full'
|
54
|
-
Requires-Dist: black ; extra == 'full'
|
55
|
-
Requires-Dist: flake8 ; extra == 'full'
|
56
|
-
Requires-Dist: tox ; extra == 'full'
|
57
|
-
Requires-Dist: dnspython[doh] ~=2.0.0 ; extra == 'full'
|
58
|
-
Requires-Dist: python-box[all] ~=6.0.0 ; extra == 'full'
|
59
|
-
Requires-Dist: cryptography >=3.3.2 ; extra == 'full'
|
50
|
+
Requires-Dist: inflection ; extra == 'full'
|
51
|
+
Requires-Dist: domain2idna ~=1.12.0 ; extra == 'full'
|
60
52
|
Requires-Dist: packaging ; extra == 'full'
|
61
|
-
Requires-Dist: coverage ; extra == 'full'
|
62
|
-
Requires-Dist: setuptools >=65.5.1 ; extra == 'full'
|
63
|
-
Requires-Dist: alabaster <0.8,>=0.7 ; extra == 'full'
|
64
53
|
Requires-Dist: colorama ; extra == 'full'
|
54
|
+
Requires-Dist: alabaster <0.8,>=0.7 ; extra == 'full'
|
65
55
|
Requires-Dist: pylint ; extra == 'full'
|
66
|
-
Requires-Dist:
|
67
|
-
Requires-Dist:
|
56
|
+
Requires-Dist: sphinx >=3.4.3 ; extra == 'full'
|
57
|
+
Requires-Dist: cryptography ~=42.0 ; extra == 'full'
|
68
58
|
Requires-Dist: requests[socks] <3 ; extra == 'full'
|
59
|
+
Requires-Dist: PyMySQL ; extra == 'full'
|
60
|
+
Requires-Dist: alembic ; extra == 'full'
|
61
|
+
Requires-Dist: isort ; extra == 'full'
|
62
|
+
Requires-Dist: setuptools >=65.5.1 ; extra == 'full'
|
63
|
+
Requires-Dist: PyYAML ; extra == 'full'
|
69
64
|
Requires-Dist: SQLAlchemy ~=2.0 ; extra == 'full'
|
70
|
-
Requires-Dist:
|
65
|
+
Requires-Dist: black ; extra == 'full'
|
66
|
+
Requires-Dist: sphinx-rtd-theme ; extra == 'full'
|
71
67
|
Requires-Dist: Pygments >=2.0 ; extra == 'full'
|
72
|
-
Requires-Dist:
|
68
|
+
Requires-Dist: coverage ; extra == 'full'
|
69
|
+
Requires-Dist: dnspython[doh] ~=2.6.0 ; extra == 'full'
|
70
|
+
Requires-Dist: tox ; extra == 'full'
|
71
|
+
Requires-Dist: flake8 ; extra == 'full'
|
72
|
+
Requires-Dist: python-box[all] ~=6.0.0 ; extra == 'full'
|
73
|
+
Requires-Dist: python-dotenv ; extra == 'full'
|
73
74
|
Requires-Dist: shtab ; extra == 'full'
|
74
|
-
Requires-Dist: PyYAML ; extra == 'full'
|
75
75
|
Provides-Extra: psql
|
76
76
|
Requires-Dist: inflection ; extra == 'psql'
|
77
|
-
Requires-Dist:
|
78
|
-
Requires-Dist:
|
77
|
+
Requires-Dist: setuptools >=65.5.1 ; extra == 'psql'
|
78
|
+
Requires-Dist: dnspython[doh] ~=2.6.0 ; extra == 'psql'
|
79
|
+
Requires-Dist: PyYAML ; extra == 'psql'
|
79
80
|
Requires-Dist: psycopg2 ; extra == 'psql'
|
80
|
-
Requires-Dist:
|
81
|
-
Requires-Dist:
|
82
|
-
Requires-Dist:
|
83
|
-
Requires-Dist: requests[socks] <3 ; extra == 'psql'
|
84
|
-
Requires-Dist: cryptography >=3.3.2 ; extra == 'psql'
|
81
|
+
Requires-Dist: SQLAlchemy ~=2.0 ; extra == 'psql'
|
82
|
+
Requires-Dist: cryptography ~=42.0 ; extra == 'psql'
|
83
|
+
Requires-Dist: domain2idna ~=1.12.0 ; extra == 'psql'
|
85
84
|
Requires-Dist: packaging ; extra == 'psql'
|
86
|
-
Requires-Dist:
|
85
|
+
Requires-Dist: python-box[all] ~=6.0.0 ; extra == 'psql'
|
86
|
+
Requires-Dist: colorama ; extra == 'psql'
|
87
|
+
Requires-Dist: python-dotenv ; extra == 'psql'
|
87
88
|
Requires-Dist: shtab ; extra == 'psql'
|
89
|
+
Requires-Dist: requests[socks] <3 ; extra == 'psql'
|
90
|
+
Requires-Dist: PyMySQL ; extra == 'psql'
|
88
91
|
Requires-Dist: alembic ; extra == 'psql'
|
89
|
-
Requires-Dist: setuptools >=65.5.1 ; extra == 'psql'
|
90
|
-
Requires-Dist: SQLAlchemy ~=2.0 ; extra == 'psql'
|
91
|
-
Requires-Dist: colorama ; extra == 'psql'
|
92
92
|
Provides-Extra: test
|
93
93
|
Requires-Dist: tox ; extra == 'test'
|
94
94
|
Requires-Dist: coverage ; extra == 'test'
|
@@ -4,7 +4,7 @@ PyFunceble/facility.py,sha256=zwQ-5JFtBr-n0uahkCLIheXNADX34A3uzVcEdFTWT8o,2640
|
|
4
4
|
PyFunceble/factory.py,sha256=EIMObS1gaWpGamlqIoLoHAg9xpcXdfKEnDGe31O9WIw,2590
|
5
5
|
PyFunceble/logger.py,sha256=8ex6ccGeV8sXtF6MMZsIfCAv2ZJmwKrvRQZd_4cIDCM,16829
|
6
6
|
PyFunceble/sessions.py,sha256=lmqepbwtCCU8KVBNZ-XBo6kFFh5cpCKPgT_GegiLhk8,2582
|
7
|
-
PyFunceble/storage.py,sha256=
|
7
|
+
PyFunceble/storage.py,sha256=Rerw_MC_YtExRXtCzPU7VehQsZCURoE6NvLr5S7VrD0,6298
|
8
8
|
PyFunceble/storage_facility.py,sha256=dnjRkVbH3kFtbWlX7evPyNT6rfo7nGCd4oNC9AajWtY,4833
|
9
9
|
PyFunceble/checker/__init__.py,sha256=aiQBstQTw1nXwZ3IGxf_k3CofRbbtFB4WAu_ezvmi_0,2444
|
10
10
|
PyFunceble/checker/base.py,sha256=iFNezdMIpfx6kwEaaDzniP7erPEbHWsBsIIMG96MAEY,13677
|
@@ -12,28 +12,28 @@ PyFunceble/checker/complex_json_encoder.py,sha256=BptyN_NI2d-jeSiP41ZroapOoup5QY
|
|
12
12
|
PyFunceble/checker/params_base.py,sha256=c1n76_VKSDqL0Oj7yWCz7-KhB3AbdcHqid56dklSBk0,3297
|
13
13
|
PyFunceble/checker/status_base.py,sha256=GmjDp62Ax6uGABaiRkw607DVbc9jDgljcx0JlokBRrA,3598
|
14
14
|
PyFunceble/checker/availability/__init__.py,sha256=OF82eWYPW8u4LxQrcU45Twg8z2pdG-BmSLVmHUWvEos,2489
|
15
|
-
PyFunceble/checker/availability/base.py,sha256=
|
16
|
-
PyFunceble/checker/availability/domain.py,sha256=
|
15
|
+
PyFunceble/checker/availability/base.py,sha256=AO4AHsRZOSOOMDk99bEsHD-CQ6HEP7sx_RO0UKdDnyA,39105
|
16
|
+
PyFunceble/checker/availability/domain.py,sha256=42at5_HdE3cJXKStJuxoMLWDR3h1Gf30154yL6I3rmI,7474
|
17
17
|
PyFunceble/checker/availability/domain_and_ip.py,sha256=6vNzknSiQ08WYAX_cUrA2EyamcnOsC2-3M1dT0EECLE,6603
|
18
|
-
PyFunceble/checker/availability/ip.py,sha256=
|
18
|
+
PyFunceble/checker/availability/ip.py,sha256=z3kbNPMwOlTPWPFEqZ4NZRhu-2M1OKjO82EdUt022fk,7065
|
19
19
|
PyFunceble/checker/availability/params.py,sha256=BrOdcJqRddlzmQEf-exbKXUByBVzsk_asEF6iqL_liw,3218
|
20
20
|
PyFunceble/checker/availability/status.py,sha256=_bamU51QnvJTYHXszpFBvnNZ4Rj1YTQAlMrvNpmk_34,5242
|
21
|
-
PyFunceble/checker/availability/url.py,sha256=
|
21
|
+
PyFunceble/checker/availability/url.py,sha256=B-iSe62vRHoYvmoZ9vpedFDc7lUEpI_uT6g2kF5XJ2M,11350
|
22
22
|
PyFunceble/checker/availability/extras/__init__.py,sha256=NuepT1O_u6iL2g-FBXuRbRCZ59CBPMAT3mkNFYldb4E,2491
|
23
|
-
PyFunceble/checker/availability/extras/base.py,sha256=
|
23
|
+
PyFunceble/checker/availability/extras/base.py,sha256=Jc99iCyvCUGjVaiOrzp4UuNYC_x9AwR1UpZpz76LAxk,15583
|
24
24
|
PyFunceble/checker/availability/extras/dns.py,sha256=k1uXDAcc3nB1WgwndoDBbeUt4K6YuPgf_7u2BJG4zRg,6844
|
25
25
|
PyFunceble/checker/availability/extras/etoxic.py,sha256=In043gEMKfHuPsvBghR9tAiOakyuvcx3bqxg86yEhMs,10096
|
26
26
|
PyFunceble/checker/availability/extras/parked.py,sha256=ZQK6ElWhk4sjth-xI9NYhf7vKzqLgOJxro4p8gcJgtU,5312
|
27
|
-
PyFunceble/checker/availability/extras/rules.py,sha256=
|
27
|
+
PyFunceble/checker/availability/extras/rules.py,sha256=qogfY2cnvDeCGhTBbFyCtsVHli4Sd2ocQDKLLwwab-k,9866
|
28
28
|
PyFunceble/checker/availability/extras/subject_switch.py,sha256=u4dd1bhI-D4XPPa7VGLaVgQ7enJAS8Dg2lMgAx8kOFY,5891
|
29
29
|
PyFunceble/checker/reputation/__init__.py,sha256=R1rEkB6Nk7wapO3093aWChkgUelWPh7HSqDRsa2FxJU,2488
|
30
|
-
PyFunceble/checker/reputation/base.py,sha256=
|
31
|
-
PyFunceble/checker/reputation/domain.py,sha256=
|
30
|
+
PyFunceble/checker/reputation/base.py,sha256=leJWhVVpkFlnxW1rBjUcYBl0S1yTzIE2j_JMICxplr0,12221
|
31
|
+
PyFunceble/checker/reputation/domain.py,sha256=3LnlkYNuYcjd3MZVrsUfjJnzOh_ceAok793j6k-SrbU,3031
|
32
32
|
PyFunceble/checker/reputation/domain_and_ip.py,sha256=18JGtFgpnQM5Dg1gv1_K1pOgIqVEvIaiSRGe6MXYmUE,4184
|
33
|
-
PyFunceble/checker/reputation/ip.py,sha256=
|
33
|
+
PyFunceble/checker/reputation/ip.py,sha256=eN0-j6Pi4aCk-0gECpvrVScSsVwLcWRw0g07peNah_w,3358
|
34
34
|
PyFunceble/checker/reputation/params.py,sha256=EYFb51YDMqAdGW59GW1oQkx9hU4IP-WB4EcwaESu8fI,2823
|
35
35
|
PyFunceble/checker/reputation/status.py,sha256=dt-rHP386I0DkkA23b-ayfq10NsOUWtOX0R_pI6Yk6s,4069
|
36
|
-
PyFunceble/checker/reputation/url.py,sha256=
|
36
|
+
PyFunceble/checker/reputation/url.py,sha256=PlhilgMrzaw2S5tOmC3ODxI2Iz87wm42_QmVlKTKStk,4119
|
37
37
|
PyFunceble/checker/syntax/__init__.py,sha256=qmORp_pZqgoKIG3VJGc172zy5M2Yy8HQTjd1R_MLDpo,2484
|
38
38
|
PyFunceble/checker/syntax/base.py,sha256=NxLwI9nn7LEhvAJB3ix18SLznR9cxOel0iUrfHeVtNg,4421
|
39
39
|
PyFunceble/checker/syntax/domain.py,sha256=tOnfrA69bQLPrccSnzEoJtZ6VbgegygC8R25FpDyiSo,4800
|
@@ -43,19 +43,19 @@ PyFunceble/checker/syntax/ip.py,sha256=I0RPfntENu0uWRjwf-R1ZTBSaJ24FXMTk_OhNChTY
|
|
43
43
|
PyFunceble/checker/syntax/ipv4.py,sha256=xMedr5zzO2z0G4XE7RWR_fhAKBo49PYKqkYig6j6fCc,8065
|
44
44
|
PyFunceble/checker/syntax/ipv6.py,sha256=guwC4AdI1-HlPV4zFc4op7es_uHiyVUi58900ETIX9o,4402
|
45
45
|
PyFunceble/checker/syntax/params.py,sha256=zGoZFfRLi691mPwMiDPniGin9hwIywCwfGOTmIr9M3M,2815
|
46
|
-
PyFunceble/checker/syntax/second_lvl_domain.py,sha256=
|
47
|
-
PyFunceble/checker/syntax/status.py,sha256=
|
48
|
-
PyFunceble/checker/syntax/subdomain.py,sha256=
|
49
|
-
PyFunceble/checker/syntax/url.py,sha256=
|
46
|
+
PyFunceble/checker/syntax/second_lvl_domain.py,sha256=7lHzpTsE2JSux9rCQEuK1Dtpr9qY769_qeNtyvEbqzs,4738
|
47
|
+
PyFunceble/checker/syntax/status.py,sha256=L1o_2RzfxxNCCEWi-PFMqx3Jd5uDGqlfSu4sREkwp0g,3175
|
48
|
+
PyFunceble/checker/syntax/subdomain.py,sha256=87lah9vQRAEE0KzA06vwYN2m-7Cl0VnV2Ad_QHNiHR4,4269
|
49
|
+
PyFunceble/checker/syntax/url.py,sha256=55ZHJ6cNeCa8rtZD-ECkRvA9TKS90OZ6RkCtUCNIIkA,4297
|
50
50
|
PyFunceble/checker/utils/__init__.py,sha256=q0SL8UhcWzpW-ByRgHXhnnUdhJHvJCvQocqzf5r5vSc,2470
|
51
51
|
PyFunceble/checker/utils/whois.py,sha256=ZCzNRiWbxMUY3PE31uGjzZNbp_vTkjhAjByBjHb4rY4,4071
|
52
52
|
PyFunceble/cli/__init__.py,sha256=5Hh8seAvzio4NSC_zWfWNgdwvecCf9y54xQ6jpygsfo,2467
|
53
|
-
PyFunceble/cli/credential_loader.py,sha256=
|
53
|
+
PyFunceble/cli/credential_loader.py,sha256=BETg6mtxclRm_IH98S6k-xzVTrlIGD2nx8H-alNjFQo,10606
|
54
54
|
PyFunceble/cli/execution_time.py,sha256=69X6RF1pYH0TM0Woump0xT0Gm4QrFQGspTPXii_-wyw,7197
|
55
55
|
PyFunceble/cli/facility.py,sha256=SV5HsFeddqKQIuAdBKBR3DTiCk2DHmrWqwvA9OmBZTM,2590
|
56
56
|
PyFunceble/cli/factory.py,sha256=iDy_AkL0YOKsBsnhdqYp7u4xjxiKzbnHbWk1MK8w24I,2584
|
57
|
-
PyFunceble/cli/file_preloader.py,sha256
|
58
|
-
PyFunceble/cli/storage.py,sha256=
|
57
|
+
PyFunceble/cli/file_preloader.py,sha256=-aAFw9n0BWNM2QtEyiYliYMs1h7iHH61_zMAby9FKKE,18292
|
58
|
+
PyFunceble/cli/storage.py,sha256=aK3r9-WTgjk-Ks3Q9ESlCm2dIQj9Ol1lCXgopDquhTQ,11910
|
59
59
|
PyFunceble/cli/storage_facility.py,sha256=e5kg74syMhVepblIDMCYJtmSlBCPMrUnemLTqur094A,3170
|
60
60
|
PyFunceble/cli/continuous_integration/__init__.py,sha256=gw-QNJQJ0ExuuqBljnNAj1zj8sWRDZ1dY4BguJ4s1Z0,2515
|
61
61
|
PyFunceble/cli/continuous_integration/base.py,sha256=Y-xOTL01ry1G6GgjIM6KVCy-pvOrky0pyd33h-UK72o,38948
|
@@ -90,7 +90,7 @@ PyFunceble/cli/filesystem/printer/file.py,sha256=zgrHnqrVDdwJBVSZq7BZFtyqA82yT9O
|
|
90
90
|
PyFunceble/cli/filesystem/printer/stdout.py,sha256=qNXRzwNyN9thwR8709e-FcvAsLe-LiJN3CBL7kKX6gY,7681
|
91
91
|
PyFunceble/cli/migrators/__init__.py,sha256=8YY6QMam9Bkox-FAMIlrglJQTEUVXhjCWFkJ1rLiRac,2452
|
92
92
|
PyFunceble/cli/migrators/alembic.py,sha256=fVhPeWCfpjrOFtuzA8Xqz11Oz88B1CMR93RU2qSuOgg,7523
|
93
|
-
PyFunceble/cli/migrators/base.py,sha256=
|
93
|
+
PyFunceble/cli/migrators/base.py,sha256=3fjp0p9ojimzy1YhnOx0-RxUfzL1BuRLHbNfDKPceWY,3296
|
94
94
|
PyFunceble/cli/migrators/db_base.py,sha256=BU7rw0fqdFh4zMwpICwUgGItXw-k7ObXLMK2mHe6zho,4118
|
95
95
|
PyFunceble/cli/migrators/csv_file/__init__.py,sha256=S1QFwe8P4vGceghP_wgtWvFu9abFL06ly6sac5uf8UM,2457
|
96
96
|
PyFunceble/cli/migrators/csv_file/base.py,sha256=DwhtsT-MqtrXarXYbmNCGyRFaC1g1NFTYhDy3pIW7Ro,5788
|
@@ -120,7 +120,7 @@ PyFunceble/cli/processes/miner.py,sha256=-ZdQKzbW3aInAPsLdsKGwWqFpiFBtkdyBdo2zjg
|
|
120
120
|
PyFunceble/cli/processes/producer.py,sha256=fD5t0Ise6iV9S495v6aDcvroyxtXjsekFxLAuZBP3q8,2741
|
121
121
|
PyFunceble/cli/processes/tester.py,sha256=nUCjUVIz4jXZsVx9WSfPOqi4-OzlqFsVbXupwm8YD-s,2727
|
122
122
|
PyFunceble/cli/processes/workers/__init__.py,sha256=sC7xz1fB399TNYiG5gpDrOCfSSSARqo8sc4CeirUKLA,2458
|
123
|
-
PyFunceble/cli/processes/workers/base.py,sha256=
|
123
|
+
PyFunceble/cli/processes/workers/base.py,sha256=EIhM3YxEGCxdsq1B-Op8c6f2k5OOxmmRmyuzR5qQH5U,13964
|
124
124
|
PyFunceble/cli/processes/workers/chancy_producer.py,sha256=_oDJym-VSs9t8yfsqe28t_sEU76vLsSPAa6OnIgQkmw,4424
|
125
125
|
PyFunceble/cli/processes/workers/chancy_tester.py,sha256=X39S4u9j08KOMfTpw1OD6ZU8MantBXu5FeyD1FNgobY,3640
|
126
126
|
PyFunceble/cli/processes/workers/dir_files_sorter.py,sha256=qbeLcQ6QiSO-eRat2xQF1b038DigSIvzGeux5Aailgg,6012
|
@@ -132,7 +132,7 @@ PyFunceble/cli/processes/workers/producer.py,sha256=O5KsIgpxGeUNH2uHDEo5-K32FkOT
|
|
132
132
|
PyFunceble/cli/processes/workers/tester.py,sha256=1VLbhVeAaN4EE0l3fdD0R69Kv4QTL3i9yXvSHiO1SrM,11751
|
133
133
|
PyFunceble/cli/scripts/__init__.py,sha256=jSHEdUgOBxuhESK-n_unZDV7Vts09LNCNRiSJIe9Fno,2451
|
134
134
|
PyFunceble/cli/scripts/iana.py,sha256=IQAu_TKtL-54Lh2q4ymet6T1faqQmiJXg4hME1Md3PU,9991
|
135
|
-
PyFunceble/cli/scripts/production.py,sha256=
|
135
|
+
PyFunceble/cli/scripts/production.py,sha256=XecxzvXwmSKWxka_6FmVyBKRbuPnH4aHv3wrYk3NyaA,17920
|
136
136
|
PyFunceble/cli/scripts/public_suffix.py,sha256=-xYAQVv2ug_2Uk7-VoEkVyEHqP5Crmj8Cu_YS_3m00Y,6493
|
137
137
|
PyFunceble/cli/system/__init__.py,sha256=4jXK5yT6fDjsbNg5LULnpfJ8G1yM_uP78-OLkPM1Skc,2522
|
138
138
|
PyFunceble/cli/system/base.py,sha256=E3TsC7y0qrL7hhLLAlaUhFWU9etTbOKOuqIrDSCeRqA,4888
|
@@ -142,7 +142,7 @@ PyFunceble/cli/utils/__init__.py,sha256=69PJomADQHaFLgnfTpS7SFTgVkqZiRdvpUKX41nU
|
|
142
142
|
PyFunceble/cli/utils/ascii_logo.py,sha256=Zff57bUS-2GkjAzyv6OEpw8THrolr0rhjjvjepsMgR8,4236
|
143
143
|
PyFunceble/cli/utils/sort.py,sha256=Vi2V4S55hbqP9Mrk_OsYxESKAnKIS6DOFZ7nZXEv7u4,4375
|
144
144
|
PyFunceble/cli/utils/stdout.py,sha256=xxZIpNZpEYyI-9V4hDNRWu8vu_l-SBNdS58YPGYXfJk,5638
|
145
|
-
PyFunceble/cli/utils/testing.py,sha256=
|
145
|
+
PyFunceble/cli/utils/testing.py,sha256=ojMFnRfDyOFXDPSaCRQpLwEZoADkRk0KUmx-Y7kvAnE,10198
|
146
146
|
PyFunceble/cli/utils/version.py,sha256=WNpKsy3Evn0vtY7GioLKogekagVgTK1Yh0jEIaSap4k,13358
|
147
147
|
PyFunceble/config/__init__.py,sha256=e1G8cnfAsOuScjf7X-pejBviIWJBg9yV9AlP8QI30yQ,2468
|
148
148
|
PyFunceble/config/compare.py,sha256=ztMwE9wsHMUw1waGZhuHTmeBezkY-ktBQMUQ0EpbuDk,13047
|
@@ -163,26 +163,26 @@ PyFunceble/data/alembic/__init__.py,sha256=RH6_soNmURAVLi4ywsitVimGqNX02nP8XVo4S
|
|
163
163
|
PyFunceble/data/alembic/mysql/__init__.py,sha256=RH6_soNmURAVLi4ywsitVimGqNX02nP8XVo4SLjrr64,2454
|
164
164
|
PyFunceble/data/alembic/mysql/env.py,sha256=8UhlaEdFE4dTHEU8JIGovGO2d2e9xclTITv9bWHF9Pc,4723
|
165
165
|
PyFunceble/data/alembic/mysql/script.py.mako,sha256=8_xgA-gm_OhehnO7CiIijWgnm00ZlszEHtIHrAYFJl0,494
|
166
|
-
PyFunceble/data/alembic/mysql/versions/35c79626ecb9_fix_some_columns.py,sha256=
|
167
|
-
PyFunceble/data/alembic/mysql/versions/3a4c55a9320d_add_continue_table.py,sha256=
|
168
|
-
PyFunceble/data/alembic/mysql/versions/3d6f4a33cdb2_add_inactive_table.py,sha256=
|
169
|
-
PyFunceble/data/alembic/mysql/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py,sha256=
|
170
|
-
PyFunceble/data/alembic/mysql/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py,sha256=
|
171
|
-
PyFunceble/data/alembic/mysql/versions/6f4729deaf03_delete_inactive_source_column.py,sha256=
|
172
|
-
PyFunceble/data/alembic/mysql/versions/7bcf7fa64ba1_rename_created_to_created_at_and.py,sha256=
|
173
|
-
PyFunceble/data/alembic/mysql/versions/83ada95132bf_delete_the_file_table.py,sha256=
|
174
|
-
PyFunceble/data/alembic/mysql/versions/912bbcb77a6c_add_registrar_column.py,sha256=
|
175
|
-
PyFunceble/data/alembic/mysql/versions/95dc17ddd729_introduction_of_the_session_id_column.py,sha256=
|
166
|
+
PyFunceble/data/alembic/mysql/versions/35c79626ecb9_fix_some_columns.py,sha256=8R9n1wGiCBT1sxg2Zc6Dms_nBQIQEbGLGkKSxMu42h8,1807
|
167
|
+
PyFunceble/data/alembic/mysql/versions/3a4c55a9320d_add_continue_table.py,sha256=Ne5dwHekP51S_C2xZM6wtTOTEqWyAVHd77PsSgfWhvY,1198
|
168
|
+
PyFunceble/data/alembic/mysql/versions/3d6f4a33cdb2_add_inactive_table.py,sha256=72kAaDywwHVSaqgGRV5r3OT_UN9-JlacxIEIWN9cy3Q,1199
|
169
|
+
PyFunceble/data/alembic/mysql/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py,sha256=tjjWS8TOAygCDJ4Zi83BPIP4THiGUMfQ_eJndmg5Eig,1295
|
170
|
+
PyFunceble/data/alembic/mysql/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py,sha256=UMZkndVR768uaQjDIhXCm8mwF_B0MBJ2m0HocYuAQPk,758
|
171
|
+
PyFunceble/data/alembic/mysql/versions/6f4729deaf03_delete_inactive_source_column.py,sha256=zlSP7kxhn2713OUfhSeCq8yBirPIszuNA3lm-AFHjCk,807
|
172
|
+
PyFunceble/data/alembic/mysql/versions/7bcf7fa64ba1_rename_created_to_created_at_and.py,sha256=TAp-osNORf77_7Imot6xOptxO_1_q9tcg8p85eVL3eU,2800
|
173
|
+
PyFunceble/data/alembic/mysql/versions/83ada95132bf_delete_the_file_table.py,sha256=dH10S5_KjzLKgFjBt1CyBpFXUzn4cXm2SRa0KuDFH1A,2182
|
174
|
+
PyFunceble/data/alembic/mysql/versions/912bbcb77a6c_add_registrar_column.py,sha256=TTyWDmLtwZp1ppIAl3Z8n51O8EXJY_L21hz6boDfnrY,731
|
175
|
+
PyFunceble/data/alembic/mysql/versions/95dc17ddd729_introduction_of_the_session_id_column.py,sha256=UaLy3ZVVsGU8Aw-mpsQwR_FeVkXz6G2jijYQK51cvdI,742
|
176
176
|
PyFunceble/data/alembic/mysql/versions/__init__.py,sha256=qDBHGriN6fj02Rczmil26vaSa63sEDeo9j-Nn7zj9dY,2466
|
177
|
-
PyFunceble/data/alembic/mysql/versions/ade87195b0a0_base.py,sha256=
|
178
|
-
PyFunceble/data/alembic/mysql/versions/bef7bcaac3f2_make_id_a_bigint.py,sha256=
|
179
|
-
PyFunceble/data/alembic/mysql/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py,sha256=
|
180
|
-
PyFunceble/data/alembic/mysql/versions/e04e8301d1a2_deletion_of_the_mined_table.py,sha256=
|
177
|
+
PyFunceble/data/alembic/mysql/versions/ade87195b0a0_base.py,sha256=2Ad3H8lihgk7dZI3DLZSLIOGPOiaBCbvpNXrrQvQeJc,4237
|
178
|
+
PyFunceble/data/alembic/mysql/versions/bef7bcaac3f2_make_id_a_bigint.py,sha256=ZIgXf1gC8jVFlwOxwAeXwqbINk2bgbx-eOZCNBc0lKQ,1722
|
179
|
+
PyFunceble/data/alembic/mysql/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py,sha256=wYElzqWvfK6yqliamxSH0c-918jQKUddd9uyLMZOzvg,931
|
180
|
+
PyFunceble/data/alembic/mysql/versions/e04e8301d1a2_deletion_of_the_mined_table.py,sha256=IopWo7QTHfbXLS4acuIRhEuI716cLvqOcTOMm9KoMLQ,2126
|
181
181
|
PyFunceble/data/alembic/postgresql/__init__.py,sha256=RH6_soNmURAVLi4ywsitVimGqNX02nP8XVo4SLjrr64,2454
|
182
182
|
PyFunceble/data/alembic/postgresql/env.py,sha256=8UhlaEdFE4dTHEU8JIGovGO2d2e9xclTITv9bWHF9Pc,4723
|
183
183
|
PyFunceble/data/alembic/postgresql/script.py.mako,sha256=8_xgA-gm_OhehnO7CiIijWgnm00ZlszEHtIHrAYFJl0,494
|
184
184
|
PyFunceble/data/alembic/postgresql/versions/__init__.py,sha256=qDBHGriN6fj02Rczmil26vaSa63sEDeo9j-Nn7zj9dY,2466
|
185
|
-
PyFunceble/data/alembic/postgresql/versions/a32ac5d66eee_initial_version.py,sha256=
|
185
|
+
PyFunceble/data/alembic/postgresql/versions/a32ac5d66eee_initial_version.py,sha256=xJdnoCnHAG1vmt-nBeomuIEDRwUK1Upv1mtkUt1txQM,2487
|
186
186
|
PyFunceble/data/infrastructure/.PyFunceble_production.yaml,sha256=uqUeggBBTmxNKKoV51TuthdHODT8Q2OHQU3g6Rrw-zM,11497
|
187
187
|
PyFunceble/data/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
188
188
|
PyFunceble/data/infrastructure/dir_structure_production.json,sha256=XpWin49SkoWu3pvnsoNlbNh6j9MlTGVKkvTmX99jZkM,5722
|
@@ -242,7 +242,7 @@ PyFunceble/helpers/list.py,sha256=42SX78D6cbUbSctxBZLE-kBzJmBQ3iZTDQiB7Ficfkk,50
|
|
242
242
|
PyFunceble/helpers/merge.py,sha256=qU9z5mUGxNEKv2fjPokSU8B-HMC62izEIk8LZQU9duE,6060
|
243
243
|
PyFunceble/helpers/regex.py,sha256=ySrV2FaKJPVL4glaA1jx2_1Jq_5ydup86FWrRsfB7eo,6937
|
244
244
|
PyFunceble/query/__init__.py,sha256=OrSc30ozkbsgboBkO3IWmsHZS3AxhnvfQuJLZlnbhoI,2514
|
245
|
-
PyFunceble/query/collection.py,sha256
|
245
|
+
PyFunceble/query/collection.py,sha256=02z7zXWbhWj3UoMMDlUMZzwFNNOo9Lbhxjen9_5qfHY,22748
|
246
246
|
PyFunceble/query/http_status_code.py,sha256=Li6uWA-GLJ0Hj_dKz527w4i4gLX78W-AC87MeVdDJdI,11777
|
247
247
|
PyFunceble/query/dns/__init__.py,sha256=Q0M83ZMZf7wJMgTVFmnXyfLb8XNdBHe2gTWs2dHTpK4,2479
|
248
248
|
PyFunceble/query/dns/nameserver.py,sha256=ogE6jXBOy94f36KtUx4y1kB_G2H_X65SJWTzuaTbVDI,9796
|
@@ -261,12 +261,12 @@ PyFunceble/query/requests/requester.py,sha256=eJDylIORVgwA3boq_pSbKMrneNOHNSR6C4
|
|
261
261
|
PyFunceble/query/requests/adapter/__init__.py,sha256=IgU8Tp-EvHnErmTw57qeOKdbMhooKqAn-KhWwErx4B4,2474
|
262
262
|
PyFunceble/query/requests/adapter/base.py,sha256=n1Ex4OdyFiKnWNyEv24O2fMe1qBccOJmGUYjycoHN6I,9581
|
263
263
|
PyFunceble/query/requests/adapter/http.py,sha256=YDU0KZZPRMxBcNBvktJU1RhMK5XsIBvLZtPoBt3cpOY,5667
|
264
|
-
PyFunceble/query/requests/adapter/https.py,sha256=
|
264
|
+
PyFunceble/query/requests/adapter/https.py,sha256=Mv5TG1Jv5vex3g-fWLdjVOCvPTgcbO-_Vf-1a3Gw30o,6146
|
265
265
|
PyFunceble/query/whois/__init__.py,sha256=bQIlZvVsOgqR6gR-JyLOU4nZni2v88knJcEkpT5GFL0,2495
|
266
266
|
PyFunceble/query/whois/query_tool.py,sha256=QgNJrB0knHNYKfgbyay2OyhlaZ7QwLrgzYf_awptl4w,14658
|
267
267
|
PyFunceble/query/whois/converter/__init__.py,sha256=r1N9vYoAFfCYC199gDhbo7zLK61UVrrO8ZM0zkM8Hb0,2487
|
268
268
|
PyFunceble/query/whois/converter/base.py,sha256=s_ez8TSBc7KVg6NbYdjqPNttxkN-xGJTUJzkBa0CrZI,4377
|
269
|
-
PyFunceble/query/whois/converter/digit2digits.py,sha256=
|
269
|
+
PyFunceble/query/whois/converter/digit2digits.py,sha256=W-Ky5dq9dmvL5LOzr0CgsVRJpNMIRmALutsfrbQtHME,3461
|
270
270
|
PyFunceble/query/whois/converter/expiration_date.py,sha256=K9SQqg46IBr33b6dVPHv9wDwGGZaV91HG4LcG3rk5Wo,13426
|
271
271
|
PyFunceble/query/whois/converter/month2unified.py,sha256=AtLryJpSQ3qoObKS4YdQ36h-WRQq82ojsr7G95NXrCQ,4331
|
272
272
|
PyFunceble/query/whois/converter/registrar.py,sha256=RHhvIwHC4ZkZC2xDVdXkZU8Yjl0iv84j7nArVViEENE,4735
|
@@ -274,9 +274,9 @@ PyFunceble/utils/__init__.py,sha256=l6Mz-0GPHPCSPXuNFtHbnjD0fYI5BRr-RwDbVgAUdmI,
|
|
274
274
|
PyFunceble/utils/platform.py,sha256=px_pauOFMCEtc9ST0vYZvDWDhcWNP1S595iKK4P3n7c,3920
|
275
275
|
PyFunceble/utils/profile.py,sha256=Fp5yntq5Ys5eQe-FbQsUpx4ydxDxVYW3ACn-3KcTk_A,4566
|
276
276
|
PyFunceble/utils/version.py,sha256=Tb3DWk96Xl6WbdDa2t3QQGBBDcnKDNJV_iFWMVQfCoc,8330
|
277
|
-
PyFunceble_dev-4.2.
|
278
|
-
PyFunceble_dev-4.2.
|
279
|
-
PyFunceble_dev-4.2.
|
280
|
-
PyFunceble_dev-4.2.
|
281
|
-
PyFunceble_dev-4.2.
|
282
|
-
PyFunceble_dev-4.2.
|
277
|
+
PyFunceble_dev-4.2.9.dist-info/LICENSE,sha256=JBG6UfPnf3940AtwZB6vwAK6YH82Eo6nzMVnjGqopF0,10796
|
278
|
+
PyFunceble_dev-4.2.9.dist-info/METADATA,sha256=T5-XYPQTthigbCW6LDEf8Z7xqf6708jGb42JqfIfZ_k,15118
|
279
|
+
PyFunceble_dev-4.2.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
280
|
+
PyFunceble_dev-4.2.9.dist-info/entry_points.txt,sha256=Ic1suwopOi_XTgiQi2ErtpY5xT3R8EFMI6B_ONDuR9E,201
|
281
|
+
PyFunceble_dev-4.2.9.dist-info/top_level.txt,sha256=J7GBKIiNYv93m1AxLy8_gr6ExXyZbMmCVXHMQBTUq2Y,11
|
282
|
+
PyFunceble_dev-4.2.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|