diff --git a/.coveragerc b/.coveragerc index 792a045..dc9f912 100644 --- a/.coveragerc +++ b/.coveragerc @@ -9,7 +9,7 @@ omit = */setup.py */build_venv/* source = - vidocp + cv-analysis relative_files = True data_file = .coverage diff --git a/.gitignore b/.gitignore index 87a1ace..cdfefcc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ build_venv/ /table_parsing.egg-info /target/ /tests/ -/vidocp.egg-info/dependency_links.txt -/vidocp.egg-info/PKG-INFO -/vidocp.egg-info/SOURCES.txt -/vidocp.egg-info/top_level.txt +/cv-analysis.egg-info/dependency_links.txt +/cv-analysis.egg-info/PKG-INFO +/cv-analysis.egg-info/SOURCES.txt +/cv-analysis.egg-info/top_level.txt diff --git a/Dockerfile b/Dockerfile index 98abde6..98a29a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ ARG BASE_ROOT="nexus.iqser.com:5001/red/" ARG VERSION_TAG=latest -FROM ${BASE_ROOT}vidocp-base:${VERSION_TAG} +FROM ${BASE_ROOT}cv-analysis-base:${VERSION_TAG} WORKDIR /app/service COPY ./src ./src -COPY vidocp ./vidocp +COPY cv-analysis ./cv-analysis RUN python3 -m pip install --upgrade pip RUN python3 -m pip install -e . diff --git a/README.md b/README.md index 1654cc1..f2c8b9c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Vidocp — Visual Document Parsing +# cv-analysis — Visual Document Parsing This repository implements computer vision based approaches for detecting and parsing visual features such as tables or previous redactions in documents. @@ -6,8 +6,8 @@ previous redactions in documents. ## Installation ```bash -git clone ssh://git@git.iqser.com:2222/rr/vidocp.git -cd vidocp +git clone ssh://git@git.iqser.com:2222/rr/cv-analysis.git +cd cv-analysis python -m venv env source env/bin/activate @@ -30,7 +30,7 @@ the specific task. The below snippet shows hot to find the outlines of previous redactions. ```python -from vidocp.redaction_detection import find_redactions +from cv_analysis.redaction_detection import find_redactions import pdf2image import numpy as np @@ -109,7 +109,7 @@ bash setup/docker.sh Build head image ```bash -docker build -f Dockerfile -t vidocp . --build-arg BASE_ROOT="" +docker build -f Dockerfile -t cv-analysis . --build-arg BASE_ROOT="" ``` ### Usage (service) @@ -117,7 +117,7 @@ docker build -f Dockerfile -t vidocp . --build-arg BASE_ROOT="" Shell 1 ```bash -docker run --rm --net=host --rm vidocp +docker run --rm --net=host --rm cv-analysis ``` Shell 2 diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java index 3992c89..ec8905b 100644 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java @@ -33,8 +33,8 @@ import com.atlassian.bamboo.specs.model.task.ScriptTaskProperties.Location; @BambooSpec public class PlanSpec { - private static final String SERVICE_NAME = "vidocp"; - private static final String SERVICE_NAME_BASE = "vidocp-base"; + private static final String SERVICE_NAME = "cv-analysis"; + private static final String SERVICE_NAME_BASE = "cv-analysis-base"; private static final String SERVICE_KEY = SERVICE_NAME.toUpperCase().replaceAll("-","").replaceAll("_",""); @@ -72,7 +72,7 @@ public class PlanSpec { return new Plan( project(), SERVICE_NAME, new BambooKey(SERVICE_KEY)) - .description("Docker build for vidocp.") + .description("Docker build for cv-analysis.") // .variables() .stages(new Stage("Build Stage") .jobs( diff --git a/bamboo-specs/src/main/resources/scripts/sonar-scan.sh b/bamboo-specs/src/main/resources/scripts/sonar-scan.sh index d53c736..834c288 100755 --- a/bamboo-specs/src/main/resources/scripts/sonar-scan.sh +++ b/bamboo-specs/src/main/resources/scripts/sonar-scan.sh @@ -35,7 +35,7 @@ then echo "Sonar Scan for branch: ${bamboo_planRepository_1_branch}" /usr/bin/sonar-scanner/bin/sonar-scanner -X\ -Dsonar.projectKey=RED_$SERVICE_NAME \ - -Dsonar.sources=src,vidocp \ + -Dsonar.sources=src,cv_analysis \ -Dsonar.host.url=https://sonarqube.iqser.com \ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \ -Dsonar.branch.name=${bamboo_planRepository_1_branch} \ @@ -48,7 +48,7 @@ else echo "Sonar Scan for PR with key1: ${bamboo_repository_pr_key}" /usr/bin/sonar-scanner/bin/sonar-scanner \ -Dsonar.projectKey=RED_$SERVICE_NAME \ - -Dsonar.sources=src,vidocp \ + -Dsonar.sources=src,cv_analysis \ -Dsonar.host.url=https://sonarqube.iqser.com \ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \ -Dsonar.pullrequest.key=${bamboo_repository_pr_key} \ diff --git a/bamboo-specs/target/classes/buildjob/PlanSpec.class b/bamboo-specs/target/classes/buildjob/PlanSpec.class index 802ed7a..a55fd30 100644 Binary files a/bamboo-specs/target/classes/buildjob/PlanSpec.class and b/bamboo-specs/target/classes/buildjob/PlanSpec.class differ diff --git a/bamboo-specs/target/classes/scripts/sonar-scan.sh b/bamboo-specs/target/classes/scripts/sonar-scan.sh index e36505d..834c288 100644 --- a/bamboo-specs/target/classes/scripts/sonar-scan.sh +++ b/bamboo-specs/target/classes/scripts/sonar-scan.sh @@ -16,11 +16,11 @@ pip install -r requirements.txt echo "DVC pull step" dvc pull -# echo "coverage calculation" -# coverage run -m pytest --ignore=tests -# echo "coverage report generation" -# coverage report -m -# coverage xml +echo "coverage calculation" +coverage run -m pytest +echo "coverage report generation" +coverage report -m +coverage xml SERVICE_NAME=$1 @@ -35,7 +35,7 @@ then echo "Sonar Scan for branch: ${bamboo_planRepository_1_branch}" /usr/bin/sonar-scanner/bin/sonar-scanner -X\ -Dsonar.projectKey=RED_$SERVICE_NAME \ - -Dsonar.sources=src,vidocp \ + -Dsonar.sources=src,cv_analysis \ -Dsonar.host.url=https://sonarqube.iqser.com \ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \ -Dsonar.branch.name=${bamboo_planRepository_1_branch} \ @@ -48,7 +48,7 @@ else echo "Sonar Scan for PR with key1: ${bamboo_repository_pr_key}" /usr/bin/sonar-scanner/bin/sonar-scanner \ -Dsonar.projectKey=RED_$SERVICE_NAME \ - -Dsonar.sources=src,vidocp \ + -Dsonar.sources=src,cv_analysis \ -Dsonar.host.url=https://sonarqube.iqser.com \ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \ -Dsonar.pullrequest.key=${bamboo_repository_pr_key} \ diff --git a/vidocp/__init__.py b/cv_analysis/__init__.py similarity index 100% rename from vidocp/__init__.py rename to cv_analysis/__init__.py diff --git a/vidocp/config.py b/cv_analysis/config.py similarity index 95% rename from vidocp/config.py rename to cv_analysis/config.py index 87226be..bdb1ebf 100644 --- a/vidocp/config.py +++ b/cv_analysis/config.py @@ -2,7 +2,7 @@ from envyaml import EnvYAML -from vidocp.locations import CONFIG_FILE +from cv_analysis.locations import CONFIG_FILE def _get_item_and_maybe_make_dotindexable(container, item): diff --git a/vidocp/figure_detection.py b/cv_analysis/figure_detection.py similarity index 70% rename from vidocp/figure_detection.py rename to cv_analysis/figure_detection.py index d9a8acd..927a9b7 100644 --- a/vidocp/figure_detection.py +++ b/cv_analysis/figure_detection.py @@ -2,12 +2,12 @@ import cv2 import numpy as np from pdf2image import pdf2image -from vidocp.utils.detection import detect_large_coherent_structures -from vidocp.utils.display import show_mpl -from vidocp.utils.draw import draw_rectangles -from vidocp.utils.post_processing import remove_included -from vidocp.utils.filters import is_large_enough, has_acceptable_format -from vidocp.utils.text import remove_primary_text_regions +from cv_analysis.utils.detection import detect_large_coherent_structures +from cv_analysis.utils.display import show_mpl +from cv_analysis.utils.draw import draw_rectangles +from cv_analysis.utils.post_processing import remove_included +from cv_analysis.utils.filters import is_large_enough, has_acceptable_format +from cv_analysis.utils.text import remove_primary_text_regions def is_likely_figure(cont, min_area=5000, max_width_to_hight_ratio=6): diff --git a/vidocp/layout_detection.py b/cv_analysis/layout_detection.py similarity index 100% rename from vidocp/layout_detection.py rename to cv_analysis/layout_detection.py diff --git a/vidocp/layout_parsing.py b/cv_analysis/layout_parsing.py similarity index 91% rename from vidocp/layout_parsing.py rename to cv_analysis/layout_parsing.py index 1c1a95d..ae5559f 100644 --- a/vidocp/layout_parsing.py +++ b/cv_analysis/layout_parsing.py @@ -6,9 +6,9 @@ import cv2 import numpy as np from pdf2image import pdf2image -from vidocp.utils.display import show_mpl -from vidocp.utils.draw import draw_rectangles -from vidocp.utils.post_processing import remove_overlapping, remove_included, has_no_parent +from cv_analysis.utils.display import show_mpl +from cv_analysis.utils.draw import draw_rectangles +from cv_analysis.utils.post_processing import remove_overlapping, remove_included, has_no_parent def is_likely_segment(rect, min_area=100): diff --git a/vidocp/locations.py b/cv_analysis/locations.py similarity index 100% rename from vidocp/locations.py rename to cv_analysis/locations.py diff --git a/vidocp/redaction_detection.py b/cv_analysis/redaction_detection.py similarity index 88% rename from vidocp/redaction_detection.py rename to cv_analysis/redaction_detection.py index 25f8d1f..29e49a5 100644 --- a/vidocp/redaction_detection.py +++ b/cv_analysis/redaction_detection.py @@ -5,9 +5,9 @@ import numpy as np import pdf2image from iteration_utilities import starfilter, first -from vidocp.utils.display import show_mpl -from vidocp.utils.draw import draw_contours -from vidocp.utils.filters import is_large_enough, is_filled, is_boxy +from cv_analysis.utils.display import show_mpl +from cv_analysis.utils.draw import draw_contours +from cv_analysis.utils.filters import is_large_enough, is_filled, is_boxy def is_likely_redaction(contour, hierarchy, min_area): diff --git a/vidocp/table_parsing.py b/cv_analysis/table_parsing.py similarity index 94% rename from vidocp/table_parsing.py rename to cv_analysis/table_parsing.py index 1d3ef99..9bfdcba 100644 --- a/vidocp/table_parsing.py +++ b/cv_analysis/table_parsing.py @@ -6,11 +6,11 @@ import cv2 import numpy as np from pdf2image import pdf2image -from vidocp.utils.display import show_mpl -from vidocp.utils.draw import draw_rectangles -from vidocp.utils.post_processing import xywh_to_vecs, xywh_to_vec_rect, adjacent1d, remove_isolated -from vidocp.utils.deskew import deskew_histbased -from vidocp.layout_parsing import parse_layout +from cv_analysis.utils.display import show_mpl +from cv_analysis.utils.draw import draw_rectangles +from cv_analysis.utils.post_processing import xywh_to_vecs, xywh_to_vec_rect, adjacent1d, remove_isolated +from cv_analysis.utils.deskew import deskew_histbased +from cv_analysis.layout_parsing import parse_layout def add_external_contours(image, img): diff --git a/vidocp/test/__init__.py b/cv_analysis/test/__init__.py similarity index 100% rename from vidocp/test/__init__.py rename to cv_analysis/test/__init__.py diff --git a/cv_analysis/test/config.py b/cv_analysis/test/config.py new file mode 100644 index 0000000..a0aec7b --- /dev/null +++ b/cv_analysis/test/config.py @@ -0,0 +1,4 @@ +from cv_analysis.config import Config +from cv_analysis.locations import TEST_CONFIG_FILE + +TEST_CONFIG = Config(TEST_CONFIG_FILE) diff --git a/vidocp/test/config.yaml b/cv_analysis/test/config.yaml similarity index 100% rename from vidocp/test/config.yaml rename to cv_analysis/test/config.yaml diff --git a/vidocp/test/test_data/table.jpg b/cv_analysis/test/test_data/table.jpg similarity index 100% rename from vidocp/test/test_data/table.jpg rename to cv_analysis/test/test_data/table.jpg diff --git a/vidocp/test/test_data/table.json b/cv_analysis/test/test_data/table.json similarity index 100% rename from vidocp/test/test_data/table.json rename to cv_analysis/test/test_data/table.json diff --git a/vidocp/test/unit_tests/config_test.py b/cv_analysis/test/unit_tests/config_test.py similarity index 63% rename from vidocp/test/unit_tests/config_test.py rename to cv_analysis/test/unit_tests/config_test.py index 6abb852..678b4b7 100644 --- a/vidocp/test/unit_tests/config_test.py +++ b/cv_analysis/test/unit_tests/config_test.py @@ -1,4 +1,4 @@ -from vidocp.config import CONFIG +from cv_analysis.config import CONFIG def test_config(): diff --git a/vidocp/test/unit_tests/table_test.py b/cv_analysis/test/unit_tests/table_test.py similarity index 64% rename from vidocp/test/unit_tests/table_test.py rename to cv_analysis/test/unit_tests/table_test.py index 1e80e4c..ee60000 100644 --- a/vidocp/test/unit_tests/table_test.py +++ b/cv_analysis/test/unit_tests/table_test.py @@ -1,11 +1,11 @@ from os.path import join import json -from vidocp.table_parsing import parse_table -from vidocp.locations import TEST_DATA_DIR -from vidocp.test.config import TEST_CONFIG -from vidocp.utils.test_metrics import compute_document_score -from vidocp.utils.preprocessing import open_pdf +from cv_analysis.table_parsing import parse_table +from cv_analysis.locations import TEST_DATA_DIR +from cv_analysis.test.config import TEST_CONFIG +from cv_analysis.utils.test_metrics import compute_document_score +from cv_analysis.utils.preprocessing import open_pdf def test_table_parsing(): diff --git a/vidocp/utils/__init__.py b/cv_analysis/utils/__init__.py similarity index 100% rename from vidocp/utils/__init__.py rename to cv_analysis/utils/__init__.py diff --git a/vidocp/utils/deskew.py b/cv_analysis/utils/deskew.py similarity index 98% rename from vidocp/utils/deskew.py rename to cv_analysis/utils/deskew.py index 8a081e0..a2dd609 100644 --- a/vidocp/utils/deskew.py +++ b/cv_analysis/utils/deskew.py @@ -2,7 +2,7 @@ import numpy as np from scipy.ndimage import rotate as rotate_ import cv2 -from vidocp.config import CONFIG +from cv_analysis.config import CONFIG def rotate_straight(im: np.array, skew_angle: int) -> np.array: diff --git a/vidocp/utils/detection.py b/cv_analysis/utils/detection.py similarity index 100% rename from vidocp/utils/detection.py rename to cv_analysis/utils/detection.py diff --git a/vidocp/utils/display.py b/cv_analysis/utils/display.py similarity index 100% rename from vidocp/utils/display.py rename to cv_analysis/utils/display.py diff --git a/vidocp/utils/draw.py b/cv_analysis/utils/draw.py similarity index 92% rename from vidocp/utils/draw.py rename to cv_analysis/utils/draw.py index 2f7ef06..0031f62 100644 --- a/vidocp/utils/draw.py +++ b/cv_analysis/utils/draw.py @@ -1,6 +1,6 @@ import cv2 -from vidocp.utils import copy_and_normalize_channels +from cv_analysis.utils import copy_and_normalize_channels def draw_contours(image, contours): diff --git a/vidocp/utils/filters.py b/cv_analysis/utils/filters.py similarity index 100% rename from vidocp/utils/filters.py rename to cv_analysis/utils/filters.py diff --git a/vidocp/utils/logging.py b/cv_analysis/utils/logging.py similarity index 93% rename from vidocp/utils/logging.py rename to cv_analysis/utils/logging.py index 729fdb4..792a3fa 100644 --- a/vidocp/utils/logging.py +++ b/cv_analysis/utils/logging.py @@ -2,7 +2,7 @@ import sys import logging -from vidocp.config import CONFIG +from cv_analysis.config import CONFIG def get_logger(): diff --git a/vidocp/utils/post_processing.py b/cv_analysis/utils/post_processing.py similarity index 100% rename from vidocp/utils/post_processing.py rename to cv_analysis/utils/post_processing.py diff --git a/vidocp/utils/preprocessing.py b/cv_analysis/utils/preprocessing.py similarity index 95% rename from vidocp/utils/preprocessing.py rename to cv_analysis/utils/preprocessing.py index 5f91393..70bab5e 100644 --- a/vidocp/utils/preprocessing.py +++ b/cv_analysis/utils/preprocessing.py @@ -3,7 +3,7 @@ import pdf2image from PIL import Image import cv2 -from vidocp.utils.deskew import deskew +from cv_analysis.utils.deskew import deskew def preprocess_pdf_image(page): diff --git a/vidocp/utils/test_metrics.py b/cv_analysis/utils/test_metrics.py similarity index 100% rename from vidocp/utils/test_metrics.py rename to cv_analysis/utils/test_metrics.py diff --git a/vidocp/utils/text.py b/cv_analysis/utils/text.py similarity index 100% rename from vidocp/utils/text.py rename to cv_analysis/utils/text.py diff --git a/vidocp/utils/utils.py b/cv_analysis/utils/utils.py similarity index 100% rename from vidocp/utils/utils.py rename to cv_analysis/utils/utils.py diff --git a/scripts/annotate.py b/scripts/annotate.py index 9ef1bce..306e60c 100644 --- a/scripts/annotate.py +++ b/scripts/annotate.py @@ -1,9 +1,9 @@ import argparse -from vidocp.table_parsing import annotate_tables_in_pdf -from vidocp.redaction_detection import annotate_redactions_in_pdf -from vidocp.layout_parsing import annotate_layout_in_pdf -from vidocp.figure_detection import detect_figures_in_pdf +from cv_analysis.table_parsing import annotate_tables_in_pdf +from cv_analysis.redaction_detection import annotate_redactions_in_pdf +from cv_analysis.layout_parsing import annotate_layout_in_pdf +from cv_analysis.figure_detection import detect_figures_in_pdf def parse_args(): diff --git a/scripts/client_mock.py b/scripts/client_mock.py index 0caf0a4..ddf8406 100644 --- a/scripts/client_mock.py +++ b/scripts/client_mock.py @@ -4,7 +4,7 @@ import json from multiprocessing.sharedctypes import Value import requests -from vidocp.utils.preprocessing import open_pdf +from cv_analysis.utils.preprocessing import open_pdf def parse_args(): diff --git a/scripts/deskew_demo.py b/scripts/deskew_demo.py index e97df9d..4a4032c 100644 --- a/scripts/deskew_demo.py +++ b/scripts/deskew_demo.py @@ -4,10 +4,10 @@ import numpy as np import pdf2image from PIL import Image -from vidocp.utils.deskew import deskew_histbased # , deskew_linebased -from vidocp.utils.display import show_mpl -from vidocp.utils.draw import draw_stats -from vidocp.table_parsing import parse_table +from cv_analysis.utils.deskew import deskew_histbased # , deskew_linebased +from cv_analysis.utils.display import show_mpl +from cv_analysis.utils.draw import draw_stats +from cv_analysis.table_parsing import parse_table def parse_args(): diff --git a/setup.py b/setup.py index 9fc73a8..28f6e1a 100644 --- a/setup.py +++ b/setup.py @@ -3,11 +3,11 @@ from distutils.core import setup setup( - name="vidocp", + name="cv_analysis", version="0.0.1", description="", author="", author_email="", url="", - packages=["vidocp"], + packages=["cv_analysis"], ) diff --git a/setup/docker.sh b/setup/docker.sh index d46db68..b7da059 100644 --- a/setup/docker.sh +++ b/setup/docker.sh @@ -9,5 +9,5 @@ python3 -m pip install --upgrade pip #pip install 'dvc[ssh]' #dvc pull -docker build -f Dockerfile_base -t vidocp-base . -docker build -f Dockerfile -t vidocp . \ No newline at end of file +docker build -f Dockerfile_base -t cv-analysis-base . +docker build -f Dockerfile -t cv-analysis . \ No newline at end of file diff --git a/src/run_service.py b/src/run_service.py index e8c80ed..1b76edb 100644 --- a/src/run_service.py +++ b/src/run_service.py @@ -8,15 +8,15 @@ from prometheus_client import Counter, Gauge from prometheus_flask_exporter import PrometheusMetrics from waitress import serve -from vidocp.utils import npconvert -from vidocp.utils.preprocessing import preprocess_pdf_image # TODO -from vidocp.table_parsing import parse_table # , detect_tables_in_pdf -from vidocp.redaction_detection import find_redactions # , detect_redactions_in_pdf -from vidocp.layout_parsing import parse_layout # , detect_layout_in_pdf #TODO -from vidocp.figure_detection import detect_figures # , detect_figures_in_pdf #TODO -from vidocp.utils.logging import logger -from vidocp.utils.preprocessing import open_pdf -from vidocp.config import CONFIG +from cv_analysis.utils import npconvert +from cv_analysis.utils.preprocessing import preprocess_pdf_image # TODO +from cv_analysis.table_parsing import parse_table # , detect_tables_in_pdf +from cv_analysis.redaction_detection import find_redactions # , detect_redactions_in_pdf +from cv_analysis.layout_parsing import parse_layout # , detect_layout_in_pdf #TODO +from cv_analysis.figure_detection import detect_figures # , detect_figures_in_pdf #TODO +from cv_analysis.utils.logging import logger +from cv_analysis.utils.preprocessing import open_pdf +from cv_analysis.config import CONFIG def suppress_user_warnings(): @@ -30,9 +30,9 @@ def main(): def run_server(): - file_counter = Counter("vidocp_file_counter", "count processed files") - # page_counter = Counter("vidocp_page_counter", "count pages from processed files") - ram_metric = Gauge("vidocp_memory_usage", "Memory usage in Mb") + file_counter = Counter("cv_analysis_file_counter", "count processed files") + # page_counter = Counter("cv-analysis_page_counter", "count pages from processed files") + ram_metric = Gauge("cv_analysis_memory_usage", "Memory usage in Mb") def start_monitoring(): file_counter.inc() @@ -146,19 +146,19 @@ def annotate(task): def make_art(): - art = """ - - ================================================================================================= - == ==== ============== ================= ========================================== - == ==== ============== ==== ================ ==== ========================================= - == ==== ============== ==== ================ ==== ========================================= - == ==== == == == ==== === ==== === ==== === === = ==== ==== === = === - == == ========== == ==== == == = == === = == = == = == = == = == - === == === ===== === ==== == = == ===== =========== == ======== ==== == ======= - === == === ==== ==== ==== == = == ===== ========= == ========= === ===== ======= - ==== ==== === ===== ==== == = == = == ======== = == ======= = == = == ======= - ===== ===== == == ==== ==== === ========= == ======== ==== === ======= - ================================================================================================= + art = r""" + __ __ + | \ | \ + _______ __ __ ______ _______ ______ | $$ __ __ _______ \$$ _______ + / \| \ / \ ______ | \ | \ | \ | $$| \ | \ / \| \ / \ +| $$$$$$$ \$$\ / $$| \ \$$$$$$\| $$$$$$$\ \$$$$$$\| $$| $$ | $$| $$$$$$$| $$| $$$$$$$ +| $$ \$$\ $$ \$$$$$$/ $$| $$ | $$ / $$| $$| $$ | $$ \$$ \ | $$ \$$ \ +| $$_____ \$$ $$ | $$$$$$$| $$ | $$| $$$$$$$| $$| $$__/ $$ _\$$$$$$\| $$ _\$$$$$$\ + \$$ \ \$$$ \$$ $$| $$ | $$ \$$ $$| $$ \$$ $$| $$| $$| $$ + \$$$$$$$ \$ \$$$$$$$ \$$ \$$ \$$$$$$$ \$$ _\$$$$$$$ \$$$$$$$ \$$ \$$$$$$$ + | \__| $$ + \$$ $$ + \$$$$$$ """ return art diff --git a/vidocp/test/config.py b/vidocp/test/config.py deleted file mode 100644 index 2fafa83..0000000 --- a/vidocp/test/config.py +++ /dev/null @@ -1,4 +0,0 @@ -from vidocp.config import Config -from vidocp.locations import TEST_CONFIG_FILE - -TEST_CONFIG = Config(TEST_CONFIG_FILE)