aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAdam Janovsky2023-04-16 19:30:08 +0200
committerAdam Janovsky2023-04-16 19:30:08 +0200
commit88f46304f3d679b17e2f41b79134cd046e2ed732 (patch)
treedd7a9ad37ad724c72e52df7696c83e618b1509ac /src
parentc4a256bd2a28cef3c210d181e7f9b118ea25c8ee (diff)
downloadsec-certs-88f46304f3d679b17e2f41b79134cd046e2ed732.tar.gz
sec-certs-88f46304f3d679b17e2f41b79134cd046e2ed732.tar.zst
sec-certs-88f46304f3d679b17e2f41b79134cd046e2ed732.zip
defer few imports
Diffstat (limited to 'src')
-rw-r--r--src/sec_certs/dataset/cc.py3
-rw-r--r--src/sec_certs/model/cpe_matching.py3
-rw-r--r--src/sec_certs/sample/fips.py3
-rw-r--r--src/sec_certs/utils/pdf.py11
4 files changed, 15 insertions, 5 deletions
diff --git a/src/sec_certs/dataset/cc.py b/src/sec_certs/dataset/cc.py
index 910a0a6a..c2d9ca0c 100644
--- a/src/sec_certs/dataset/cc.py
+++ b/src/sec_certs/dataset/cc.py
@@ -12,7 +12,6 @@ from typing import ClassVar, Iterator, cast
import numpy as np
import pandas as pd
import requests
-import tabula
from bs4 import BeautifulSoup, NavigableString, Tag
import sec_certs.utils.sanitization
@@ -1532,6 +1531,8 @@ class CCSchemeDataset:
@staticmethod
def get_turkey_certified():
+ import tabula
+
results = []
with tempfile.TemporaryDirectory() as tmpdir:
pdf_path = Path(tmpdir) / "turkey.pdf"
diff --git a/src/sec_certs/model/cpe_matching.py b/src/sec_certs/model/cpe_matching.py
index 5d08d7af..3015aeaa 100644
--- a/src/sec_certs/model/cpe_matching.py
+++ b/src/sec_certs/model/cpe_matching.py
@@ -6,7 +6,6 @@ import operator
import re
from typing import Pattern
-import spacy
from rapidfuzz import fuzz
from sec_certs import cert_rules, constants
@@ -28,6 +27,8 @@ class CPEClassifier:
vendors_: set[str]
def __init__(self, match_threshold: int = 80, n_max_matches: int = 10, spacy_model_to_use: str = "en_core_web_sm"):
+ import spacy
+
self.match_threshold = match_threshold
self.n_max_matches = n_max_matches
self.nlp = spacy.load(spacy_model_to_use, disable=["parser", "ner"])
diff --git a/src/sec_certs/sample/fips.py b/src/sec_certs/sample/fips.py
index 82aa1c18..d351c3ce 100644
--- a/src/sec_certs/sample/fips.py
+++ b/src/sec_certs/sample/fips.py
@@ -12,7 +12,6 @@ import numpy as np
import pandas as pd
import requests
from bs4 import BeautifulSoup, Tag
-from tabula import read_pdf
from sec_certs import constants
from sec_certs.cert_rules import FIPS_ALGS_IN_TABLE, fips_rules
@@ -632,6 +631,8 @@ class FIPSCertificate(
Retrieves IDs of algorithms from tables inside security policy pdfs.
External library is used to handle this.
"""
+ from tabula import read_pdf
+
if table_rich_page_numbers := tables.find_pages_with_tables(cert.state.policy_txt_path):
pdf.repair_pdf(cert.state.policy_pdf_path)
try:
diff --git a/src/sec_certs/utils/pdf.py b/src/sec_certs/utils/pdf.py
index edda0570..749a8a5a 100644
--- a/src/sec_certs/utils/pdf.py
+++ b/src/sec_certs/utils/pdf.py
@@ -11,8 +11,6 @@ from typing import Any
import pdftotext
import pikepdf
-from pypdf import PdfReader
-from pypdf.generic import BooleanObject, ByteStringObject, FloatObject, IndirectObject, NumberObject, TextStringObject
from sec_certs import constants
from sec_certs.constants import (
@@ -156,6 +154,15 @@ def extract_pdf_metadata(filepath: Path) -> tuple[str, dict[str, Any] | None]:
:param filepath: THe path to the PDF.
:return: A tuple of the result code (see constants) and the metadata dictionary.
"""
+ from pypdf import PdfReader
+ from pypdf.generic import (
+ BooleanObject,
+ ByteStringObject,
+ FloatObject,
+ IndirectObject,
+ NumberObject,
+ TextStringObject,
+ )
def map_metadata_value(val, nope_out=False):
if isinstance(val, BooleanObject):