aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamjanovsky2022-12-09 17:10:19 +0100
committerGitHub2022-12-09 17:10:19 +0100
commit73b3b0c361f9545450fa188bec50606d64bb1afd (patch)
tree0a1f9034c309ba88e5f72a31634b014c23a57df5
parent19338dc9fd9ab257c36cfa277994abe202e97de2 (diff)
downloadsec-certs-73b3b0c361f9545450fa188bec50606d64bb1afd.tar.gz
sec-certs-73b3b0c361f9545450fa188bec50606d64bb1afd.tar.zst
sec-certs-73b3b0c361f9545450fa188bec50606d64bb1afd.zip
flat -> src layout (#294)
- Some mypy fixes - Flat layout -> src layout - Ditch `setup.py` and `setup.cfg` in favour of `pyproject.toml` - Non-pinned requirements moved from `requirements/*.in` to `pyproject.toml`
-rw-r--r--.flake85
-rw-r--r--.github/workflows/tests.yml2
-rw-r--r--.gitignore13
-rw-r--r--CONTRIBUTING.md3
-rw-r--r--codecov.yml1
-rw-r--r--docs/api/dataset.md2
-rw-r--r--docs/index.md2
-rw-r--r--notebooks/cc/temporal_trends.ipynb5
-rw-r--r--notebooks/examples/fips_iut.ipynb19
-rw-r--r--notebooks/examples/fips_mip.ipynb4
-rw-r--r--pyproject.toml133
-rwxr-xr-xrequirements/compile.sh6
-rw-r--r--requirements/dev_requirements.in20
-rw-r--r--requirements/dev_requirements.txt431
-rw-r--r--requirements/requirements.in30
-rw-r--r--requirements/requirements.txt319
-rw-r--r--requirements/test_requirements.in3
-rw-r--r--requirements/test_requirements.txt327
-rw-r--r--setup.py38
-rw-r--r--src/sec_certs/__init__.py (renamed from sec_certs/__init__.py)0
-rw-r--r--src/sec_certs/__main__.py (renamed from sec_certs/__main__.py)0
-rw-r--r--src/sec_certs/cert_rules.py (renamed from sec_certs/cert_rules.py)0
-rw-r--r--src/sec_certs/cli.py (renamed from sec_certs/cli.py)0
-rw-r--r--src/sec_certs/config/__init__.py (renamed from sec_certs/config/__init__.py)0
-rw-r--r--src/sec_certs/config/configuration.py (renamed from sec_certs/config/configuration.py)0
-rw-r--r--src/sec_certs/config/settings-schema.json (renamed from sec_certs/config/settings-schema.json)0
-rw-r--r--src/sec_certs/config/settings.yaml (renamed from sec_certs/config/settings.yaml)0
-rw-r--r--src/sec_certs/constants.py (renamed from sec_certs/constants.py)0
-rw-r--r--src/sec_certs/dataset/__init__.py (renamed from sec_certs/dataset/__init__.py)0
-rw-r--r--src/sec_certs/dataset/common_criteria.py (renamed from sec_certs/dataset/common_criteria.py)2
-rw-r--r--src/sec_certs/dataset/cpe.py (renamed from sec_certs/dataset/cpe.py)0
-rw-r--r--src/sec_certs/dataset/cve.py (renamed from sec_certs/dataset/cve.py)2
-rw-r--r--src/sec_certs/dataset/dataset.py (renamed from sec_certs/dataset/dataset.py)2
-rw-r--r--src/sec_certs/dataset/fips.py (renamed from sec_certs/dataset/fips.py)2
-rw-r--r--src/sec_certs/dataset/fips_algorithm.py (renamed from sec_certs/dataset/fips_algorithm.py)0
-rw-r--r--src/sec_certs/dataset/fips_iut.py (renamed from sec_certs/dataset/fips_iut.py)0
-rw-r--r--src/sec_certs/dataset/fips_mip.py (renamed from sec_certs/dataset/fips_mip.py)0
-rw-r--r--src/sec_certs/dataset/json_path_dataset.py (renamed from sec_certs/dataset/json_path_dataset.py)0
-rw-r--r--src/sec_certs/dataset/protection_profile.py (renamed from sec_certs/dataset/protection_profile.py)0
-rw-r--r--src/sec_certs/model/__init__.py (renamed from sec_certs/model/__init__.py)0
-rw-r--r--src/sec_certs/model/cpe_matching.py (renamed from sec_certs/model/cpe_matching.py)0
-rw-r--r--src/sec_certs/model/evaluation.py (renamed from sec_certs/model/evaluation.py)0
-rw-r--r--src/sec_certs/model/reference_finder.py (renamed from sec_certs/model/reference_finder.py)0
-rw-r--r--src/sec_certs/model/sar_transformer.py (renamed from sec_certs/model/sar_transformer.py)0
-rw-r--r--src/sec_certs/model/transitive_vulnerability_finder.py (renamed from sec_certs/model/transitive_vulnerability_finder.py)0
-rw-r--r--src/sec_certs/rules.yaml (renamed from sec_certs/rules.yaml)0
-rw-r--r--src/sec_certs/sample/__init__.py (renamed from sec_certs/sample/__init__.py)0
-rw-r--r--src/sec_certs/sample/cc_certificate_id.py (renamed from sec_certs/sample/cc_certificate_id.py)0
-rw-r--r--src/sec_certs/sample/cc_maintenance_update.py (renamed from sec_certs/sample/cc_maintenance_update.py)0
-rw-r--r--src/sec_certs/sample/certificate.py (renamed from sec_certs/sample/certificate.py)0
-rw-r--r--src/sec_certs/sample/common_criteria.py (renamed from sec_certs/sample/common_criteria.py)0
-rw-r--r--src/sec_certs/sample/cpe.py (renamed from sec_certs/sample/cpe.py)0
-rw-r--r--src/sec_certs/sample/cve.py (renamed from sec_certs/sample/cve.py)0
-rw-r--r--src/sec_certs/sample/fips.py (renamed from sec_certs/sample/fips.py)7
-rw-r--r--src/sec_certs/sample/fips_algorithm.py (renamed from sec_certs/sample/fips_algorithm.py)0
-rw-r--r--src/sec_certs/sample/fips_iut.py (renamed from sec_certs/sample/fips_iut.py)0
-rw-r--r--src/sec_certs/sample/fips_mip.py (renamed from sec_certs/sample/fips_mip.py)0
-rw-r--r--src/sec_certs/sample/protection_profile.py (renamed from sec_certs/sample/protection_profile.py)0
-rw-r--r--src/sec_certs/sample/sar.py (renamed from sec_certs/sample/sar.py)0
-rw-r--r--src/sec_certs/serialization/__init__.py (renamed from sec_certs/serialization/__init__.py)0
-rw-r--r--src/sec_certs/serialization/json.py (renamed from sec_certs/serialization/json.py)0
-rw-r--r--src/sec_certs/serialization/pandas.py (renamed from sec_certs/serialization/pandas.py)0
-rw-r--r--src/sec_certs/utils/__init__.py (renamed from sec_certs/utils/__init__.py)0
-rw-r--r--src/sec_certs/utils/extract.py (renamed from sec_certs/utils/extract.py)0
-rw-r--r--src/sec_certs/utils/helpers.py (renamed from sec_certs/utils/helpers.py)0
-rw-r--r--src/sec_certs/utils/pandas.py (renamed from sec_certs/utils/pandas.py)0
-rw-r--r--src/sec_certs/utils/parallel_processing.py (renamed from sec_certs/utils/parallel_processing.py)0
-rw-r--r--src/sec_certs/utils/pdf.py (renamed from sec_certs/utils/pdf.py)0
-rw-r--r--src/sec_certs/utils/sanitization.py (renamed from sec_certs/utils/sanitization.py)0
-rw-r--r--src/sec_certs/utils/tables.py (renamed from sec_certs/utils/tables.py)0
-rw-r--r--src/sec_certs/utils/tqdm.py (renamed from sec_certs/utils/tqdm.py)0
71 files changed, 913 insertions, 465 deletions
diff --git a/.flake8 b/.flake8
index 07ddab5e..2d24fa82 100644
--- a/.flake8
+++ b/.flake8
@@ -11,11 +11,6 @@ exclude =
scratches,
max-complexity = 10
-# Ignore complexity for CLI
-per-file-ignores =
- cc_cli.py: C901,
- fips_cli.py: C901
-
ignore =
# line length, should be handleded by black
E501,
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 255b6cac..8f2a037c 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -20,6 +20,8 @@ jobs:
run: |
pip install -r requirements/requirements.txt
pip install -r requirements/test_requirements.txt
+ - name: Install sec-certs
+ run: pip install -e .
- name: Run tests
run: pytest --cov=sec_certs tests
- name: Code coverage upload
diff --git a/.gitignore b/.gitignore
index d9519043..d64264b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,7 @@
results*/
# version file by setuptools-scm
-sec_certs/_version.py
+src/sec_certs/_version.py
# Byte-compiled / optimized / DLL files
__pycache__/
@@ -116,20 +116,9 @@ virt/
# mypy
.mypy_cache/
-# fips dataset
-fips_dataset/
-fips_test_dataset/
-
-# output pdfs
-*connections*
-*single*
-
# log
cert_processing_log.txt
./cc_processing_log.txt
-# Example script may dump classification report into the folder
-examples/classification_report.json
-
# Experiment results produced by notebooks
notebooks/cc/results/ \ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d95b2ef9..958ba073 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -15,8 +15,7 @@ For complete list of system dependencies, see [docs/installation](https://seccer
### Requirements
Requirements are maintained with [pip-tools](https://github.com/jazzband/pip-tools). The main ideas are:
-- List actual dependencies in `.in` files inside [requirements](https://github.com/crocs-muni/sec-certs/blob/main/requirements) folder without pinning them.
-- Those dependencies are loaded into [setup.py](https://github.com/crocs-muni/sec-certs/blob/main/setup.py) file.
+- List actual dependencies in [pyproject.toml](https://github.com/crocs-muni/sec-certs/blob/main/pyproject.toml) without pinning them.
- Additionally, [compile.sh](https://github.com/crocs-muni/sec-certs/blob/main/requirements/compile.sh) script is used to compile pinned versions of requirements that reside in `.txt` files in the same folder.
- Tests, linting and Docker all run against this reproducible environment of pinned requirements.
diff --git a/codecov.yml b/codecov.yml
index 5bf2bbe4..5c664ea1 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -5,4 +5,3 @@ coverage:
ignore:
- "test/**/*.py"
- - "setup.py" \ No newline at end of file
diff --git a/docs/api/dataset.md b/docs/api/dataset.md
index 17ec943c..27a77e79 100644
--- a/docs/api/dataset.md
+++ b/docs/api/dataset.md
@@ -14,7 +14,7 @@ The examples related to this package can be found at [common criteria notebook](
## CCDataset
```{eval-rst}
-.. currentmodule:: sec_certs.dataset
+.. currentmodule:: sec_certs.dataset.dataset
.. autoclass:: Dataset
:members:
```
diff --git a/docs/index.md b/docs/index.md
index c52706c2..f9d58fb6 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -46,6 +46,8 @@ configuration.md
notebooks/examples/common_criteria.ipynb
notebooks/examples/fips.ipynb
notebooks/examples/model.ipynb
+notebooks/examples/fips_iut.ipynb
+notebooks/examples/fips_mip.ipynb
```
```{toctree}
diff --git a/notebooks/cc/temporal_trends.ipynb b/notebooks/cc/temporal_trends.ipynb
index d7d69ca9..754d494e 100644
--- a/notebooks/cc/temporal_trends.ipynb
+++ b/notebooks/cc/temporal_trends.ipynb
@@ -91,11 +91,10 @@
"data = [n_certs.loc[n_certs.popular_categories == c, \"size\"].tolist()[:-1] for c in cats]\n",
"\n",
"palette = sns.color_palette(\"Spectral\", 5).as_hex()\n",
- "colors = ','.join(palette)\n",
"\n",
- "plt.style.use(\"seaborn-white\")\n",
+ "plt.style.use(\"seaborn-v0_8-white\")\n",
"plt.figure(figsize=(7,4))\n",
- "plt.stackplot(years, data, labels=cats, colors=colors)\n",
+ "plt.stackplot(years, data, labels=cats, colors=palette)\n",
"plt.legend(loc='upper left')\n",
"plt.ylabel(\"Number of issued certificates\")\n",
"plt.xlabel(\"Year of certification\")\n",
diff --git a/notebooks/examples/fips_iut.ipynb b/notebooks/examples/fips_iut.ipynb
index 77138282..506c114f 100644
--- a/notebooks/examples/fips_iut.ipynb
+++ b/notebooks/examples/fips_iut.ipynb
@@ -4,9 +4,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Parse FIPS 'Implementation Under Test' pages.\n",
+ "## FIPS 'Implementation Under Test'\n",
"\n",
- "To use, download pages from the URL: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/IUT-List\n",
+ "Functionality to parse FIPS 'Implementation Under Test' webpage. To use, download pages from the URL: [https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/IUT-List](https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/IUT-List)\n",
"into a `directory` and name them `fips_iut_<iso-timestamp>.html`.\n",
"\n",
"Then run the cells below"
@@ -35,10 +35,21 @@
}
],
"metadata": {
+ "kernelspec": {
+ "display_name": "Python 3.8.13 ('venv': venv)",
+ "language": "python",
+ "name": "python3"
+ },
"language_info": {
- "name": "python"
+ "name": "python",
+ "version": "3.8.13"
},
- "orig_nbformat": 4
+ "orig_nbformat": 4,
+ "vscode": {
+ "interpreter": {
+ "hash": "a5b8c5b127d2cfe5bc3a1c933e197485eb9eba25154c3661362401503b4ef9d4"
+ }
+ }
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/notebooks/examples/fips_mip.ipynb b/notebooks/examples/fips_mip.ipynb
index 7955a32f..f46ba23a 100644
--- a/notebooks/examples/fips_mip.ipynb
+++ b/notebooks/examples/fips_mip.ipynb
@@ -4,9 +4,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Parse FIPS 'Modules In Process' pages.\n",
+ "## FIPS 'Modules In Process'\n",
"\n",
- "To use, download pages from the URL: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/Modules-In-Process-List into a `directory` and name them `fips_mip_<iso-timestamp>.html`.\n",
+ "Functionality to parse FIPS 'Modules In Process' webpage. To use, download pages from the URL: [https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/Modules-In-Process-List](https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/Modules-In-Process-List) into a `directory` and name them `fips_mip_<iso-timestamp>.html`.\n",
"\n",
"Then run the following cells"
]
diff --git a/pyproject.toml b/pyproject.toml
index 2804889f..266b4dd5 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,13 +1,111 @@
[build-system]
-requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2", "wheel"]
+ requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2", "wheel"]
+ build-backend = "setuptools.build_meta"
+
+[project]
+ name = "sec-certs"
+ authors = [
+ { name = "Adam Janovsky", email = "adamjanovsky@mail.muni.cz" },
+ { name = "Jan Jancar" },
+ { name = "Petr Svenda" },
+ { name = "Jiri Michalik" },
+ { name = "Stanislav Bobon" },
+ ]
+ description = "A tool for data scraping and analysis of security certificates from Common Criteria and FIPS 140-2/3 frameworks"
+ readme = "README.md"
+ license = { "text" = "MIT" }
+ classifiers = [
+ "Development Status :: 3 - Alpha",
+ "License :: OSI Approved :: MIT License",
+ "Topic :: Security",
+ "Topic :: Security :: Cryptography",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Intended Audience :: Developers",
+ "Intended Audience :: Science/Research",
+ ]
+ requires-python = ">=3.8"
+ dynamic = ["version"]
+ dependencies = [
+ "beautifulsoup4",
+ "billiard",
+ "click",
+ "html5lib",
+ "jsonschema",
+ "lxml",
+ "matplotlib",
+ "numpy",
+ "pandas",
+ "pdftotext",
+ "pikepdf",
+ "Pillow>=9.2.0",
+ "PyPDF2",
+ "python-dateutil",
+ "PyYAML",
+ "rapidfuzz",
+ "requests",
+ "scikit-learn",
+ "tabula-py",
+ "tqdm",
+ "setuptools-scm",
+ "ipykernel",
+ "ipywidgets",
+ "spacy",
+ "en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1.tar.gz",
+ "pkgconfig",
+ "seaborn",
+ "pySankeyBeta",
+ "scipy>=1.9.0",
+ "networkx",
+ ]
+
+ [project.optional-dependencies]
+ dev = [
+ "mypy",
+ "types-PyYAML",
+ "types-python-dateutil",
+ "types-requests",
+ "pytest",
+ "pytest-cov",
+ "pytest-monitor",
+ "pytest-profiling",
+ "black",
+ "isort",
+ "flake8",
+ "pre-commit",
+ "pip-tools",
+ "sphinx",
+ "myst-nb>=0.14",
+ "sphinx-book-theme",
+ "sphinx-design",
+ "sphinx-copybutton",
+ "pyupgrade",
+ "flake8-future-annotations",
+ "ipython!=8.7.0",
+ ]
+ test = ["pytest", "coverage", "pytest-cov"]
+
+ [project.urls]
+ Homepage = "https://seccerts.org"
+ GitHub = "https://github.com/crocs-muni/sec-certs/"
+ Documentation = "https://seccerts.org/docs"
+
+ [project.scripts]
+ sec-certs = "sec_certs.cli:main"
+
+[tool.setuptools.package-data]
+ "*" = ["*.yaml", "*.json"]
+
[tool.setuptools_scm]
-write_to = "sec_certs/_version.py"
-version_scheme = "no-guess-dev"
+ write_to = "src/sec_certs/_version.py"
+ version_scheme = "no-guess-dev"
[tool.black]
-line-length = 120
-exclude = '''
+ line-length = 120
+ exclude = '''
/(
\.git
| \.mypy_cache
@@ -19,23 +117,24 @@ exclude = '''
| buck-out
| build
| dist
+ | src/sec_certs/_version.py
)/
'''
[tool.isort]
-multi_line_output = 3
-include_trailing_comma = true
-force_grid_wrap = 0
-use_parentheses = true
-ensure_newline_before_comments = true
-line_length = 120
-skip = ["certsvenv", "build"]
+ multi_line_output = 3
+ include_trailing_comma = true
+ force_grid_wrap = 0
+ use_parentheses = true
+ ensure_newline_before_comments = true
+ line_length = 120
+ skip = ["certsvenv", "build"]
[tool.mypy]
-plugins = ["numpy.typing.mypy_plugin"]
-ignore_missing_imports = true
-exclude = "build/"
+ plugins = ["numpy.typing.mypy_plugin"]
+ ignore_missing_imports = true
+ exclude = "build/"
[tool.pytest.ini_options]
-markers = ["slow: marks tests as slow (deselect with '-m \"not slow\"')"]
-addopts = "--cov sec_certs"
+ markers = ["slow: marks tests as slow (deselect with '-m \"not slow\"')"]
+ addopts = "--cov sec_certs"
diff --git a/requirements/compile.sh b/requirements/compile.sh
index 8910b72d..70783aee 100755
--- a/requirements/compile.sh
+++ b/requirements/compile.sh
@@ -2,6 +2,6 @@
# See CONTRIBUTING.md for description
-pip-compile requirements.in --no-header
-pip-compile dev_requirements.in --no-header
-pip-compile test_requirements.in --no-header
+pip-compile --no-header --resolver=backtracking --output-file=requirements.txt ./../pyproject.toml
+pip-compile --no-header --resolver=backtracking --extra dev -o dev_requirements.txt ./../pyproject.toml
+pip-compile --no-header --resolver=backtracking --extra test -o test_requirements.txt ./../pyproject.toml
diff --git a/requirements/dev_requirements.in b/requirements/dev_requirements.in
deleted file mode 100644
index 5071c08e..00000000
--- a/requirements/dev_requirements.in
+++ /dev/null
@@ -1,20 +0,0 @@
-mypy
-types-PyYAML
-types-python-dateutil
-types-requests
-pytest
-pytest-cov
-pytest-monitor
-pytest-profiling
-black
-isort
-flake8
-pre-commit
-pip-tools
-sphinx
-myst-nb>=0.14
-sphinx-book-theme
-sphinx-design
-sphinx-copybutton
-pyupgrade
-flake8-future-annotations
diff --git a/requirements/dev_requirements.txt b/requirements/dev_requirements.txt
index 2002ded7..e174d11b 100644
--- a/requirements/dev_requirements.txt
+++ b/requirements/dev_requirements.txt
@@ -1,172 +1,300 @@
alabaster==0.7.12
# via sphinx
-asttokens==2.0.5
+appnope==0.1.3
+ # via
+ # ipykernel
+ # ipython
+asttokens==2.2.1
# via stack-data
-attrs==21.4.0
+attrs==22.1.0
# via
# jsonschema
# jupyter-cache
- # markdown-it-py
# pytest
-babel==2.10.1
+babel==2.11.0
# via sphinx
backcall==0.2.0
# via ipython
beautifulsoup4==4.11.1
- # via pydata-sphinx-theme
-black==22.3.0
- # via -r dev_requirements.in
+ # via
+ # pydata-sphinx-theme
+ # sec-certs (./../pyproject.toml)
+billiard==4.0.2
+ # via sec-certs (./../pyproject.toml)
+black==22.10.0
+ # via sec-certs (./../pyproject.toml)
+blis==0.7.9
+ # via thinc
+build==0.9.0
+ # via pip-tools
+catalogue==2.0.8
+ # via
+ # spacy
+ # srsly
+ # thinc
certifi==2022.12.7
# via requests
cfgv==3.3.1
# via pre-commit
-charset-normalizer==2.0.12
+charset-normalizer==2.1.1
# via requests
-click==8.1.2
+click==8.1.3
# via
# black
# jupyter-cache
# pip-tools
-coverage[toml]==6.3.2
+ # sec-certs (./../pyproject.toml)
+ # typer
+comm==0.1.2
+ # via ipykernel
+confection==0.0.3
+ # via thinc
+contourpy==1.0.6
+ # via matplotlib
+coverage[toml]==6.5.0
# via pytest-cov
-debugpy==1.6.0
+cycler==0.11.0
+ # via matplotlib
+cymem==2.0.7
+ # via
+ # preshed
+ # spacy
+ # thinc
+debugpy==1.6.4
# via ipykernel
decorator==5.1.1
# via ipython
-distlib==0.3.4
+deprecation==2.1.0
+ # via pikepdf
+distlib==0.3.6
# via virtualenv
+distro==1.8.0
+ # via tabula-py
docutils==0.17.1
# via
- # myst-nb
# myst-parser
# pydata-sphinx-theme
# sphinx
- # sphinx-togglebutton
+en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1.tar.gz
+ # via sec-certs (./../pyproject.toml)
entrypoints==0.4
# via jupyter-client
-executing==0.8.3
+exceptiongroup==1.0.4
+ # via pytest
+executing==1.2.0
# via stack-data
-fastjsonschema==2.15.3
+fastjsonschema==2.16.2
# via nbformat
-filelock==3.6.0
+filelock==3.8.2
# via virtualenv
-flake8==4.0.1
+flake8==6.0.0
# via
- # -r dev_requirements.in
# flake8-future-annotations
+ # sec-certs (./../pyproject.toml)
flake8-future-annotations==1.0.0
- # via -r dev_requirements.in
-gprof2dot==2021.2.21
+ # via sec-certs (./../pyproject.toml)
+fonttools==4.38.0
+ # via matplotlib
+gprof2dot==2022.7.29
# via pytest-profiling
-greenlet==1.1.2
+greenlet==2.0.1
# via sqlalchemy
-identify==2.4.12
+html5lib==1.1
+ # via sec-certs (./../pyproject.toml)
+identify==2.5.9
# via pre-commit
-idna==3.3
+idna==3.4
# via requests
-imagesize==1.3.0
+imagesize==1.4.1
# via sphinx
-importlib-metadata==4.11.3
+importlib-metadata==5.1.0
# via
# jupyter-cache
# myst-nb
+ # sphinx
+importlib-resources==5.10.1
+ # via jsonschema
iniconfig==1.1.1
# via pytest
-ipykernel==6.13.0
- # via myst-nb
-ipython==8.2.0
+ipykernel==6.19.1
+ # via
+ # ipywidgets
+ # myst-nb
+ # sec-certs (./../pyproject.toml)
+ipython==8.6.0
# via
# ipykernel
+ # ipywidgets
# myst-nb
+ # sec-certs (./../pyproject.toml)
+ipywidgets==8.0.3
+ # via sec-certs (./../pyproject.toml)
isort==5.10.1
- # via -r dev_requirements.in
-jedi==0.18.1
+ # via sec-certs (./../pyproject.toml)
+jedi==0.18.2
# via ipython
-jinja2==3.1.1
+jinja2==3.1.2
# via
# myst-parser
+ # spacy
# sphinx
-jsonschema==4.4.0
- # via nbformat
+joblib==1.2.0
+ # via scikit-learn
+jsonschema==4.17.3
+ # via
+ # nbformat
+ # sec-certs (./../pyproject.toml)
jupyter-cache==0.5.0
# via myst-nb
-jupyter-client==7.2.2
+jupyter-client==7.4.8
# via
# ipykernel
# nbclient
-jupyter-core==4.10.0
+jupyter-core==5.1.0
# via
# jupyter-client
# nbformat
-markdown-it-py==1.1.0
+jupyterlab-widgets==3.0.4
+ # via ipywidgets
+kiwisolver==1.4.4
+ # via matplotlib
+langcodes==3.3.0
+ # via spacy
+lxml==4.9.1
+ # via
+ # pikepdf
+ # sec-certs (./../pyproject.toml)
+markdown-it-py==2.1.0
# via
# mdit-py-plugins
# myst-parser
markupsafe==2.1.1
# via jinja2
-matplotlib-inline==0.1.3
+matplotlib==3.6.2
+ # via
+ # pysankeybeta
+ # seaborn
+ # sec-certs (./../pyproject.toml)
+matplotlib-inline==0.1.6
# via
# ipykernel
# ipython
-mccabe==0.6.1
+mccabe==0.7.0
# via flake8
-mdit-py-plugins==0.3.0
+mdit-py-plugins==0.3.3
# via myst-parser
-memory-profiler==0.60.0
+mdurl==0.1.2
+ # via markdown-it-py
+memory-profiler==0.61.0
# via pytest-monitor
-mypy==0.942
- # via -r dev_requirements.in
+murmurhash==1.0.9
+ # via
+ # preshed
+ # spacy
+ # thinc
+mypy==0.991
+ # via sec-certs (./../pyproject.toml)
mypy-extensions==0.4.3
# via
# black
# mypy
-myst-nb==0.14.0
- # via -r dev_requirements.in
-myst-parser==0.17.2
+myst-nb==0.17.1
+ # via sec-certs (./../pyproject.toml)
+myst-parser==0.18.1
# via myst-nb
nbclient==0.5.13
- # via jupyter-cache
-nbformat==5.3.0
+ # via
+ # jupyter-cache
+ # myst-nb
+nbformat==5.7.0
# via
# jupyter-cache
# myst-nb
# nbclient
-nest-asyncio==1.5.5
+nest-asyncio==1.5.6
# via
# ipykernel
# jupyter-client
# nbclient
-nodeenv==1.6.0
+networkx==2.8.8
+ # via sec-certs (./../pyproject.toml)
+nodeenv==1.7.0
# via pre-commit
-packaging==21.3
+numpy==1.23.5
+ # via
+ # blis
+ # contourpy
+ # matplotlib
+ # pandas
+ # pysankeybeta
+ # scikit-learn
+ # scipy
+ # seaborn
+ # sec-certs (./../pyproject.toml)
+ # spacy
+ # tabula-py
+ # thinc
+packaging==22.0
# via
+ # build
+ # deprecation
# ipykernel
+ # matplotlib
+ # pikepdf
# pydata-sphinx-theme
# pytest
+ # setuptools-scm
+ # spacy
# sphinx
+pandas==1.5.2
+ # via
+ # pysankeybeta
+ # seaborn
+ # sec-certs (./../pyproject.toml)
+ # tabula-py
parso==0.8.3
# via jedi
-pathspec==0.9.0
+pathspec==0.10.2
# via black
-pep517==0.12.0
- # via pip-tools
+pathy==0.10.1
+ # via spacy
+pdftotext==2.2.2
+ # via sec-certs (./../pyproject.toml)
+pep517==0.13.0
+ # via build
pexpect==4.8.0
# via ipython
pickleshare==0.7.5
# via ipython
-pip-tools==6.5.1
- # via -r dev_requirements.in
-platformdirs==2.5.1
+pikepdf==6.2.5
+ # via sec-certs (./../pyproject.toml)
+pillow==9.3.0
+ # via
+ # matplotlib
+ # pikepdf
+ # sec-certs (./../pyproject.toml)
+pip-tools==6.11.0
+ # via sec-certs (./../pyproject.toml)
+pkgconfig==1.5.5
+ # via sec-certs (./../pyproject.toml)
+pkgutil-resolve-name==1.3.10
+ # via jsonschema
+platformdirs==2.6.0
# via
# black
+ # jupyter-core
# virtualenv
pluggy==1.0.0
# via pytest
-pre-commit==2.18.1
- # via -r dev_requirements.in
-prompt-toolkit==3.0.29
+pre-commit==2.20.0
+ # via sec-certs (./../pyproject.toml)
+preshed==3.0.8
+ # via
+ # spacy
+ # thinc
+prompt-toolkit==3.0.36
# via ipython
-psutil==5.9.0
+psutil==5.9.4
# via
# ipykernel
# memory-profiler
@@ -175,81 +303,120 @@ ptyprocess==0.7.0
# via pexpect
pure-eval==0.2.2
# via stack-data
-py==1.11.0
- # via pytest
-pycodestyle==2.8.0
+pycodestyle==2.10.0
# via flake8
+pydantic==1.10.2
+ # via
+ # confection
+ # spacy
+ # thinc
pydata-sphinx-theme==0.8.1
# via sphinx-book-theme
-pyflakes==2.4.0
+pyflakes==3.0.1
# via flake8
-pygments==2.12.0
+pygments==2.13.0
# via
# ipython
# sphinx
-pyparsing==3.0.7
- # via packaging
-pyrsistent==0.18.1
+pyparsing==3.0.9
+ # via matplotlib
+pypdf2==2.11.2
+ # via sec-certs (./../pyproject.toml)
+pyrsistent==0.19.2
# via jsonschema
-pytest==7.1.1
+pysankeybeta==1.4.0
+ # via sec-certs (./../pyproject.toml)
+pytest==7.2.0
# via
- # -r dev_requirements.in
# pytest-cov
# pytest-monitor
# pytest-profiling
-pytest-cov==3.0.0
- # via -r dev_requirements.in
-pytest-monitor==1.6.3
- # via -r dev_requirements.in
+ # sec-certs (./../pyproject.toml)
+pytest-cov==4.0.0
+ # via sec-certs (./../pyproject.toml)
+pytest-monitor==1.6.5
+ # via sec-certs (./../pyproject.toml)
pytest-profiling==1.7.0
- # via -r dev_requirements.in
+ # via sec-certs (./../pyproject.toml)
python-dateutil==2.8.2
- # via jupyter-client
-pytz==2022.1
- # via babel
-pyupgrade==3.2.3
- # via -r dev_requirements.in
+ # via
+ # jupyter-client
+ # matplotlib
+ # pandas
+ # sec-certs (./../pyproject.toml)
+pytz==2022.6
+ # via
+ # babel
+ # pandas
+pyupgrade==3.3.1
+ # via sec-certs (./../pyproject.toml)
pyyaml==6.0
# via
# jupyter-cache
# myst-nb
# myst-parser
# pre-commit
+ # sec-certs (./../pyproject.toml)
# sphinx-book-theme
-pyzmq==22.3.0
- # via jupyter-client
-requests==2.27.1
+pyzmq==24.0.1
+ # via
+ # ipykernel
+ # jupyter-client
+rapidfuzz==2.13.3
+ # via sec-certs (./../pyproject.toml)
+requests==2.28.1
# via
# pytest-monitor
+ # sec-certs (./../pyproject.toml)
+ # spacy
# sphinx
+scikit-learn==1.2.0
+ # via sec-certs (./../pyproject.toml)
+scipy==1.9.3
+ # via
+ # scikit-learn
+ # sec-certs (./../pyproject.toml)
+seaborn==0.12.1
+ # via
+ # pysankeybeta
+ # sec-certs (./../pyproject.toml)
+setuptools-scm==7.0.5
+ # via sec-certs (./../pyproject.toml)
six==1.16.0
# via
# asttokens
+ # html5lib
# pytest-profiling
# python-dateutil
- # virtualenv
+smart-open==6.2.0
+ # via pathy
snowballstemmer==2.2.0
# via sphinx
soupsieve==2.3.2.post1
# via beautifulsoup4
+spacy==3.4.3
+ # via
+ # en-core-web-sm
+ # sec-certs (./../pyproject.toml)
+spacy-legacy==3.0.10
+ # via spacy
+spacy-loggers==1.0.4
+ # via spacy
sphinx==4.5.0
# via
- # -r dev_requirements.in
# myst-nb
# myst-parser
# pydata-sphinx-theme
+ # sec-certs (./../pyproject.toml)
# sphinx-book-theme
# sphinx-copybutton
# sphinx-design
- # sphinx-togglebutton
-sphinx-book-theme==0.3.2
- # via -r dev_requirements.in
-sphinx-copybutton==0.5.0
- # via -r dev_requirements.in
-sphinx-design==0.1.0
- # via -r dev_requirements.in
-sphinx-togglebutton==0.3.1
- # via myst-nb
+sphinx-book-theme==0.3.3
+ # via sec-certs (./../pyproject.toml)
+sphinx-copybutton==0.5.1
+ # via sec-certs (./../pyproject.toml)
+sphinx-design==0.3.0
+ # via sec-certs (./../pyproject.toml)
sphinxcontrib-applehelp==1.0.2
# via sphinx
sphinxcontrib-devhelp==1.0.2
@@ -262,61 +429,97 @@ sphinxcontrib-qthelp==1.0.3
# via sphinx
sphinxcontrib-serializinghtml==1.1.5
# via sphinx
-sqlalchemy==1.4.35
+sqlalchemy==1.4.44
# via jupyter-cache
-stack-data==0.2.0
+srsly==2.4.5
+ # via
+ # confection
+ # spacy
+ # thinc
+stack-data==0.6.2
# via ipython
-tabulate==0.8.9
+tabula-py==2.6.0
+ # via sec-certs (./../pyproject.toml)
+tabulate==0.9.0
# via jupyter-cache
+thinc==8.1.5
+ # via spacy
+threadpoolctl==3.1.0
+ # via scikit-learn
tokenize-rt==5.0.0
# via pyupgrade
toml==0.10.2
# via pre-commit
tomli==2.0.1
# via
+ # black
+ # build
# coverage
# mypy
# pep517
# pytest
-tornado==6.1
+ # setuptools-scm
+tornado==6.2
# via
# ipykernel
# jupyter-client
-traitlets==5.1.1
+tqdm==4.64.1
+ # via
+ # sec-certs (./../pyproject.toml)
+ # spacy
+traitlets==5.6.0
# via
+ # comm
# ipykernel
# ipython
+ # ipywidgets
# jupyter-client
# jupyter-core
# matplotlib-inline
# nbclient
# nbformat
-types-python-dateutil==2.8.10
- # via -r dev_requirements.in
-types-pyyaml==6.0.5
- # via -r dev_requirements.in
-types-requests==2.27.16
- # via -r dev_requirements.in
-types-urllib3==1.26.11
+typer==0.7.0
+ # via
+ # pathy
+ # spacy
+types-python-dateutil==2.8.19.4
+ # via sec-certs (./../pyproject.toml)
+types-pyyaml==6.0.12.2
+ # via sec-certs (./../pyproject.toml)
+types-requests==2.28.11.5
+ # via sec-certs (./../pyproject.toml)
+types-urllib3==1.26.25.4
# via types-requests
-typing-extensions==4.1.1
+typing-extensions==4.4.0
# via
# mypy
# myst-nb
# myst-parser
-urllib3==1.26.9
+ # pydantic
+ # pypdf2
+ # setuptools-scm
+urllib3==1.26.13
# via requests
-virtualenv==20.14.0
+virtualenv==20.17.1
# via pre-commit
+wasabi==0.10.1
+ # via
+ # spacy
+ # thinc
wcwidth==0.2.5
# via prompt-toolkit
-wheel==0.37.1
+webencodings==0.5.1
+ # via html5lib
+wheel==0.38.4
# via
# pip-tools
# pytest-monitor
- # sphinx-togglebutton
-zipp==3.8.0
- # via importlib-metadata
+widgetsnbextension==4.0.4
+ # via ipywidgets
+zipp==3.11.0
+ # via
+ # importlib-metadata
+ # importlib-resources
# The following packages are considered to be unsafe in a requirements file:
# pip
diff --git a/requirements/requirements.in b/requirements/requirements.in
deleted file mode 100644
index 8b66cc67..00000000
--- a/requirements/requirements.in
+++ /dev/null
@@ -1,30 +0,0 @@
-beautifulsoup4
-billiard
-click
-html5lib
-jsonschema
-lxml
-matplotlib
-numpy
-pandas
-pdftotext
-pikepdf
-Pillow>=9.2.0
-PyPDF2
-python-dateutil
-PyYAML
-rapidfuzz
-requests
-scikit-learn
-tabula-py
-tqdm
-setuptools-scm
-ipykernel
-ipywidgets
-spacy
-en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1.tar.gz
-pkgconfig
-seaborn
-pySankeyBeta
-scipy>=1.9.0
-networkx \ No newline at end of file
diff --git a/requirements/requirements.txt b/requirements/requirements.txt
index 1947ab3a..91411c35 100644
--- a/requirements/requirements.txt
+++ b/requirements/requirements.txt
@@ -1,366 +1,303 @@
-argon2-cffi==21.3.0
- # via notebook
-argon2-cffi-bindings==21.2.0
- # via argon2-cffi
-asttokens==2.0.5
+appnope==0.1.3
+ # via
+ # ipykernel
+ # ipython
+asttokens==2.2.1
# via stack-data
-attrs==21.4.0
+attrs==22.1.0
# via jsonschema
backcall==0.2.0
# via ipython
-beautifulsoup4==4.10.0
- # via
- # -r requirements.in
- # nbconvert
-billiard==3.6.4.0
- # via -r requirements.in
-bleach==5.0.0
- # via nbconvert
+beautifulsoup4==4.11.1
+ # via sec-certs (./../pyproject.toml)
+billiard==4.0.2
+ # via sec-certs (./../pyproject.toml)
blis==0.7.9
# via thinc
-catalogue==2.0.7
+catalogue==2.0.8
# via
# spacy
# srsly
# thinc
certifi==2022.12.7
# via requests
-cffi==1.15.0
- # via argon2-cffi-bindings
-charset-normalizer==2.0.12
+charset-normalizer==2.1.1
# via requests
-click==8.1.2
+click==8.1.3
# via
- # -r requirements.in
+ # sec-certs (./../pyproject.toml)
# typer
+comm==0.1.2
+ # via ipykernel
confection==0.0.3
# via thinc
+contourpy==1.0.6
+ # via matplotlib
cycler==0.11.0
# via matplotlib
-cymem==2.0.6
+cymem==2.0.7
# via
# preshed
# spacy
# thinc
-debugpy==1.6.0
+debugpy==1.6.4
# via ipykernel
decorator==5.1.1
# via ipython
-defusedxml==0.7.1
- # via nbconvert
-distro==1.7.0
+deprecation==2.1.0
+ # via pikepdf
+distro==1.8.0
# via tabula-py
-en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1.tar.gz
- # via -r requirements.in
+en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1.tar.gz
+ # via sec-certs (./../pyproject.toml)
entrypoints==0.4
- # via
- # jupyter-client
- # nbconvert
-executing==0.8.3
+ # via jupyter-client
+executing==1.2.0
# via stack-data
-fastjsonschema==2.15.3
- # via nbformat
-fonttools==4.31.2
+fonttools==4.38.0
# via matplotlib
html5lib==1.1
- # via -r requirements.in
-idna==3.3
+ # via sec-certs (./../pyproject.toml)
+idna==3.4
# via requests
-ipykernel==6.12.1
+importlib-resources==5.10.1
+ # via jsonschema
+ipykernel==6.19.1
# via
- # -r requirements.in
# ipywidgets
- # notebook
-ipython==8.2.0
+ # sec-certs (./../pyproject.toml)
+ipython==8.7.0
# via
# ipykernel
# ipywidgets
-ipython-genutils==0.2.0
- # via
- # ipywidgets
- # notebook
-ipywidgets==7.7.0
- # via -r requirements.in
-jarowinkler==1.0.2
- # via rapidfuzz
-jedi==0.18.1
+ipywidgets==8.0.3
+ # via sec-certs (./../pyproject.toml)
+jedi==0.18.2
# via ipython
-jinja2==3.1.1
- # via
- # nbconvert
- # notebook
- # spacy
+jinja2==3.1.2
+ # via spacy
joblib==1.2.0
# via scikit-learn
-jsonschema==4.4.0
- # via
- # -r requirements.in
- # nbformat
-jupyter-client==7.2.1
- # via
- # ipykernel
- # nbclient
- # notebook
-jupyter-core==4.9.2
- # via
- # jupyter-client
- # nbconvert
- # nbformat
- # notebook
-jupyterlab-pygments==0.2.2
- # via nbconvert
-jupyterlab-widgets==1.1.0
+jsonschema==4.17.3
+ # via sec-certs (./../pyproject.toml)
+jupyter-client==7.4.8
+ # via ipykernel
+jupyter-core==5.1.0
+ # via jupyter-client
+jupyterlab-widgets==3.0.4
# via ipywidgets
-kiwisolver==1.4.2
+kiwisolver==1.4.4
# via matplotlib
langcodes==3.3.0
# via spacy
lxml==4.9.1
# via
- # -r requirements.in
- # nbconvert
# pikepdf
+ # sec-certs (./../pyproject.toml)
markupsafe==2.1.1
+ # via jinja2
+matplotlib==3.6.2
# via
- # jinja2
- # nbconvert
-matplotlib==3.5.1
- # via
- # -r requirements.in
# pysankeybeta
# seaborn
-matplotlib-inline==0.1.3
+ # sec-certs (./../pyproject.toml)
+matplotlib-inline==0.1.6
# via
# ipykernel
# ipython
-mistune==0.8.4
- # via nbconvert
-murmurhash==1.0.7
+murmurhash==1.0.9
# via
# preshed
# spacy
# thinc
-nbclient==0.6.0
- # via nbconvert
-nbconvert==6.5.1
- # via notebook
-nbformat==5.3.0
- # via
- # ipywidgets
- # nbclient
- # nbconvert
- # notebook
-nest-asyncio==1.5.5
+nest-asyncio==1.5.6
# via
# ipykernel
# jupyter-client
- # nbclient
- # notebook
-networkx==2.8.7
- # via -r requirements.in
-notebook==6.4.12
- # via widgetsnbextension
-numpy==1.22.3
+networkx==2.8.8
+ # via sec-certs (./../pyproject.toml)
+numpy==1.23.5
# via
- # -r requirements.in
# blis
+ # contourpy
# matplotlib
# pandas
# pysankeybeta
# scikit-learn
# scipy
# seaborn
+ # sec-certs (./../pyproject.toml)
# spacy
# tabula-py
# thinc
-packaging==21.3
+packaging==22.0
# via
+ # deprecation
# ipykernel
# matplotlib
- # nbconvert
# pikepdf
# setuptools-scm
# spacy
-pandas==1.4.2
+pandas==1.5.2
# via
- # -r requirements.in
# pysankeybeta
# seaborn
+ # sec-certs (./../pyproject.toml)
# tabula-py
-pandocfilters==1.5.0
- # via nbconvert
parso==0.8.3
# via jedi
-pathy==0.6.1
+pathy==0.10.1
# via spacy
pdftotext==2.2.2
- # via -r requirements.in
+ # via sec-certs (./../pyproject.toml)
pexpect==4.8.0
# via ipython
pickleshare==0.7.5
# via ipython
-pikepdf==5.1.1
- # via -r requirements.in
+pikepdf==6.2.5
+ # via sec-certs (./../pyproject.toml)
pillow==9.3.0
# via
- # -r requirements.in
# matplotlib
# pikepdf
+ # sec-certs (./../pyproject.toml)
pkgconfig==1.5.5
- # via -r requirements.in
-preshed==3.0.6
+ # via sec-certs (./../pyproject.toml)
+pkgutil-resolve-name==1.3.10
+ # via jsonschema
+platformdirs==2.6.0
+ # via jupyter-core
+preshed==3.0.8
# via
# spacy
# thinc
-prometheus-client==0.14.1
- # via notebook
-prompt-toolkit==3.0.29
+prompt-toolkit==3.0.36
# via ipython
-psutil==5.9.0
+psutil==5.9.4
# via ipykernel
ptyprocess==0.7.0
- # via
- # pexpect
- # terminado
+ # via pexpect
pure-eval==0.2.2
# via stack-data
-pycparser==2.21
- # via cffi
-pydantic==1.8.2
+pydantic==1.10.2
# via
# confection
# spacy
# thinc
-pygments==2.11.2
- # via
- # ipython
- # nbconvert
-pyparsing==3.0.7
- # via
- # matplotlib
- # packaging
-pypdf2==1.27.5
- # via -r requirements.in
-pyrsistent==0.18.1
+pygments==2.13.0
+ # via ipython
+pyparsing==3.0.9
+ # via matplotlib
+pypdf2==2.11.2
+ # via sec-certs (./../pyproject.toml)
+pyrsistent==0.19.2
# via jsonschema
pysankeybeta==1.4.0
- # via -r requirements.in
+ # via sec-certs (./../pyproject.toml)
python-dateutil==2.8.2
# via
- # -r requirements.in
# jupyter-client
# matplotlib
# pandas
-pytz==2022.1
+ # sec-certs (./../pyproject.toml)
+pytz==2022.6
# via pandas
pyyaml==6.0
- # via -r requirements.in
-pyzmq==22.3.0
+ # via sec-certs (./../pyproject.toml)
+pyzmq==24.0.1
# via
+ # ipykernel
# jupyter-client
- # notebook
-rapidfuzz==2.0.7
- # via -r requirements.in
-requests==2.27.1
+rapidfuzz==2.13.3
+ # via sec-certs (./../pyproject.toml)
+requests==2.28.1
# via
- # -r requirements.in
+ # sec-certs (./../pyproject.toml)
# spacy
-scikit-learn==1.0.2
- # via -r requirements.in
+scikit-learn==1.2.0
+ # via sec-certs (./../pyproject.toml)
scipy==1.9.3
# via
- # -r requirements.in
# scikit-learn
- # seaborn
-seaborn==0.11.2
+ # sec-certs (./../pyproject.toml)
+seaborn==0.12.1
# via
- # -r requirements.in
# pysankeybeta
-send2trash==1.8.0
- # via notebook
-setuptools-scm==6.4.2
- # via -r requirements.in
+ # sec-certs (./../pyproject.toml)
+setuptools-scm==7.0.5
+ # via sec-certs (./../pyproject.toml)
six==1.16.0
# via
# asttokens
- # bleach
# html5lib
# python-dateutil
-smart-open==5.2.1
+smart-open==6.2.0
# via pathy
-soupsieve==2.3.1
+soupsieve==2.3.2.post1
# via beautifulsoup4
spacy==3.4.3
# via
- # -r requirements.in
# en-core-web-sm
+ # sec-certs (./../pyproject.toml)
spacy-legacy==3.0.10
# via spacy
-spacy-loggers==1.0.2
+spacy-loggers==1.0.4
# via spacy
-srsly==2.4.3
+srsly==2.4.5
# via
# confection
# spacy
# thinc
-stack-data==0.2.0
+stack-data==0.6.2
# via ipython
-tabula-py==2.3.0
- # via -r requirements.in
-terminado==0.13.3
- # via notebook
+tabula-py==2.6.0
+ # via sec-certs (./../pyproject.toml)
thinc==8.1.5
# via spacy
threadpoolctl==3.1.0
# via scikit-learn
-tinycss2==1.1.1
- # via nbconvert
tomli==2.0.1
# via setuptools-scm
-tornado==6.1
+tornado==6.2
# via
# ipykernel
# jupyter-client
- # notebook
- # terminado
-tqdm==4.64.0
+tqdm==4.64.1
# via
- # -r requirements.in
+ # sec-certs (./../pyproject.toml)
# spacy
-traitlets==5.1.1
+traitlets==5.6.0
# via
+ # comm
# ipykernel
# ipython
# ipywidgets
# jupyter-client
# jupyter-core
# matplotlib-inline
- # nbclient
- # nbconvert
- # nbformat
- # notebook
-typer==0.4.1
+typer==0.7.0
# via
# pathy
# spacy
-typing-extensions==4.2.0
- # via pydantic
-urllib3==1.26.9
+typing-extensions==4.4.0
+ # via
+ # pydantic
+ # pypdf2
+ # setuptools-scm
+urllib3==1.26.13
# via requests
-wasabi==0.9.1
+wasabi==0.10.1
# via
# spacy
- # spacy-loggers
# thinc
wcwidth==0.2.5
# via prompt-toolkit
webencodings==0.5.1
- # via
- # bleach
- # html5lib
- # tinycss2
-widgetsnbextension==3.6.0
+ # via html5lib
+widgetsnbextension==4.0.4
# via ipywidgets
+zipp==3.11.0
+ # via importlib-resources
# The following packages are considered to be unsafe in a requirements file:
# setuptools
diff --git a/requirements/test_requirements.in b/requirements/test_requirements.in
deleted file mode 100644
index 0c69b775..00000000
--- a/requirements/test_requirements.in
+++ /dev/null
@@ -1,3 +0,0 @@
-pytest
-coverage
-pytest-cov
diff --git a/requirements/test_requirements.txt b/requirements/test_requirements.txt
index b04802c7..f60c03ca 100644
--- a/requirements/test_requirements.txt
+++ b/requirements/test_requirements.txt
@@ -1,26 +1,325 @@
-attrs==21.4.0
- # via pytest
-coverage[toml]==6.3.2
+appnope==0.1.3
+ # via
+ # ipykernel
+ # ipython
+asttokens==2.2.1
+ # via stack-data
+attrs==22.1.0
+ # via
+ # jsonschema
+ # pytest
+backcall==0.2.0
+ # via ipython
+beautifulsoup4==4.11.1
+ # via sec-certs (./../pyproject.toml)
+billiard==4.0.2
+ # via sec-certs (./../pyproject.toml)
+blis==0.7.9
+ # via thinc
+catalogue==2.0.8
+ # via
+ # spacy
+ # srsly
+ # thinc
+certifi==2022.12.7
+ # via requests
+charset-normalizer==2.1.1
+ # via requests
+click==8.1.3
+ # via
+ # sec-certs (./../pyproject.toml)
+ # typer
+comm==0.1.2
+ # via ipykernel
+confection==0.0.3
+ # via thinc
+contourpy==1.0.6
+ # via matplotlib
+coverage[toml]==6.5.0
# via
- # -r test_requirements.in
# pytest-cov
-iniconfig==1.1.1
+ # sec-certs (./../pyproject.toml)
+cycler==0.11.0
+ # via matplotlib
+cymem==2.0.7
+ # via
+ # preshed
+ # spacy
+ # thinc
+debugpy==1.6.4
+ # via ipykernel
+decorator==5.1.1
+ # via ipython
+deprecation==2.1.0
+ # via pikepdf
+distro==1.8.0
+ # via tabula-py
+en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1.tar.gz
+ # via sec-certs (./../pyproject.toml)
+entrypoints==0.4
+ # via jupyter-client
+exceptiongroup==1.0.4
# via pytest
-packaging==21.3
+executing==1.2.0
+ # via stack-data
+fonttools==4.38.0
+ # via matplotlib
+html5lib==1.1
+ # via sec-certs (./../pyproject.toml)
+idna==3.4
+ # via requests
+importlib-resources==5.10.1
+ # via jsonschema
+iniconfig==1.1.1
# via pytest
+ipykernel==6.19.1
+ # via
+ # ipywidgets
+ # sec-certs (./../pyproject.toml)
+ipython==8.7.0
+ # via
+ # ipykernel
+ # ipywidgets
+ipywidgets==8.0.3
+ # via sec-certs (./../pyproject.toml)
+jedi==0.18.2
+ # via ipython
+jinja2==3.1.2
+ # via spacy
+joblib==1.2.0
+ # via scikit-learn
+jsonschema==4.17.3
+ # via sec-certs (./../pyproject.toml)
+jupyter-client==7.4.8
+ # via ipykernel
+jupyter-core==5.1.0
+ # via jupyter-client
+jupyterlab-widgets==3.0.4
+ # via ipywidgets
+kiwisolver==1.4.4
+ # via matplotlib
+langcodes==3.3.0
+ # via spacy
+lxml==4.9.1
+ # via
+ # pikepdf
+ # sec-certs (./../pyproject.toml)
+markupsafe==2.1.1
+ # via jinja2
+matplotlib==3.6.2
+ # via
+ # pysankeybeta
+ # seaborn
+ # sec-certs (./../pyproject.toml)
+matplotlib-inline==0.1.6
+ # via
+ # ipykernel
+ # ipython
+murmurhash==1.0.9
+ # via
+ # preshed
+ # spacy
+ # thinc
+nest-asyncio==1.5.6
+ # via
+ # ipykernel
+ # jupyter-client
+networkx==2.8.8
+ # via sec-certs (./../pyproject.toml)
+numpy==1.23.5
+ # via
+ # blis
+ # contourpy
+ # matplotlib
+ # pandas
+ # pysankeybeta
+ # scikit-learn
+ # scipy
+ # seaborn
+ # sec-certs (./../pyproject.toml)
+ # spacy
+ # tabula-py
+ # thinc
+packaging==22.0
+ # via
+ # deprecation
+ # ipykernel
+ # matplotlib
+ # pikepdf
+ # pytest
+ # setuptools-scm
+ # spacy
+pandas==1.5.2
+ # via
+ # pysankeybeta
+ # seaborn
+ # sec-certs (./../pyproject.toml)
+ # tabula-py
+parso==0.8.3
+ # via jedi
+pathy==0.10.1
+ # via spacy
+pdftotext==2.2.2
+ # via sec-certs (./../pyproject.toml)
+pexpect==4.8.0
+ # via ipython
+pickleshare==0.7.5
+ # via ipython
+pikepdf==6.2.5
+ # via sec-certs (./../pyproject.toml)
+pillow==9.3.0
+ # via
+ # matplotlib
+ # pikepdf
+ # sec-certs (./../pyproject.toml)
+pkgconfig==1.5.5
+ # via sec-certs (./../pyproject.toml)
+pkgutil-resolve-name==1.3.10
+ # via jsonschema
+platformdirs==2.6.0
+ # via jupyter-core
pluggy==1.0.0
# via pytest
-py==1.11.0
- # via pytest
-pyparsing==3.0.7
- # via packaging
-pytest==7.1.1
+preshed==3.0.8
+ # via
+ # spacy
+ # thinc
+prompt-toolkit==3.0.36
+ # via ipython
+psutil==5.9.4
+ # via ipykernel
+ptyprocess==0.7.0
+ # via pexpect
+pure-eval==0.2.2
+ # via stack-data
+pydantic==1.10.2
+ # via
+ # confection
+ # spacy
+ # thinc
+pygments==2.13.0
+ # via ipython
+pyparsing==3.0.9
+ # via matplotlib
+pypdf2==2.11.2
+ # via sec-certs (./../pyproject.toml)
+pyrsistent==0.19.2
+ # via jsonschema
+pysankeybeta==1.4.0
+ # via sec-certs (./../pyproject.toml)
+pytest==7.2.0
# via
- # -r test_requirements.in
# pytest-cov
-pytest-cov==3.0.0
- # via -r test_requirements.in
+ # sec-certs (./../pyproject.toml)
+pytest-cov==4.0.0
+ # via sec-certs (./../pyproject.toml)
+python-dateutil==2.8.2
+ # via
+ # jupyter-client
+ # matplotlib
+ # pandas
+ # sec-certs (./../pyproject.toml)
+pytz==2022.6
+ # via pandas
+pyyaml==6.0
+ # via sec-certs (./../pyproject.toml)
+pyzmq==24.0.1
+ # via
+ # ipykernel
+ # jupyter-client
+rapidfuzz==2.13.3
+ # via sec-certs (./../pyproject.toml)
+requests==2.28.1
+ # via
+ # sec-certs (./../pyproject.toml)
+ # spacy
+scikit-learn==1.2.0
+ # via sec-certs (./../pyproject.toml)
+scipy==1.9.3
+ # via
+ # scikit-learn
+ # sec-certs (./../pyproject.toml)
+seaborn==0.12.1
+ # via
+ # pysankeybeta
+ # sec-certs (./../pyproject.toml)
+setuptools-scm==7.0.5
+ # via sec-certs (./../pyproject.toml)
+six==1.16.0
+ # via
+ # asttokens
+ # html5lib
+ # python-dateutil
+smart-open==6.2.0
+ # via pathy
+soupsieve==2.3.2.post1
+ # via beautifulsoup4
+spacy==3.4.3
+ # via
+ # en-core-web-sm
+ # sec-certs (./../pyproject.toml)
+spacy-legacy==3.0.10
+ # via spacy
+spacy-loggers==1.0.4
+ # via spacy
+srsly==2.4.5
+ # via
+ # confection
+ # spacy
+ # thinc
+stack-data==0.6.2
+ # via ipython
+tabula-py==2.6.0
+ # via sec-certs (./../pyproject.toml)
+thinc==8.1.5
+ # via spacy
+threadpoolctl==3.1.0
+ # via scikit-learn
tomli==2.0.1
# via
# coverage
# pytest
+ # setuptools-scm
+tornado==6.2
+ # via
+ # ipykernel
+ # jupyter-client
+tqdm==4.64.1
+ # via
+ # sec-certs (./../pyproject.toml)
+ # spacy
+traitlets==5.6.0
+ # via
+ # comm
+ # ipykernel
+ # ipython
+ # ipywidgets
+ # jupyter-client
+ # jupyter-core
+ # matplotlib-inline
+typer==0.7.0
+ # via
+ # pathy
+ # spacy
+typing-extensions==4.4.0
+ # via
+ # pydantic
+ # pypdf2
+ # setuptools-scm
+urllib3==1.26.13
+ # via requests
+wasabi==0.10.1
+ # via
+ # spacy
+ # thinc
+wcwidth==0.2.5
+ # via prompt-toolkit
+webencodings==0.5.1
+ # via html5lib
+widgetsnbextension==4.0.4
+ # via ipywidgets
+zipp==3.11.0
+ # via importlib-resources
+
+# The following packages are considered to be unsafe in a requirements file:
+# setuptools
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 1db53172..00000000
--- a/setup.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python3
-from setuptools import find_packages, setup
-
-setup(
- name="sec-certs",
- author="Petr Svenda, Stanislav Bobon, Jan Jancar, Adam Janovsky, Jiri Michalik",
- author_email="svenda@fi.muni.cz",
- packages=find_packages(),
- license="MIT",
- description="Tool for analysis of security certificates",
- long_description=open("README.md").read(),
- long_description_content_type="text/markdown",
- classifiers=[
- "Development Status :: 3 - Alpha",
- "License :: OSI Approved :: MIT License",
- "Topic :: Security",
- "Topic :: Security :: Cryptography",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- "Intended Audience :: Developers",
- "Intended Audience :: Science/Research",
- ],
- python_requires=">=3.8",
- install_requires=open("requirements/requirements.in").read().splitlines(),
- extras_require={
- "dev": open("requirements/dev_requirements.in").read().splitlines(),
- "test": open("requirements/test_requirements.in").read().splitlines(),
- },
- include_package_data=True,
- package_data={"sec_certs": ["settings.yaml", "settings-schema.json", "rules.yaml"]},
- entry_points={"console_scripts": ["sec-certs=sec_certs.cli:main"]},
- project_urls={
- "Project homepage": "https://seccerts.org",
- "GitHub repository": "https://github.com/crocs-muni/sec-certs/",
- "Documentation": "https://seccerts.org/docs",
- },
-)
diff --git a/sec_certs/__init__.py b/src/sec_certs/__init__.py
index 816ea2b8..816ea2b8 100644
--- a/sec_certs/__init__.py
+++ b/src/sec_certs/__init__.py
diff --git a/sec_certs/__main__.py b/src/sec_certs/__main__.py
index 1d699b85..1d699b85 100644
--- a/sec_certs/__main__.py
+++ b/src/sec_certs/__main__.py
diff --git a/sec_certs/cert_rules.py b/src/sec_certs/cert_rules.py
index 145566f7..145566f7 100644
--- a/sec_certs/cert_rules.py
+++ b/src/sec_certs/cert_rules.py
diff --git a/sec_certs/cli.py b/src/sec_certs/cli.py
index a25b55ee..a25b55ee 100644
--- a/sec_certs/cli.py
+++ b/src/sec_certs/cli.py
diff --git a/sec_certs/config/__init__.py b/src/sec_certs/config/__init__.py
index e69de29b..e69de29b 100644
--- a/sec_certs/config/__init__.py
+++ b/src/sec_certs/config/__init__.py
diff --git a/sec_certs/config/configuration.py b/src/sec_certs/config/configuration.py
index 43cfe698..43cfe698 100644
--- a/sec_certs/config/configuration.py
+++ b/src/sec_certs/config/configuration.py
diff --git a/sec_certs/config/settings-schema.json b/src/sec_certs/config/settings-schema.json
index a31f6b3f..a31f6b3f 100644
--- a/sec_certs/config/settings-schema.json
+++ b/src/sec_certs/config/settings-schema.json
diff --git a/sec_certs/config/settings.yaml b/src/sec_certs/config/settings.yaml
index 8d645758..8d645758 100644
--- a/sec_certs/config/settings.yaml
+++ b/src/sec_certs/config/settings.yaml
diff --git a/sec_certs/constants.py b/src/sec_certs/constants.py
index f71bb3c3..f71bb3c3 100644
--- a/sec_certs/constants.py
+++ b/src/sec_certs/constants.py
diff --git a/sec_certs/dataset/__init__.py b/src/sec_certs/dataset/__init__.py
index bace4ddd..bace4ddd 100644
--- a/sec_certs/dataset/__init__.py
+++ b/src/sec_certs/dataset/__init__.py
diff --git a/sec_certs/dataset/common_criteria.py b/src/sec_certs/dataset/common_criteria.py
index b4a7a21f..6b7b4279 100644
--- a/sec_certs/dataset/common_criteria.py
+++ b/src/sec_certs/dataset/common_criteria.py
@@ -55,7 +55,7 @@ class CCDataset(Dataset[CommonCriteriaCert, CCAuxillaryDatasets], ComplexSeriali
certs: dict[str, CommonCriteriaCert] = dict(),
root_dir: str | Path = constants.DUMMY_NONEXISTING_PATH,
name: str | None = None,
- description: str = None,
+ description: str = "",
state: Dataset.DatasetInternalState | None = None,
auxillary_datasets: CCAuxillaryDatasets | None = None,
):
diff --git a/sec_certs/dataset/cpe.py b/src/sec_certs/dataset/cpe.py
index 927ce674..927ce674 100644
--- a/sec_certs/dataset/cpe.py
+++ b/src/sec_certs/dataset/cpe.py
diff --git a/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py
index b65c81c6..ebbd9171 100644
--- a/sec_certs/dataset/cve.py
+++ b/src/sec_certs/dataset/cve.py
@@ -91,7 +91,7 @@ class CVEDataset(JSONPathDataset, ComplexSerializableType):
@classmethod
def download_cves(cls, output_path_str: str, start_year: int, end_year: int):
output_path = Path(output_path_str)
- if not output_path.exists:
+ if not output_path.exists():
output_path.mkdir()
urls = [cls.CVE_URL + str(x) + ".json.zip" for x in range(start_year, end_year + 1)]
diff --git a/sec_certs/dataset/dataset.py b/src/sec_certs/dataset/dataset.py
index 49a6b340..1c89e771 100644
--- a/sec_certs/dataset/dataset.py
+++ b/src/sec_certs/dataset/dataset.py
@@ -61,7 +61,7 @@ class Dataset(Generic[CertSubType, AuxillaryDatasetsSubType], ComplexSerializabl
certs: dict[str, CertSubType] = dict(),
root_dir: str | Path = constants.DUMMY_NONEXISTING_PATH,
name: str | None = None,
- description: str = None,
+ description: str = "",
state: DatasetInternalState | None = None,
auxillary_datasets: AuxillaryDatasetsSubType | None = None,
):
diff --git a/sec_certs/dataset/fips.py b/src/sec_certs/dataset/fips.py
index bdf220c8..14571f93 100644
--- a/sec_certs/dataset/fips.py
+++ b/src/sec_certs/dataset/fips.py
@@ -44,7 +44,7 @@ class FIPSDataset(Dataset[FIPSCertificate, FIPSAuxillaryDatasets], ComplexSerial
certs: dict[str, FIPSCertificate] = dict(),
root_dir: str | Path = constants.DUMMY_NONEXISTING_PATH,
name: str | None = None,
- description: str = None,
+ description: str = "",
state: Dataset.DatasetInternalState | None = None,
auxillary_datasets: FIPSAuxillaryDatasets | None = None,
):
diff --git a/sec_certs/dataset/fips_algorithm.py b/src/sec_certs/dataset/fips_algorithm.py
index c48cff07..c48cff07 100644
--- a/sec_certs/dataset/fips_algorithm.py
+++ b/src/sec_certs/dataset/fips_algorithm.py
diff --git a/sec_certs/dataset/fips_iut.py b/src/sec_certs/dataset/fips_iut.py
index ce0f2f76..ce0f2f76 100644
--- a/sec_certs/dataset/fips_iut.py
+++ b/src/sec_certs/dataset/fips_iut.py
diff --git a/sec_certs/dataset/fips_mip.py b/src/sec_certs/dataset/fips_mip.py
index 05ca5854..05ca5854 100644
--- a/sec_certs/dataset/fips_mip.py
+++ b/src/sec_certs/dataset/fips_mip.py
diff --git a/sec_certs/dataset/json_path_dataset.py b/src/sec_certs/dataset/json_path_dataset.py
index 6eb4d968..6eb4d968 100644
--- a/sec_certs/dataset/json_path_dataset.py
+++ b/src/sec_certs/dataset/json_path_dataset.py
diff --git a/sec_certs/dataset/protection_profile.py b/src/sec_certs/dataset/protection_profile.py
index edfb6850..edfb6850 100644
--- a/sec_certs/dataset/protection_profile.py
+++ b/src/sec_certs/dataset/protection_profile.py
diff --git a/sec_certs/model/__init__.py b/src/sec_certs/model/__init__.py
index fe1024f9..fe1024f9 100644
--- a/sec_certs/model/__init__.py
+++ b/src/sec_certs/model/__init__.py
diff --git a/sec_certs/model/cpe_matching.py b/src/sec_certs/model/cpe_matching.py
index 0febea5d..0febea5d 100644
--- a/sec_certs/model/cpe_matching.py
+++ b/src/sec_certs/model/cpe_matching.py
diff --git a/sec_certs/model/evaluation.py b/src/sec_certs/model/evaluation.py
index dd5eaffd..dd5eaffd 100644
--- a/sec_certs/model/evaluation.py
+++ b/src/sec_certs/model/evaluation.py
diff --git a/sec_certs/model/reference_finder.py b/src/sec_certs/model/reference_finder.py
index 117a8b9d..117a8b9d 100644
--- a/sec_certs/model/reference_finder.py
+++ b/src/sec_certs/model/reference_finder.py
diff --git a/sec_certs/model/sar_transformer.py b/src/sec_certs/model/sar_transformer.py
index a5bcff57..a5bcff57 100644
--- a/sec_certs/model/sar_transformer.py
+++ b/src/sec_certs/model/sar_transformer.py
diff --git a/sec_certs/model/transitive_vulnerability_finder.py b/src/sec_certs/model/transitive_vulnerability_finder.py
index 1d4c8243..1d4c8243 100644
--- a/sec_certs/model/transitive_vulnerability_finder.py
+++ b/src/sec_certs/model/transitive_vulnerability_finder.py
diff --git a/sec_certs/rules.yaml b/src/sec_certs/rules.yaml
index 87589d72..87589d72 100644
--- a/sec_certs/rules.yaml
+++ b/src/sec_certs/rules.yaml
diff --git a/sec_certs/sample/__init__.py b/src/sec_certs/sample/__init__.py
index ecbbd541..ecbbd541 100644
--- a/sec_certs/sample/__init__.py
+++ b/src/sec_certs/sample/__init__.py
diff --git a/sec_certs/sample/cc_certificate_id.py b/src/sec_certs/sample/cc_certificate_id.py
index 428ca73b..428ca73b 100644
--- a/sec_certs/sample/cc_certificate_id.py
+++ b/src/sec_certs/sample/cc_certificate_id.py
diff --git a/sec_certs/sample/cc_maintenance_update.py b/src/sec_certs/sample/cc_maintenance_update.py
index abe3b176..abe3b176 100644
--- a/sec_certs/sample/cc_maintenance_update.py
+++ b/src/sec_certs/sample/cc_maintenance_update.py
diff --git a/sec_certs/sample/certificate.py b/src/sec_certs/sample/certificate.py
index bb49c0df..bb49c0df 100644
--- a/sec_certs/sample/certificate.py
+++ b/src/sec_certs/sample/certificate.py
diff --git a/sec_certs/sample/common_criteria.py b/src/sec_certs/sample/common_criteria.py
index acd54178..acd54178 100644
--- a/sec_certs/sample/common_criteria.py
+++ b/src/sec_certs/sample/common_criteria.py
diff --git a/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py
index a7532f7f..a7532f7f 100644
--- a/sec_certs/sample/cpe.py
+++ b/src/sec_certs/sample/cpe.py
diff --git a/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py
index ec024d35..ec024d35 100644
--- a/sec_certs/sample/cve.py
+++ b/src/sec_certs/sample/cve.py
diff --git a/sec_certs/sample/fips.py b/src/sec_certs/sample/fips.py
index 770b21b0..aec791d4 100644
--- a/sec_certs/sample/fips.py
+++ b/src/sec_certs/sample/fips.py
@@ -9,6 +9,7 @@ from typing import Any, Callable, ClassVar, Final, Literal
import dateutil
import numpy as np
+import pandas as pd
import requests
from bs4 import BeautifulSoup, Tag
from tabula import read_pdf
@@ -596,7 +597,11 @@ class FIPSCertificate(
try:
tabular_data = read_pdf(cert.state.policy_pdf_path, pages=list(table_rich_page_numbers), silent=True)
cert.heuristics.algorithms |= set(
- itertools.chain.from_iterable(tables.get_algs_from_table(df.to_string()) for df in tabular_data)
+ itertools.chain.from_iterable(
+ tables.get_algs_from_table(df.to_string())
+ for df in tabular_data
+ if isinstance(df, pd.DataFrame)
+ )
)
except Exception as e:
logger.warning(f"Error when parsing tables from {cert.dgst}: {e}")
diff --git a/sec_certs/sample/fips_algorithm.py b/src/sec_certs/sample/fips_algorithm.py
index 16f19e64..16f19e64 100644
--- a/sec_certs/sample/fips_algorithm.py
+++ b/src/sec_certs/sample/fips_algorithm.py
diff --git a/sec_certs/sample/fips_iut.py b/src/sec_certs/sample/fips_iut.py
index cb521ee4..cb521ee4 100644
--- a/sec_certs/sample/fips_iut.py
+++ b/src/sec_certs/sample/fips_iut.py
diff --git a/sec_certs/sample/fips_mip.py b/src/sec_certs/sample/fips_mip.py
index 6918d2aa..6918d2aa 100644
--- a/sec_certs/sample/fips_mip.py
+++ b/src/sec_certs/sample/fips_mip.py
diff --git a/sec_certs/sample/protection_profile.py b/src/sec_certs/sample/protection_profile.py
index b7c2ec34..b7c2ec34 100644
--- a/sec_certs/sample/protection_profile.py
+++ b/src/sec_certs/sample/protection_profile.py
diff --git a/sec_certs/sample/sar.py b/src/sec_certs/sample/sar.py
index 31359299..31359299 100644
--- a/sec_certs/sample/sar.py
+++ b/src/sec_certs/sample/sar.py
diff --git a/sec_certs/serialization/__init__.py b/src/sec_certs/serialization/__init__.py
index e69de29b..e69de29b 100644
--- a/sec_certs/serialization/__init__.py
+++ b/src/sec_certs/serialization/__init__.py
diff --git a/sec_certs/serialization/json.py b/src/sec_certs/serialization/json.py
index 69bbc2ff..69bbc2ff 100644
--- a/sec_certs/serialization/json.py
+++ b/src/sec_certs/serialization/json.py
diff --git a/sec_certs/serialization/pandas.py b/src/sec_certs/serialization/pandas.py
index dc0aae18..dc0aae18 100644
--- a/sec_certs/serialization/pandas.py
+++ b/src/sec_certs/serialization/pandas.py
diff --git a/sec_certs/utils/__init__.py b/src/sec_certs/utils/__init__.py
index e69de29b..e69de29b 100644
--- a/sec_certs/utils/__init__.py
+++ b/src/sec_certs/utils/__init__.py
diff --git a/sec_certs/utils/extract.py b/src/sec_certs/utils/extract.py
index 09460fb7..09460fb7 100644
--- a/sec_certs/utils/extract.py
+++ b/src/sec_certs/utils/extract.py
diff --git a/sec_certs/utils/helpers.py b/src/sec_certs/utils/helpers.py
index 302f4e6a..302f4e6a 100644
--- a/sec_certs/utils/helpers.py
+++ b/src/sec_certs/utils/helpers.py
diff --git a/sec_certs/utils/pandas.py b/src/sec_certs/utils/pandas.py
index 97068e77..97068e77 100644
--- a/sec_certs/utils/pandas.py
+++ b/src/sec_certs/utils/pandas.py
diff --git a/sec_certs/utils/parallel_processing.py b/src/sec_certs/utils/parallel_processing.py
index 50806a67..50806a67 100644
--- a/sec_certs/utils/parallel_processing.py
+++ b/src/sec_certs/utils/parallel_processing.py
diff --git a/sec_certs/utils/pdf.py b/src/sec_certs/utils/pdf.py
index 1d04a697..1d04a697 100644
--- a/sec_certs/utils/pdf.py
+++ b/src/sec_certs/utils/pdf.py
diff --git a/sec_certs/utils/sanitization.py b/src/sec_certs/utils/sanitization.py
index 2f9cd046..2f9cd046 100644
--- a/sec_certs/utils/sanitization.py
+++ b/src/sec_certs/utils/sanitization.py
diff --git a/sec_certs/utils/tables.py b/src/sec_certs/utils/tables.py
index 29def971..29def971 100644
--- a/sec_certs/utils/tables.py
+++ b/src/sec_certs/utils/tables.py
diff --git a/sec_certs/utils/tqdm.py b/src/sec_certs/utils/tqdm.py
index 77eeae94..77eeae94 100644
--- a/sec_certs/utils/tqdm.py
+++ b/src/sec_certs/utils/tqdm.py