PyFunceble-dev 4.3.0a11__py3-none-any.whl → 4.3.0a13__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/cli/entry_points/pyfunceble/cli.py +15 -9
- PyFunceble/config/loader.py +82 -17
- PyFunceble/data/infrastructure/.PyFunceble_production.yaml +11 -0
- PyFunceble/dataset/user_agent.py +37 -3
- PyFunceble/storage.py +1 -1
- {PyFunceble_dev-4.3.0a11.dist-info → PyFunceble_dev-4.3.0a13.dist-info}/METADATA +106 -106
- {PyFunceble_dev-4.3.0a11.dist-info → PyFunceble_dev-4.3.0a13.dist-info}/RECORD +11 -11
- {PyFunceble_dev-4.3.0a11.dist-info → PyFunceble_dev-4.3.0a13.dist-info}/LICENSE +0 -0
- {PyFunceble_dev-4.3.0a11.dist-info → PyFunceble_dev-4.3.0a13.dist-info}/WHEEL +0 -0
- {PyFunceble_dev-4.3.0a11.dist-info → PyFunceble_dev-4.3.0a13.dist-info}/entry_points.txt +0 -0
- {PyFunceble_dev-4.3.0a11.dist-info → PyFunceble_dev-4.3.0a13.dist-info}/top_level.txt +0 -0
@@ -103,6 +103,9 @@ def get_configured_value(
|
|
103
103
|
else:
|
104
104
|
result = PyFunceble.facility.ConfigLoader.get_configured_value(entry)
|
105
105
|
|
106
|
+
if isinstance(result, str) and "%" in result:
|
107
|
+
result = result.replace("%", "%%")
|
108
|
+
|
106
109
|
if negate:
|
107
110
|
result = not result
|
108
111
|
|
@@ -587,6 +590,18 @@ def get_test_control_group_data() -> List[Tuple[List[str], dict]]:
|
|
587
590
|
"get the latest (automatically) for you.",
|
588
591
|
},
|
589
592
|
),
|
593
|
+
(
|
594
|
+
[
|
595
|
+
"--user-agent-reference",
|
596
|
+
],
|
597
|
+
{
|
598
|
+
"dest": "user_agent.reference",
|
599
|
+
"type": str,
|
600
|
+
"help": "Sets the reference to append to the user agent.\n\n"
|
601
|
+
"This is useful when you want to add a reference to the "
|
602
|
+
"user agent. %s" % get_configured_value("user_agent.reference"),
|
603
|
+
},
|
604
|
+
),
|
590
605
|
(
|
591
606
|
[
|
592
607
|
"-vsc",
|
@@ -833,15 +848,6 @@ def get_output_control_group_data() -> List[Tuple[List[str], dict]]:
|
|
833
848
|
"default": "all",
|
834
849
|
},
|
835
850
|
),
|
836
|
-
(
|
837
|
-
["--display-datetime"],
|
838
|
-
{
|
839
|
-
"dest": "cli_testing.display_mode.datetime",
|
840
|
-
"action": "store_true",
|
841
|
-
"help": "Activates or disables the display of the datetime of the\n"
|
842
|
-
"test. %s" % get_configured_value("cli_testing.display_mode.datetime"),
|
843
|
-
},
|
844
|
-
),
|
845
851
|
(
|
846
852
|
["--display-datetime-fmt"],
|
847
853
|
{
|
PyFunceble/config/loader.py
CHANGED
@@ -92,11 +92,12 @@ class ConfigLoader:
|
|
92
92
|
_path_to_config: Optional[str] = None
|
93
93
|
_remote_config_location: Optional[str] = None
|
94
94
|
path_to_default_config: Optional[str] = None
|
95
|
-
|
95
|
+
_path_to_overwrite_config: Optional[str] = None
|
96
96
|
|
97
97
|
_custom_config: dict = {}
|
98
98
|
_merge_upstream: bool = False
|
99
99
|
_config_dir: Optional[str] = None
|
100
|
+
__config_loaded: bool = False
|
100
101
|
|
101
102
|
file_helper: FileHelper = FileHelper()
|
102
103
|
dict_helper: DictHelper = DictHelper()
|
@@ -115,18 +116,8 @@ class ConfigLoader:
|
|
115
116
|
else:
|
116
117
|
self.config_dir = PyFunceble.storage.CONFIG_DIRECTORY
|
117
118
|
|
118
|
-
self.path_to_config = os.path.join(
|
119
|
-
self.config_dir,
|
120
|
-
PyFunceble.storage.CONFIGURATION_FILENAME,
|
121
|
-
)
|
122
|
-
|
123
119
|
self.path_to_remote_config = None
|
124
120
|
|
125
|
-
self.path_to_overwrite_config = os.path.join(
|
126
|
-
self.config_dir,
|
127
|
-
".PyFunceble.overwrite.yaml",
|
128
|
-
)
|
129
|
-
|
130
121
|
if merge_upstream is not None:
|
131
122
|
self.merge_upstream = merge_upstream
|
132
123
|
elif EnvironmentVariableHelper("PYFUNCEBLE_AUTO_CONFIGURATION").exists():
|
@@ -206,14 +197,82 @@ class ConfigLoader:
|
|
206
197
|
|
207
198
|
return config
|
208
199
|
|
209
|
-
|
210
|
-
def is_already_loaded() -> bool:
|
200
|
+
def is_already_loaded(self) -> bool:
|
211
201
|
"""
|
212
202
|
Checks if the configuration was already loaded.
|
213
203
|
"""
|
214
204
|
|
215
205
|
return bool(PyFunceble.storage.CONFIGURATION)
|
216
206
|
|
207
|
+
def __is_completely_loaded(self) -> bool:
|
208
|
+
"""
|
209
|
+
Checks if the configuration was completely loaded.
|
210
|
+
"""
|
211
|
+
|
212
|
+
return self.is_already_loaded() and bool(self.__config_loaded)
|
213
|
+
|
214
|
+
@property
|
215
|
+
def path_to_config(self) -> Optional[str]:
|
216
|
+
"""
|
217
|
+
Provides the current state of the :code:`_path_to_config` attribute.
|
218
|
+
"""
|
219
|
+
|
220
|
+
if self._path_to_config is None:
|
221
|
+
self._path_to_config = os.path.join(
|
222
|
+
self.config_dir,
|
223
|
+
PyFunceble.storage.CONFIGURATION_FILENAME,
|
224
|
+
)
|
225
|
+
|
226
|
+
return self._path_to_config
|
227
|
+
|
228
|
+
@path_to_config.setter
|
229
|
+
def path_to_config(self, value: str) -> None:
|
230
|
+
"""
|
231
|
+
Sets the path to the configuration file.
|
232
|
+
|
233
|
+
:param value:
|
234
|
+
The value to set.
|
235
|
+
|
236
|
+
:raise TypeError:
|
237
|
+
When value is not a :py:class:`str`.
|
238
|
+
"""
|
239
|
+
|
240
|
+
if not isinstance(value, str):
|
241
|
+
raise TypeError(f"<value> should be {str}, {type(value)} given.")
|
242
|
+
|
243
|
+
self._path_to_config = value
|
244
|
+
|
245
|
+
@property
|
246
|
+
def path_to_overwrite_config(self) -> Optional[str]:
|
247
|
+
"""
|
248
|
+
Provides the current state of the :code:`_path_to_overwrite_config` attribute.
|
249
|
+
"""
|
250
|
+
|
251
|
+
if self._path_to_overwrite_config is None:
|
252
|
+
self._path_to_overwrite_config = os.path.join(
|
253
|
+
self.config_dir,
|
254
|
+
".PyFunceble.overwrite.yaml",
|
255
|
+
)
|
256
|
+
|
257
|
+
return self._path_to_overwrite_config
|
258
|
+
|
259
|
+
@path_to_overwrite_config.setter
|
260
|
+
def path_to_overwrite_config(self, value: str) -> None:
|
261
|
+
"""
|
262
|
+
Sets the path to the overwrite configuration file.
|
263
|
+
|
264
|
+
:param value:
|
265
|
+
The value to set.
|
266
|
+
|
267
|
+
:raise TypeError:
|
268
|
+
When value is not a :py:class:`str`.
|
269
|
+
"""
|
270
|
+
|
271
|
+
if not isinstance(value, str):
|
272
|
+
raise TypeError(f"<value> should be {str}, {type(value)} given.")
|
273
|
+
|
274
|
+
self._path_to_overwrite_config = value
|
275
|
+
|
217
276
|
@property
|
218
277
|
def config_dir(self) -> Optional[str]:
|
219
278
|
"""
|
@@ -239,6 +298,9 @@ class ConfigLoader:
|
|
239
298
|
raise TypeError(f"<value> should be {str}, {type(value)} given.")
|
240
299
|
|
241
300
|
self._config_dir = value
|
301
|
+
# Reset the path to the configuration file.
|
302
|
+
self._path_to_config = None
|
303
|
+
self._path_to_overwrite_config = None
|
242
304
|
|
243
305
|
def set_config_dir(self, value: str) -> "ConfigLoader":
|
244
306
|
"""
|
@@ -385,9 +447,8 @@ class ConfigLoader:
|
|
385
447
|
|
386
448
|
return self
|
387
449
|
|
388
|
-
@classmethod
|
389
450
|
def download_dynamic_infrastructure_files(
|
390
|
-
|
451
|
+
self,
|
391
452
|
) -> "ConfigLoader":
|
392
453
|
"""
|
393
454
|
Downloads all the dynamicly (generated) infrastructure files.
|
@@ -400,7 +461,7 @@ class ConfigLoader:
|
|
400
461
|
|
401
462
|
## pragma: no cover ## Underlying download methods already tested.
|
402
463
|
|
403
|
-
if not
|
464
|
+
if not self.is_already_loaded():
|
404
465
|
IANADownloader().start()
|
405
466
|
PublicSuffixDownloader().start()
|
406
467
|
UserAgentsDownloader().start()
|
@@ -494,7 +555,7 @@ class ConfigLoader:
|
|
494
555
|
config,
|
495
556
|
)
|
496
557
|
|
497
|
-
if not self.
|
558
|
+
if not self.__is_completely_loaded():
|
498
559
|
self.install_missing_infrastructure_files()
|
499
560
|
self.download_dynamic_infrastructure_files()
|
500
561
|
download_remote_config(
|
@@ -593,6 +654,8 @@ class ConfigLoader:
|
|
593
654
|
# Early load user agents to allow usage of defined user agents.
|
594
655
|
UserAgentDataset().get_latest()
|
595
656
|
|
657
|
+
self.__config_loaded = True
|
658
|
+
|
596
659
|
return self
|
597
660
|
|
598
661
|
def destroy(self, keep_custom: bool = False) -> "ConfigLoader":
|
@@ -620,4 +683,6 @@ class ConfigLoader:
|
|
620
683
|
# This is not a mistake.
|
621
684
|
self._custom_config = {}
|
622
685
|
|
686
|
+
self.__config_loaded = False
|
687
|
+
|
623
688
|
return self
|
@@ -629,6 +629,17 @@ user_agent:
|
|
629
629
|
# CLI Argument: -ua | --user-agent
|
630
630
|
custom: null
|
631
631
|
|
632
|
+
# Set the reference to add to the User-Agent.
|
633
|
+
# This is useful when you want to add a reference (e.g. a link) to the User-Agent.
|
634
|
+
#
|
635
|
+
# The reference will be added at the end of the User-Agent in the following format:
|
636
|
+
# {user_agent}; +{reference}
|
637
|
+
#
|
638
|
+
# When set to `null`, no reference will be added.
|
639
|
+
#
|
640
|
+
# CLI Argument: --user-agent-reference
|
641
|
+
reference: null
|
642
|
+
|
632
643
|
proxy:
|
633
644
|
# Provides everything related to the proxy usage and configuration.
|
634
645
|
#
|
PyFunceble/dataset/user_agent.py
CHANGED
@@ -196,6 +196,30 @@ class UserAgentDataset(DatasetBase):
|
|
196
196
|
and bool(self[browser_short_name.lower()][platform.lower()])
|
197
197
|
)
|
198
198
|
|
199
|
+
def format_user_agent(
|
200
|
+
self, user_agent: str, *, reference: Optional[str] = None
|
201
|
+
) -> str:
|
202
|
+
"""
|
203
|
+
Given a user agent and a reference, it returns the formatted user agent
|
204
|
+
that we have to use.
|
205
|
+
|
206
|
+
:param user_agent:
|
207
|
+
The user agent to format.
|
208
|
+
:param reference:
|
209
|
+
The reference to append to the user agent.
|
210
|
+
|
211
|
+
:return:
|
212
|
+
The formatted user agent.
|
213
|
+
"""
|
214
|
+
|
215
|
+
user_agent = user_agent.strip()
|
216
|
+
|
217
|
+
if reference:
|
218
|
+
if user_agent.endswith(";"):
|
219
|
+
return f"{user_agent} +{reference}"
|
220
|
+
return f"{user_agent}; +{reference}"
|
221
|
+
return user_agent
|
222
|
+
|
199
223
|
def get_latest(self) -> str:
|
200
224
|
"""
|
201
225
|
Provides the latest user agent for the given platform.
|
@@ -205,12 +229,19 @@ class UserAgentDataset(DatasetBase):
|
|
205
229
|
(if exists).
|
206
230
|
"""
|
207
231
|
|
232
|
+
reference = None
|
233
|
+
|
208
234
|
if PyFunceble.storage.CONFIGURATION:
|
235
|
+
reference = PyFunceble.storage.CONFIGURATION.user_agent.reference
|
236
|
+
|
209
237
|
if (
|
210
238
|
PyFunceble.storage.CONFIGURATION.user_agent
|
211
239
|
and PyFunceble.storage.CONFIGURATION.user_agent.custom
|
212
240
|
):
|
213
|
-
return
|
241
|
+
return self.format_user_agent(
|
242
|
+
PyFunceble.storage.CONFIGURATION.user_agent.custom,
|
243
|
+
reference=reference,
|
244
|
+
)
|
214
245
|
|
215
246
|
self.set_preferred(
|
216
247
|
PyFunceble.storage.CONFIGURATION.user_agent.browser,
|
@@ -220,6 +251,9 @@ class UserAgentDataset(DatasetBase):
|
|
220
251
|
result = self[self.preferred_browser][self.preferred_platform]
|
221
252
|
|
222
253
|
if isinstance(result, (list, tuple)):
|
223
|
-
return
|
254
|
+
return self.format_user_agent(
|
255
|
+
secrets.choice(result),
|
256
|
+
reference=reference,
|
257
|
+
)
|
224
258
|
|
225
|
-
return result
|
259
|
+
return self.format_user_agent(result, reference=reference)
|
PyFunceble/storage.py
CHANGED
@@ -60,7 +60,7 @@ from dotenv import load_dotenv
|
|
60
60
|
from PyFunceble.storage_facility import get_config_directory
|
61
61
|
|
62
62
|
PROJECT_NAME: str = "PyFunceble"
|
63
|
-
PROJECT_VERSION: str = "4.3.
|
63
|
+
PROJECT_VERSION: str = "4.3.0a13.dev (Blue Duckling: Tulip)"
|
64
64
|
|
65
65
|
DISTRIBUTED_CONFIGURATION_FILENAME: str = ".PyFunceble_production.yaml"
|
66
66
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: PyFunceble-dev
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.0a13
|
4
4
|
Summary: The tool to check the availability or syntax of domain, IP or URL.
|
5
5
|
Home-page: https://github.com/funilrys/PyFunceble
|
6
6
|
Author: funilrys
|
@@ -22,169 +22,169 @@ Classifier: License :: OSI Approved
|
|
22
22
|
Requires-Python: >=3.9, <4
|
23
23
|
Description-Content-Type: text/markdown
|
24
24
|
License-File: LICENSE
|
25
|
-
Requires-Dist:
|
25
|
+
Requires-Dist: requests[socks]<3
|
26
|
+
Requires-Dist: domain2idna~=1.12.0
|
27
|
+
Requires-Dist: setuptools>=65.5.1
|
26
28
|
Requires-Dist: python-dotenv
|
29
|
+
Requires-Dist: shtab
|
27
30
|
Requires-Dist: PyYAML
|
28
|
-
Requires-Dist:
|
29
|
-
Requires-Dist: colorama
|
31
|
+
Requires-Dist: packaging
|
30
32
|
Requires-Dist: inflection
|
31
|
-
Requires-Dist:
|
33
|
+
Requires-Dist: python-box[all]~=6.0.0
|
32
34
|
Requires-Dist: PyMySQL
|
33
|
-
Requires-Dist:
|
35
|
+
Requires-Dist: dnspython[DOH]~=2.6.0
|
34
36
|
Requires-Dist: alembic
|
35
|
-
Requires-Dist:
|
36
|
-
Requires-Dist:
|
37
|
-
Requires-Dist: shtab
|
38
|
-
Requires-Dist: setuptools>=65.5.1
|
37
|
+
Requires-Dist: SQLAlchemy~=2.0
|
38
|
+
Requires-Dist: colorama
|
39
39
|
Provides-Extra: docs
|
40
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
|
41
|
-
Requires-Dist: mkdocs-gen-files~=0.5; extra == "docs"
|
42
40
|
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "docs"
|
43
|
-
Requires-Dist: mkdocs-
|
44
|
-
Requires-Dist:
|
45
|
-
Requires-Dist: mkdocs-material~=9.5; extra == "docs"
|
46
|
-
Requires-Dist: mkdocs~=1.5; extra == "docs"
|
41
|
+
Requires-Dist: mkdocs-gen-files~=0.5; extra == "docs"
|
42
|
+
Requires-Dist: mkdocstrings[python]~=0.26; extra == "docs"
|
47
43
|
Requires-Dist: zipp>=3.19.1; extra == "docs"
|
44
|
+
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "docs"
|
48
45
|
Requires-Dist: pymdown-extensions~=10.9; extra == "docs"
|
46
|
+
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "docs"
|
47
|
+
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "docs"
|
48
|
+
Requires-Dist: mkdocs~=1.5; extra == "docs"
|
49
49
|
Requires-Dist: mkdocs-section-index~=0.3; extra == "docs"
|
50
|
-
Requires-Dist:
|
50
|
+
Requires-Dist: mkdocs-material~=9.5; extra == "docs"
|
51
51
|
Provides-Extra: dev
|
52
|
-
Requires-Dist:
|
52
|
+
Requires-Dist: isort; extra == "dev"
|
53
53
|
Requires-Dist: black; extra == "dev"
|
54
|
+
Requires-Dist: flake8; extra == "dev"
|
54
55
|
Requires-Dist: pylint; extra == "dev"
|
55
|
-
Requires-Dist: isort; extra == "dev"
|
56
56
|
Provides-Extra: test
|
57
57
|
Requires-Dist: coverage; extra == "test"
|
58
58
|
Requires-Dist: tox; extra == "test"
|
59
59
|
Provides-Extra: psql
|
60
|
-
Requires-Dist:
|
60
|
+
Requires-Dist: requests[socks]<3; extra == "psql"
|
61
|
+
Requires-Dist: domain2idna~=1.12.0; extra == "psql"
|
62
|
+
Requires-Dist: setuptools>=65.5.1; extra == "psql"
|
61
63
|
Requires-Dist: python-dotenv; extra == "psql"
|
64
|
+
Requires-Dist: shtab; extra == "psql"
|
62
65
|
Requires-Dist: PyYAML; extra == "psql"
|
63
|
-
Requires-Dist:
|
64
|
-
Requires-Dist: colorama; extra == "psql"
|
65
|
-
Requires-Dist: inflection; extra == "psql"
|
66
|
-
Requires-Dist: requests[socks]<3; extra == "psql"
|
66
|
+
Requires-Dist: packaging; extra == "psql"
|
67
67
|
Requires-Dist: psycopg2; extra == "psql"
|
68
|
+
Requires-Dist: inflection; extra == "psql"
|
69
|
+
Requires-Dist: python-box[all]~=6.0.0; extra == "psql"
|
68
70
|
Requires-Dist: PyMySQL; extra == "psql"
|
69
|
-
Requires-Dist:
|
71
|
+
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql"
|
70
72
|
Requires-Dist: alembic; extra == "psql"
|
71
|
-
Requires-Dist:
|
72
|
-
Requires-Dist:
|
73
|
-
Requires-Dist: shtab; extra == "psql"
|
74
|
-
Requires-Dist: setuptools>=65.5.1; extra == "psql"
|
73
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "psql"
|
74
|
+
Requires-Dist: colorama; extra == "psql"
|
75
75
|
Provides-Extra: psql-binary
|
76
|
-
Requires-Dist: SQLAlchemy~=2.0; extra == "psql-binary"
|
77
|
-
Requires-Dist: python-dotenv; extra == "psql-binary"
|
78
|
-
Requires-Dist: PyYAML; extra == "psql-binary"
|
79
76
|
Requires-Dist: psycopg2-binary; extra == "psql-binary"
|
80
|
-
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql-binary"
|
81
|
-
Requires-Dist: colorama; extra == "psql-binary"
|
82
|
-
Requires-Dist: inflection; extra == "psql-binary"
|
83
77
|
Requires-Dist: requests[socks]<3; extra == "psql-binary"
|
84
|
-
Requires-Dist: PyMySQL; extra == "psql-binary"
|
85
78
|
Requires-Dist: domain2idna~=1.12.0; extra == "psql-binary"
|
86
|
-
Requires-Dist:
|
79
|
+
Requires-Dist: setuptools>=65.5.1; extra == "psql-binary"
|
80
|
+
Requires-Dist: python-dotenv; extra == "psql-binary"
|
81
|
+
Requires-Dist: shtab; extra == "psql-binary"
|
82
|
+
Requires-Dist: PyYAML; extra == "psql-binary"
|
87
83
|
Requires-Dist: packaging; extra == "psql-binary"
|
84
|
+
Requires-Dist: inflection; extra == "psql-binary"
|
88
85
|
Requires-Dist: python-box[all]~=6.0.0; extra == "psql-binary"
|
89
|
-
Requires-Dist:
|
90
|
-
Requires-Dist:
|
86
|
+
Requires-Dist: PyMySQL; extra == "psql-binary"
|
87
|
+
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "psql-binary"
|
88
|
+
Requires-Dist: alembic; extra == "psql-binary"
|
89
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "psql-binary"
|
90
|
+
Requires-Dist: colorama; extra == "psql-binary"
|
91
91
|
Provides-Extra: postgresql
|
92
|
-
Requires-Dist:
|
92
|
+
Requires-Dist: requests[socks]<3; extra == "postgresql"
|
93
|
+
Requires-Dist: domain2idna~=1.12.0; extra == "postgresql"
|
94
|
+
Requires-Dist: setuptools>=65.5.1; extra == "postgresql"
|
93
95
|
Requires-Dist: python-dotenv; extra == "postgresql"
|
96
|
+
Requires-Dist: shtab; extra == "postgresql"
|
94
97
|
Requires-Dist: PyYAML; extra == "postgresql"
|
95
|
-
Requires-Dist:
|
96
|
-
Requires-Dist: colorama; extra == "postgresql"
|
97
|
-
Requires-Dist: inflection; extra == "postgresql"
|
98
|
-
Requires-Dist: requests[socks]<3; extra == "postgresql"
|
98
|
+
Requires-Dist: packaging; extra == "postgresql"
|
99
99
|
Requires-Dist: psycopg2; extra == "postgresql"
|
100
|
+
Requires-Dist: inflection; extra == "postgresql"
|
101
|
+
Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql"
|
100
102
|
Requires-Dist: PyMySQL; extra == "postgresql"
|
101
|
-
Requires-Dist:
|
103
|
+
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql"
|
102
104
|
Requires-Dist: alembic; extra == "postgresql"
|
103
|
-
Requires-Dist:
|
104
|
-
Requires-Dist:
|
105
|
-
Requires-Dist: shtab; extra == "postgresql"
|
106
|
-
Requires-Dist: setuptools>=65.5.1; extra == "postgresql"
|
105
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql"
|
106
|
+
Requires-Dist: colorama; extra == "postgresql"
|
107
107
|
Provides-Extra: postgresql-binary
|
108
|
-
Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql-binary"
|
109
|
-
Requires-Dist: python-dotenv; extra == "postgresql-binary"
|
110
|
-
Requires-Dist: PyYAML; extra == "postgresql-binary"
|
111
108
|
Requires-Dist: psycopg2-binary; extra == "postgresql-binary"
|
112
|
-
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql-binary"
|
113
|
-
Requires-Dist: colorama; extra == "postgresql-binary"
|
114
|
-
Requires-Dist: inflection; extra == "postgresql-binary"
|
115
109
|
Requires-Dist: requests[socks]<3; extra == "postgresql-binary"
|
116
|
-
Requires-Dist: PyMySQL; extra == "postgresql-binary"
|
117
110
|
Requires-Dist: domain2idna~=1.12.0; extra == "postgresql-binary"
|
118
|
-
Requires-Dist:
|
111
|
+
Requires-Dist: setuptools>=65.5.1; extra == "postgresql-binary"
|
112
|
+
Requires-Dist: python-dotenv; extra == "postgresql-binary"
|
113
|
+
Requires-Dist: shtab; extra == "postgresql-binary"
|
114
|
+
Requires-Dist: PyYAML; extra == "postgresql-binary"
|
119
115
|
Requires-Dist: packaging; extra == "postgresql-binary"
|
116
|
+
Requires-Dist: inflection; extra == "postgresql-binary"
|
120
117
|
Requires-Dist: python-box[all]~=6.0.0; extra == "postgresql-binary"
|
121
|
-
Requires-Dist:
|
122
|
-
Requires-Dist:
|
118
|
+
Requires-Dist: PyMySQL; extra == "postgresql-binary"
|
119
|
+
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "postgresql-binary"
|
120
|
+
Requires-Dist: alembic; extra == "postgresql-binary"
|
121
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "postgresql-binary"
|
122
|
+
Requires-Dist: colorama; extra == "postgresql-binary"
|
123
123
|
Provides-Extra: full
|
124
|
-
Requires-Dist: black; extra == "full"
|
125
|
-
Requires-Dist: python-dotenv; extra == "full"
|
126
|
-
Requires-Dist: colorama; extra == "full"
|
127
|
-
Requires-Dist: mkdocs-material~=9.5; extra == "full"
|
128
|
-
Requires-Dist: zipp>=3.19.1; extra == "full"
|
129
|
-
Requires-Dist: alembic; extra == "full"
|
130
|
-
Requires-Dist: packaging; extra == "full"
|
131
|
-
Requires-Dist: setuptools>=65.5.1; extra == "full"
|
132
|
-
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
|
133
|
-
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
|
134
|
-
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "full"
|
135
124
|
Requires-Dist: requests[socks]<3; extra == "full"
|
125
|
+
Requires-Dist: python-dotenv; extra == "full"
|
126
|
+
Requires-Dist: pymdown-extensions~=10.9; extra == "full"
|
127
|
+
Requires-Dist: PyYAML; extra == "full"
|
128
|
+
Requires-Dist: tox; extra == "full"
|
129
|
+
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "full"
|
136
130
|
Requires-Dist: mkdocs~=1.5; extra == "full"
|
137
131
|
Requires-Dist: python-box[all]~=6.0.0; extra == "full"
|
138
|
-
Requires-Dist: SQLAlchemy~=2.0; extra == "full"
|
139
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "full"
|
140
|
-
Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
|
141
|
-
Requires-Dist: PyYAML; extra == "full"
|
142
132
|
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "full"
|
143
|
-
Requires-Dist:
|
144
|
-
Requires-Dist:
|
145
|
-
Requires-Dist: pymdown-extensions~=10.9; extra == "full"
|
146
|
-
Requires-Dist: coverage; extra == "full"
|
133
|
+
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "full"
|
134
|
+
Requires-Dist: zipp>=3.19.1; extra == "full"
|
147
135
|
Requires-Dist: flake8; extra == "full"
|
148
136
|
Requires-Dist: mkdocstrings[python]~=0.26; extra == "full"
|
149
|
-
Requires-Dist:
|
150
|
-
Requires-Dist:
|
151
|
-
Requires-Dist:
|
137
|
+
Requires-Dist: setuptools>=65.5.1; extra == "full"
|
138
|
+
Requires-Dist: black; extra == "full"
|
139
|
+
Requires-Dist: packaging; extra == "full"
|
140
|
+
Requires-Dist: coverage; extra == "full"
|
141
|
+
Requires-Dist: alembic; extra == "full"
|
142
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "full"
|
143
|
+
Requires-Dist: domain2idna~=1.12.0; extra == "full"
|
144
|
+
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "full"
|
145
|
+
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "full"
|
146
|
+
Requires-Dist: PyMySQL; extra == "full"
|
147
|
+
Requires-Dist: colorama; extra == "full"
|
148
|
+
Requires-Dist: mkdocs-gen-files~=0.5; extra == "full"
|
152
149
|
Requires-Dist: shtab; extra == "full"
|
153
|
-
Requires-Dist:
|
150
|
+
Requires-Dist: inflection; extra == "full"
|
154
151
|
Requires-Dist: isort; extra == "full"
|
152
|
+
Requires-Dist: mkdocs-section-index~=0.3; extra == "full"
|
153
|
+
Requires-Dist: mkdocs-material~=9.5; extra == "full"
|
154
|
+
Requires-Dist: pylint; extra == "full"
|
155
155
|
Provides-Extra: all
|
156
|
-
Requires-Dist: black; extra == "all"
|
157
|
-
Requires-Dist: python-dotenv; extra == "all"
|
158
|
-
Requires-Dist: colorama; extra == "all"
|
159
|
-
Requires-Dist: mkdocs-material~=9.5; extra == "all"
|
160
|
-
Requires-Dist: zipp>=3.19.1; extra == "all"
|
161
|
-
Requires-Dist: alembic; extra == "all"
|
162
|
-
Requires-Dist: packaging; extra == "all"
|
163
|
-
Requires-Dist: setuptools>=65.5.1; extra == "all"
|
164
|
-
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "all"
|
165
|
-
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "all"
|
166
|
-
Requires-Dist: psycopg2-binary; extra == "all"
|
167
|
-
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "all"
|
168
156
|
Requires-Dist: requests[socks]<3; extra == "all"
|
157
|
+
Requires-Dist: python-dotenv; extra == "all"
|
158
|
+
Requires-Dist: pymdown-extensions~=10.9; extra == "all"
|
159
|
+
Requires-Dist: PyYAML; extra == "all"
|
160
|
+
Requires-Dist: tox; extra == "all"
|
161
|
+
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "all"
|
169
162
|
Requires-Dist: mkdocs~=1.5; extra == "all"
|
170
163
|
Requires-Dist: python-box[all]~=6.0.0; extra == "all"
|
171
|
-
Requires-Dist: SQLAlchemy~=2.0; extra == "all"
|
172
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin~=1.2; extra == "all"
|
173
|
-
Requires-Dist: mkdocs-gen-files~=0.5; extra == "all"
|
174
|
-
Requires-Dist: PyYAML; extra == "all"
|
175
164
|
Requires-Dist: dnspython[DOH]~=2.6.0; extra == "all"
|
176
|
-
Requires-Dist:
|
177
|
-
Requires-Dist:
|
178
|
-
Requires-Dist:
|
179
|
-
Requires-Dist: coverage; extra == "all"
|
165
|
+
Requires-Dist: psycopg2-binary; extra == "all"
|
166
|
+
Requires-Dist: mkdocs-literate-nav~=0.6; extra == "all"
|
167
|
+
Requires-Dist: zipp>=3.19.1; extra == "all"
|
180
168
|
Requires-Dist: flake8; extra == "all"
|
181
169
|
Requires-Dist: mkdocstrings[python]~=0.26; extra == "all"
|
182
|
-
Requires-Dist:
|
183
|
-
Requires-Dist:
|
184
|
-
Requires-Dist:
|
170
|
+
Requires-Dist: setuptools>=65.5.1; extra == "all"
|
171
|
+
Requires-Dist: black; extra == "all"
|
172
|
+
Requires-Dist: packaging; extra == "all"
|
173
|
+
Requires-Dist: coverage; extra == "all"
|
174
|
+
Requires-Dist: alembic; extra == "all"
|
175
|
+
Requires-Dist: SQLAlchemy~=2.0; extra == "all"
|
176
|
+
Requires-Dist: domain2idna~=1.12.0; extra == "all"
|
177
|
+
Requires-Dist: mkdocs-git-authors-plugin~=0.9; extra == "all"
|
178
|
+
Requires-Dist: mkdocs-macros-plugin~=1.2; extra == "all"
|
179
|
+
Requires-Dist: PyMySQL; extra == "all"
|
180
|
+
Requires-Dist: colorama; extra == "all"
|
181
|
+
Requires-Dist: mkdocs-gen-files~=0.5; extra == "all"
|
185
182
|
Requires-Dist: shtab; extra == "all"
|
186
|
-
Requires-Dist:
|
183
|
+
Requires-Dist: inflection; extra == "all"
|
187
184
|
Requires-Dist: isort; extra == "all"
|
185
|
+
Requires-Dist: mkdocs-section-index~=0.3; extra == "all"
|
186
|
+
Requires-Dist: mkdocs-material~=9.5; extra == "all"
|
187
|
+
Requires-Dist: pylint; extra == "all"
|
188
188
|
|
189
189
|

|
190
190
|
|
@@ -4,7 +4,7 @@ PyFunceble/facility.py,sha256=hyEzCCTOgtAS0x88uEtv9xNwIXnDCDvgq5RHcPNDE-A,2626
|
|
4
4
|
PyFunceble/factory.py,sha256=ETvTe1Ss3VaIhSBOj-ro80XFAYiknsGG9B5oKpubr2s,2576
|
5
5
|
PyFunceble/logger.py,sha256=pmValhdu0XB34FrK1rSgOAhr4spQ8a3QbqQ26jpJHa0,16815
|
6
6
|
PyFunceble/sessions.py,sha256=juHBKHSuVd-tAEIMRj3RXyGyUhZQLEBmeMssd_5qo1U,2568
|
7
|
-
PyFunceble/storage.py,sha256=
|
7
|
+
PyFunceble/storage.py,sha256=zlXjBisXljB0u--UPFKoTHhyjO2S4dYCfjOLpvMe9y4,5349
|
8
8
|
PyFunceble/storage_facility.py,sha256=uvW91dOTxF7-2nXxIp2xGI5sDRABBoGMA7D9xfemfGk,4819
|
9
9
|
PyFunceble/checker/__init__.py,sha256=jSCfY25VNBrxLECSgNwU6kTGSl0bM1_JLl_UKvtKP6w,2430
|
10
10
|
PyFunceble/checker/base.py,sha256=WP9Rjl6rvsq69oCaG4a5WDhoWofMpyxfa4K-WY27Gxw,13615
|
@@ -73,7 +73,7 @@ PyFunceble/cli/entry_points/production.py,sha256=dURFC6pq3cPmdECFea-q8KtJtuH2SoD
|
|
73
73
|
PyFunceble/cli/entry_points/public_suffix.py,sha256=ES0r2xEhr197fasJlBtqO78RLAXgVVB58L6wIlSC1q0,4332
|
74
74
|
PyFunceble/cli/entry_points/pyfunceble/__init__.py,sha256=RQ_anWOFdIlU2AVC7i_iKcj_Tq-qttbNwHe0HWVBCms,2485
|
75
75
|
PyFunceble/cli/entry_points/pyfunceble/argsparser.py,sha256=FY3H6IcvHcKs2hIbXQBcjslPALc4AYhRwqvCdpU1Gd4,4748
|
76
|
-
PyFunceble/cli/entry_points/pyfunceble/cli.py,sha256=
|
76
|
+
PyFunceble/cli/entry_points/pyfunceble/cli.py,sha256=tQcQiwQ3N6bo9X8seB5afCIc9sZy4rhAMabOYEoLnvE,49254
|
77
77
|
PyFunceble/cli/filesystem/__init__.py,sha256=eIS11poQbnYOC9PhQJ2cRuh4_qiPLJdS9O4RkiJD3HA,2483
|
78
78
|
PyFunceble/cli/filesystem/cleanup.py,sha256=4Q04KAfHlkp0NiHmDN_BVuv2QBRN-D_5vJybE7Ohw2E,4813
|
79
79
|
PyFunceble/cli/filesystem/counter.py,sha256=Fp1Tp81hw5T6gY6NBW9hNL7U1vweotNt8plWRwbXtfM,6963
|
@@ -147,7 +147,7 @@ PyFunceble/cli/utils/testing.py,sha256=yobBqTpA-MT8_sPRMohCuP4ujeCfjUMg7DhOVHfD9
|
|
147
147
|
PyFunceble/cli/utils/version.py,sha256=G-yLUVolaQouGz1qnQigT33VgH6EEUu8-Qm_QkkXfUo,13892
|
148
148
|
PyFunceble/config/__init__.py,sha256=5t7ypzV6rpSz5IC0QwQMEbmWb0H_w3J917L6DC9NaWw,2454
|
149
149
|
PyFunceble/config/compare.py,sha256=GLmrcAdCXX2SmWQph8kMG0hdDeKgr-LxMSzFGhkxb5E,13631
|
150
|
-
PyFunceble/config/loader.py,sha256=
|
150
|
+
PyFunceble/config/loader.py,sha256=A4qhaVqoCFcBKiLAZ7O-5RXGywquxwJEGqXIX6FYEIE,22631
|
151
151
|
PyFunceble/converter/__init__.py,sha256=xV1NBUxxzsArjJfhSj0c3HLXs0QPHrX196YsbVPvrbw,2436
|
152
152
|
PyFunceble/converter/adblock_input_line2subject.py,sha256=88zGa0BJacMVIV4LkRXX0EqT9Fez8BTUw8pzas0AwPI,12925
|
153
153
|
PyFunceble/converter/base.py,sha256=bhljvSmbqTiEHXkZ01WyD7XYXXxYG9VmW3RNRtcZlB0,4915
|
@@ -184,7 +184,7 @@ PyFunceble/data/alembic/postgresql/env.py,sha256=UfJff9bY99TTC0z9bQgsm17NqsGnLmz
|
|
184
184
|
PyFunceble/data/alembic/postgresql/script.py.mako,sha256=8_xgA-gm_OhehnO7CiIijWgnm00ZlszEHtIHrAYFJl0,494
|
185
185
|
PyFunceble/data/alembic/postgresql/versions/__init__.py,sha256=5E57ZZeUcnx4sgc3LJh6e6bjgeaQhS4W-f2UVuUYsrs,2452
|
186
186
|
PyFunceble/data/alembic/postgresql/versions/a32ac5d66eee_initial_version.py,sha256=xJdnoCnHAG1vmt-nBeomuIEDRwUK1Upv1mtkUt1txQM,2487
|
187
|
-
PyFunceble/data/infrastructure/.PyFunceble_production.yaml,sha256=
|
187
|
+
PyFunceble/data/infrastructure/.PyFunceble_production.yaml,sha256=Mpz5HKewJvZNhyOV0W4WLURgoOVtPC7bQJ2-yh3StE4,25411
|
188
188
|
PyFunceble/data/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
189
189
|
PyFunceble/data/infrastructure/dir_structure_production.json,sha256=XpWin49SkoWu3pvnsoNlbNh6j9MlTGVKkvTmX99jZkM,5722
|
190
190
|
PyFunceble/database/__init__.py,sha256=r8zmExtTZguf07GzlaYW5hz11DCC1C6qeU3XvkSQXSU,2492
|
@@ -210,7 +210,7 @@ PyFunceble/dataset/iana.py,sha256=oMSx8p2PQV0tsHejqqqyacos9AzksEOq6YucDAFncBw,40
|
|
210
210
|
PyFunceble/dataset/ipv4_reputation.py,sha256=a0KjYvXpaNCKOsK9yIgre-3YP2m3w_jO0_yk9b2mdOI,3977
|
211
211
|
PyFunceble/dataset/public_suffix.py,sha256=q3cUQwHP9_WxAykH45M4EhDOXxUJifpJafAAcOhg51Q,4085
|
212
212
|
PyFunceble/dataset/sql_base.py,sha256=bkUd-1iC_D_uhSfmZ4LGLMaZS3BJqzLOlVjhXqJWORk,10545
|
213
|
-
PyFunceble/dataset/user_agent.py,sha256=
|
213
|
+
PyFunceble/dataset/user_agent.py,sha256=sj4SLbvxltcNAyz_sBvzZ_ynwKPkLJP31s7Q8CPWx_I,9004
|
214
214
|
PyFunceble/dataset/autocontinue/__init__.py,sha256=GyRntA6zAcd2CBm1fEO1PLYKxi8jbAJei5J88CS315w,2461
|
215
215
|
PyFunceble/dataset/autocontinue/base.py,sha256=46yPQEUtonojqKm8Q0DQjuIaOIKRvO9DlQ-K_79flwQ,3499
|
216
216
|
PyFunceble/dataset/autocontinue/csv.py,sha256=PRcn9xAZp2htb7mao3EgUFOpIcSi5TBOpEIwcb0dDyE,6275
|
@@ -275,9 +275,9 @@ PyFunceble/utils/__init__.py,sha256=Vnhd0wNrWJulWwUUK-vlv5VWBiKfSnXtI2XH_FyYkBA,
|
|
275
275
|
PyFunceble/utils/platform.py,sha256=JA6rc6Uyx6czNWR9917HGB-EZyMjMK17kUVagMtEEjs,3906
|
276
276
|
PyFunceble/utils/profile.py,sha256=f9FsKuiN3ScftqqrZ3yGpcIFqGSf616dPT_QvBduqxw,4552
|
277
277
|
PyFunceble/utils/version.py,sha256=LvSiIrQWztuQ1qT7ekiDvh5TateyVRGMFRui73O4wFQ,8371
|
278
|
-
PyFunceble_dev-4.3.
|
279
|
-
PyFunceble_dev-4.3.
|
280
|
-
PyFunceble_dev-4.3.
|
281
|
-
PyFunceble_dev-4.3.
|
282
|
-
PyFunceble_dev-4.3.
|
283
|
-
PyFunceble_dev-4.3.
|
278
|
+
PyFunceble_dev-4.3.0a13.dist-info/LICENSE,sha256=JBG6UfPnf3940AtwZB6vwAK6YH82Eo6nzMVnjGqopF0,10796
|
279
|
+
PyFunceble_dev-4.3.0a13.dist-info/METADATA,sha256=Bo8sFXk056mAtQG4mxPokO3Y6ZClCqz8W4Ingr0b-4o,46666
|
280
|
+
PyFunceble_dev-4.3.0a13.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
281
|
+
PyFunceble_dev-4.3.0a13.dist-info/entry_points.txt,sha256=Ic1suwopOi_XTgiQi2ErtpY5xT3R8EFMI6B_ONDuR9E,201
|
282
|
+
PyFunceble_dev-4.3.0a13.dist-info/top_level.txt,sha256=J7GBKIiNYv93m1AxLy8_gr6ExXyZbMmCVXHMQBTUq2Y,11
|
283
|
+
PyFunceble_dev-4.3.0a13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|