From fc1b6f6227d446247a3ffbd9fc766fe6f67ff55b Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sun, 24 May 2020 15:27:48 +0530 Subject: [PATCH 1/6] Add python38 test job for travis --- .travis.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7426bb0..2eabdb8 100755 --- a/.travis.yml +++ b/.travis.yml @@ -8,10 +8,6 @@ install: - make install jobs: include: - - stage: test - script: - - make test - python: '2.7' - stage: test script: - make test @@ -25,8 +21,13 @@ jobs: - make test python: '3.7' dist: xenial + - stage: test + script: + - make test + python: '3.8' + dist: xenial - stage: coverage - python: '3.6' + python: '3.8' script: - make test - codecov --verbose From 3afb72b872eb4a8e8fd34365c4d187c77e7f3a39 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sun, 24 May 2020 17:26:52 +0530 Subject: [PATCH 2/6] Fix read_pdf(url) and test data --- camelot/utils.py | 22 ++---- tests/data.py | 72 ++---------------- .../files/baseline_plots/test_joint_plot.png | Bin 48678 -> 33983 bytes tests/files/baseline_plots/test_line_plot.png | Bin 6833 -> 6832 bytes .../test_stream_contour_plot.png | Bin 13521 -> 14487 bytes tests/files/baseline_plots/test_text_plot.png | Bin 8992 -> 9112 bytes .../baseline_plots/test_textedge_plot.png | Bin 17978 -> 19000 bytes 7 files changed, 14 insertions(+), 80 deletions(-) diff --git a/camelot/utils.py b/camelot/utils.py index e7ad848..11d28dd 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -29,16 +29,9 @@ from pdfminer.layout import ( LTImage, ) - -PY3 = sys.version_info[0] >= 3 -if PY3: - from urllib.request import urlopen - from urllib.parse import urlparse as parse_url - from urllib.parse import uses_relative, uses_netloc, uses_params -else: - from urllib2 import urlopen - from urlparse import urlparse as parse_url - from urlparse import uses_relative, uses_netloc, uses_params +from urllib.request import Request, urlopen +from urllib.parse import urlparse as parse_url +from urllib.parse import uses_relative, uses_netloc, uses_params _VALID_URLS = set(uses_relative + uses_netloc + uses_params) @@ -90,11 +83,10 @@ def download_url(url): """ filename = "{}.pdf".format(random_string(6)) with tempfile.NamedTemporaryFile("wb", delete=False) as f: - obj = urlopen(url) - if PY3: - content_type = obj.info().get_content_type() - else: - content_type = obj.info().getheader("Content-Type") + headers = {"User-Agent": "Mozilla/5.0"} + request = Request(url, None, headers) + obj = urlopen(request) + content_type = obj.info().get_content_type() if content_type != "application/pdf": raise NotImplementedError("File format not supported") f.write(obj.read()) diff --git a/tests/data.py b/tests/data.py index 3338a81..2eeddb4 100755 --- a/tests/data.py +++ b/tests/data.py @@ -4,16 +4,6 @@ from __future__ import unicode_literals data_stream = [ - [ - "", - "Table: 5 Public Health Outlay 2012-13 (Budget Estimates) (Rs. in 000)", - "", - "", - "", - "", - "", - "", - ], ["States-A", "Revenue", "", "Capital", "", "Total", "Others(1)", "Total"], ["", "", "", "", "", "Revenue &", "", ""], ["", "Medical &", "Family", "Medical &", "Family", "", "", ""], @@ -829,18 +819,6 @@ data_stream_table_rotated = [ ] data_stream_two_tables_1 = [ - [ - "[In thousands (11,062.6 represents 11,062,600) For year ending December 31. Based on Uniform Crime Reporting (UCR)", - "", - "", - "", - "", - "", - "", - "", - "", - "", - ], [ "Program. Represents arrests reported (not charged) by 12,910 agencies with a total population of 247,526,916 as estimated", "", @@ -915,7 +893,7 @@ data_stream_two_tables_1 = [ "2,330 .9", ], [ - "Violent crime . . . . . . . .\n . .\n . .\n . .\n . .\n . .", + "Violent crime . . . . . . . .\n . .\n . .\n . .\n . .\n . .", "467 .9", "69 .1", "398 .8", @@ -1300,29 +1278,10 @@ data_stream_two_tables_1 = [ "", "", ], - [ - "", - "Source: U.S. Department of Justice, Federal Bureau of Investigation, Uniform Crime Reports, Arrests Master Files.", - "", - "", - "", - "", - "", - "", - "", - "", - ], ] + data_stream_two_tables_2 = [ - [ - "", - "Source: U.S. Department of Justice, Federal Bureau of Investigation, Uniform Crime Reports, Arrests Master Files.", - "", - "", - "", - "", - ], ["Table 325. Arrests by Race: 2009", "", "", "", "", ""], [ "[Based on Uniform Crime Reporting (UCR) Program. Represents arrests reported (not charged) by 12,371 agencies", @@ -1352,7 +1311,7 @@ data_stream_two_tables_2 = [ "123,656", ], [ - "Violent crime . . . . . . . .\n . .\n . .\n . .\n . .\n .\n .\n . .\n . .\n .\n .\n .\n .\n . .", + "Violent crime . . . . . . . .\n . .\n . .\n . .\n . .\n .\n .\n . .\n . .\n .\n .\n .\n .\n . .", "456,965", "268,346", "177,766", @@ -1600,16 +1559,9 @@ data_stream_two_tables_2 = [ "3,950", ], ["1 Except forcible rape and prostitution.", "", "", "", "", ""], - [ - "", - "Source: U.S. Department of Justice, Federal Bureau of Investigation, “Crime in the United States, Arrests,” September 2010,", - "", - "", - "", - "", - ], ] + data_stream_table_areas = [ ["", "One Withholding"], ["Payroll Period", "Allowance"], @@ -1776,18 +1728,7 @@ data_stream_columns = [ ] data_stream_split_text = [ - [ - "FEB", - "RUAR", - "Y 2014 M27 (BUS)", - "", - "ALPHABETIC LISTING BY T", - "YPE", - "", - "", - "", - "ABLPDM27", - ], + ["FEB", "RUAR", "Y 2014 M27 (BUS)", "", "", "", "", "", "", ""], ["", "", "", "", "OF ACTIVE LICENSES", "", "", "", "", "3/19/2014"], ["", "", "", "", "OKLAHOMA ABLE COMMIS", "SION", "", "", "", ""], ["LICENSE", "", "", "", "PREMISE", "", "", "", "", ""], @@ -2121,6 +2062,7 @@ data_stream_split_text = [ ], ] + data_stream_flag_size = [ [ "States", @@ -2820,7 +2762,7 @@ data_arabic = [ ] data_stream_layout_kwargs = [ - ["V i n s a u Ve r r e", ""], + ["V i n s a u V e r r e", ""], ["Les Blancs", "12.5CL"], ["A.O.P Côtes du Rhône", ""], ["Domaine de la Guicharde « Autour de la chapelle » 2016", "8 €"], diff --git a/tests/files/baseline_plots/test_joint_plot.png b/tests/files/baseline_plots/test_joint_plot.png index e9e40ece9fad0e09be566f872bb8d94ed2fd9cb4..61df9000072d09fdb64e1846e1470d0080e679e7 100644 GIT binary patch literal 33983 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 H#FhU87erZu diff --git a/tests/files/baseline_plots/test_line_plot.png b/tests/files/baseline_plots/test_line_plot.png index e8099ce807c35bdc8259765c84e80e42361e012c..12c44c0a222f131ce839846befcc052f5f1fcfc7 100644 GIT binary patch delta 27 jcmdmJy1{gUC!@tgFL`ETJ)?=aQY?!4*$ttJHkg8m7w delta 28 kcmdmBy3urkC!^&=FL@RPV?Be3IZ`aVxxN23cBx4L0D~wADF6Tf diff --git a/tests/files/baseline_plots/test_stream_contour_plot.png b/tests/files/baseline_plots/test_stream_contour_plot.png index a6e77f77c06075cd2be7ccb2c2fbbf0b50aa4025..958ea0a4c0fe944858247d6f7fddeb3edb723c28 100644 GIT binary patch literal 14487 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 Dfuj$d diff --git a/tests/files/baseline_plots/test_text_plot.png b/tests/files/baseline_plots/test_text_plot.png index 8cc382525d84c90dda0fda3503a15c01c51c7e12..63b5520d468a685073e27e2a7259aec1a108f7d8 100644 GIT binary patch literal 9112 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 AlmGw# literal 8992 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 RFF*{mZL^&f&4PI9e*gqul|29e diff --git a/tests/files/baseline_plots/test_textedge_plot.png b/tests/files/baseline_plots/test_textedge_plot.png index 63fc23664a941e856f3e8b1d95825ab67175eeb0..1de4e9cb0b4346eb5f9faf795dffbe3091a7a028 100644 GIT binary patch literal 19000 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

!ef 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 literal 17978 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 ZH`May{61Zp1ej#lIX%PE*}C@k{tu9|tfc?| From f725f04223036b73b7de82b70179e7da3a55ee6e Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sun, 24 May 2020 17:33:13 +0530 Subject: [PATCH 3/6] Remove future imports --- camelot/__main__.py | 2 - camelot/ext/ghostscript/_gsprint.py | 6 ++- camelot/image_processing.py | 2 - camelot/parsers/lattice.py | 1 - camelot/parsers/stream.py | 1 - camelot/utils.py | 4 +- setup.py | 4 +- tests/__init__.py | 3 +- tests/data.py | 2 - tests/test_errors.py | 61 ++++++++++++++++------------- tests/test_plotting.py | 39 ++++++++---------- 11 files changed, 59 insertions(+), 66 deletions(-) diff --git a/camelot/__main__.py b/camelot/__main__.py index 93040c6..a0b82a6 100755 --- a/camelot/__main__.py +++ b/camelot/__main__.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import - __all__ = ("main",) diff --git a/camelot/ext/ghostscript/_gsprint.py b/camelot/ext/ghostscript/_gsprint.py index b31b768..9896805 100644 --- a/camelot/ext/ghostscript/_gsprint.py +++ b/camelot/ext/ghostscript/_gsprint.py @@ -81,6 +81,7 @@ def delete_instance(instance): """ return libgs.gsapi_delete_instance(instance) + if sys.platform == "win32": c_stdstream_call_t = WINFUNCTYPE(c_int, gs_main_instance, POINTER(c_char), c_int) else: @@ -247,7 +248,10 @@ if sys.platform == "win32": libgs = __win32_finddll() if not libgs: import ctypes.util - libgs = ctypes.util.find_library("".join(("gsdll", str(ctypes.sizeof(ctypes.c_voidp) * 8), ".dll"))) # finds in %PATH% + + libgs = ctypes.util.find_library( + "".join(("gsdll", str(ctypes.sizeof(ctypes.c_voidp) * 8), ".dll")) + ) # finds in %PATH% if not libgs: raise RuntimeError("Please make sure that Ghostscript is installed") libgs = windll.LoadLibrary(libgs) diff --git a/camelot/image_processing.py b/camelot/image_processing.py index 7b87101..08acb23 100644 --- a/camelot/image_processing.py +++ b/camelot/image_processing.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import division - import cv2 import numpy as np diff --git a/camelot/parsers/lattice.py b/camelot/parsers/lattice.py index 197ff9f..5469fac 100644 --- a/camelot/parsers/lattice.py +++ b/camelot/parsers/lattice.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import division import os import sys import copy diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index 33f2fe5..35cf4eb 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import division import os import logging import warnings diff --git a/camelot/utils.py b/camelot/utils.py index 11d28dd..fd5c87f 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -1,9 +1,7 @@ # -*- coding: utf-8 -*- -from __future__ import division -import re import os -import sys +import re import random import shutil import string diff --git a/setup.py b/setup.py index b83f566..0619f12 100644 --- a/setup.py +++ b/setup.py @@ -71,10 +71,10 @@ def setup_package(): # Trove classifiers # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers 'License :: OSI Approved :: MIT License', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7' + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8' ]) try: diff --git a/tests/__init__.py b/tests/__init__.py index a946ff7..96c475e 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,2 +1,3 @@ import matplotlib -matplotlib.use('agg') + +matplotlib.use("agg") diff --git a/tests/data.py b/tests/data.py index 2eeddb4..7e53792 100755 --- a/tests/data.py +++ b/tests/data.py @@ -1,7 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals - data_stream = [ ["States-A", "Revenue", "", "Capital", "", "Total", "Others(1)", "Total"], diff --git a/tests/test_errors.py b/tests/test_errors.py index 0a11c55..702439c 100755 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -10,88 +10,93 @@ import camelot testdir = os.path.dirname(os.path.abspath(__file__)) testdir = os.path.join(testdir, "files") -filename = os.path.join(testdir, 'foo.pdf') +filename = os.path.join(testdir, "foo.pdf") def test_unknown_flavor(): - message = ("Unknown flavor specified." - " Use either 'lattice' or 'stream'") + message = "Unknown flavor specified." " Use either 'lattice' or 'stream'" with pytest.raises(NotImplementedError, match=message): - tables = camelot.read_pdf(filename, flavor='chocolate') + tables = camelot.read_pdf(filename, flavor="chocolate") def test_input_kwargs(): message = "columns cannot be used with flavor='lattice'" with pytest.raises(ValueError, match=message): - tables = camelot.read_pdf(filename, columns=['10,20,30,40']) + tables = camelot.read_pdf(filename, columns=["10,20,30,40"]) def test_unsupported_format(): - message = 'File format not supported' - filename = os.path.join(testdir, 'foo.csv') + message = "File format not supported" + filename = os.path.join(testdir, "foo.csv") with pytest.raises(NotImplementedError, match=message): tables = camelot.read_pdf(filename) def test_stream_equal_length(): - message = ("Length of table_areas and columns" - " should be equal") + message = "Length of table_areas and columns" " should be equal" with pytest.raises(ValueError, match=message): - tables = camelot.read_pdf(filename, flavor='stream', - table_areas=['10,20,30,40'], columns=['10,20,30,40', '10,20,30,40']) + tables = camelot.read_pdf( + filename, + flavor="stream", + table_areas=["10,20,30,40"], + columns=["10,20,30,40", "10,20,30,40"], + ) def test_image_warning(): - filename = os.path.join(testdir, 'image.pdf') + filename = os.path.join(testdir, "image.pdf") with warnings.catch_warnings(): - warnings.simplefilter('error') + warnings.simplefilter("error") with pytest.raises(UserWarning) as e: tables = camelot.read_pdf(filename) - assert str(e.value) == 'page-1 is image-based, camelot only works on text-based pages.' + assert ( + str(e.value) + == "page-1 is image-based, camelot only works on text-based pages." + ) def test_no_tables_found(): - filename = os.path.join(testdir, 'blank.pdf') + filename = os.path.join(testdir, "blank.pdf") with warnings.catch_warnings(): - warnings.simplefilter('error') + warnings.simplefilter("error") with pytest.raises(UserWarning) as e: tables = camelot.read_pdf(filename) - assert str(e.value) == 'No tables found on page-1' + assert str(e.value) == "No tables found on page-1" def test_no_tables_found_logs_suppressed(): - filename = os.path.join(testdir, 'foo.pdf') + filename = os.path.join(testdir, "foo.pdf") with warnings.catch_warnings(): # the test should fail if any warning is thrown - warnings.simplefilter('error') + warnings.simplefilter("error") try: tables = camelot.read_pdf(filename, suppress_stdout=True) except Warning as e: warning_text = str(e) - pytest.fail('Unexpected warning: {}'.format(warning_text)) + pytest.fail("Unexpected warning: {}".format(warning_text)) def test_no_tables_found_warnings_suppressed(): - filename = os.path.join(testdir, 'blank.pdf') + filename = os.path.join(testdir, "blank.pdf") with warnings.catch_warnings(): # the test should fail if any warning is thrown - warnings.simplefilter('error') + warnings.simplefilter("error") try: tables = camelot.read_pdf(filename, suppress_stdout=True) except Warning as e: warning_text = str(e) - pytest.fail('Unexpected warning: {}'.format(warning_text)) + pytest.fail("Unexpected warning: {}".format(warning_text)) def test_no_password(): - filename = os.path.join(testdir, 'health_protected.pdf') - message = 'file has not been decrypted' + filename = os.path.join(testdir, "health_protected.pdf") + message = "file has not been decrypted" with pytest.raises(Exception, match=message): tables = camelot.read_pdf(filename) def test_bad_password(): - filename = os.path.join(testdir, 'health_protected.pdf') - message = 'file has not been decrypted' + filename = os.path.join(testdir, "health_protected.pdf") + message = "file has not been decrypted" with pytest.raises(Exception, match=message): - tables = camelot.read_pdf(filename, password='wrongpass') + tables = camelot.read_pdf(filename, password="wrongpass") diff --git a/tests/test_plotting.py b/tests/test_plotting.py index f267e29..cec9df6 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -11,57 +11,50 @@ testdir = os.path.dirname(os.path.abspath(__file__)) testdir = os.path.join(testdir, "files") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_text_plot(): filename = os.path.join(testdir, "foo.pdf") tables = camelot.read_pdf(filename) - return camelot.plot(tables[0], kind='text') + return camelot.plot(tables[0], kind="text") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_grid_plot(): filename = os.path.join(testdir, "foo.pdf") tables = camelot.read_pdf(filename) - return camelot.plot(tables[0], kind='grid') + return camelot.plot(tables[0], kind="grid") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_lattice_contour_plot(): filename = os.path.join(testdir, "foo.pdf") tables = camelot.read_pdf(filename) - return camelot.plot(tables[0], kind='contour') + return camelot.plot(tables[0], kind="contour") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_stream_contour_plot(): filename = os.path.join(testdir, "tabula/12s0324.pdf") - tables = camelot.read_pdf(filename, flavor='stream') - return camelot.plot(tables[0], kind='contour') + tables = camelot.read_pdf(filename, flavor="stream") + return camelot.plot(tables[0], kind="contour") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_line_plot(): filename = os.path.join(testdir, "foo.pdf") tables = camelot.read_pdf(filename) - return camelot.plot(tables[0], kind='line') + return camelot.plot(tables[0], kind="line") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_joint_plot(): filename = os.path.join(testdir, "foo.pdf") tables = camelot.read_pdf(filename) - return camelot.plot(tables[0], kind='joint') + return camelot.plot(tables[0], kind="joint") -@pytest.mark.mpl_image_compare( - baseline_dir="files/baseline_plots", remove_text=True) +@pytest.mark.mpl_image_compare(baseline_dir="files/baseline_plots", remove_text=True) def test_textedge_plot(): filename = os.path.join(testdir, "tabula/12s0324.pdf") - tables = camelot.read_pdf(filename, flavor='stream') - return camelot.plot(tables[0], kind='textedge') + tables = camelot.read_pdf(filename, flavor="stream") + return camelot.plot(tables[0], kind="textedge") From afa1ba7c1f9ad599d7ee1888a1d8d0939ab72f49 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sun, 24 May 2020 17:38:48 +0530 Subject: [PATCH 4/6] Fix test indent --- tests/test_errors.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_errors.py b/tests/test_errors.py index 702439c..6b23828 100755 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -49,10 +49,10 @@ def test_image_warning(): warnings.simplefilter("error") with pytest.raises(UserWarning) as e: tables = camelot.read_pdf(filename) - assert ( - str(e.value) - == "page-1 is image-based, camelot only works on text-based pages." - ) + assert ( + str(e.value) + == "page-1 is image-based, camelot only works on text-based pages." + ) def test_no_tables_found(): From 52b2a595b46ae5da3439545884e875955cc98a51 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sun, 24 May 2020 18:14:43 +0530 Subject: [PATCH 5/6] Add f-strings and remove python3.5 test job --- .travis.yml | 4 ---- camelot/__version__.py | 4 ++-- camelot/cli.py | 4 ++-- camelot/core.py | 39 +++++++++++++++++---------------------- camelot/handlers.py | 4 ++-- camelot/parsers/stream.py | 14 +++++++------- camelot/plotting.py | 4 ++-- camelot/utils.py | 12 ++++-------- tests/test_cli.py | 14 +++++++++----- tests/test_errors.py | 4 ++-- 10 files changed, 47 insertions(+), 56 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2eabdb8..e370649 100755 --- a/.travis.yml +++ b/.travis.yml @@ -8,10 +8,6 @@ install: - make install jobs: include: - - stage: test - script: - - make test - python: '3.5' - stage: test script: - make test diff --git a/camelot/__version__.py b/camelot/__version__.py index f4e1005..145df48 100644 --- a/camelot/__version__.py +++ b/camelot/__version__.py @@ -8,9 +8,9 @@ REVISION = None def generate_version(version, prerelease=None, revision=None): version_parts = [".".join(map(str, version))] if prerelease is not None: - version_parts.append("-{}".format(prerelease)) + version_parts.append(f"-{prerelease}") if revision is not None: - version_parts.append(".{}".format(revision)) + version_parts.append(f".{revision}") return "".join(version_parts) diff --git a/camelot/cli.py b/camelot/cli.py index 0298992..1715e6f 100644 --- a/camelot/cli.py +++ b/camelot/cli.py @@ -204,7 +204,7 @@ def lattice(c, *args, **kwargs): tables = read_pdf( filepath, pages=pages, flavor="lattice", suppress_stdout=quiet, **kwargs ) - click.echo("Found {} tables".format(tables.n)) + click.echo(f"Found {tables.n} tables") if plot_type is not None: for table in tables: plot(table, kind=plot_type) @@ -295,7 +295,7 @@ def stream(c, *args, **kwargs): tables = read_pdf( filepath, pages=pages, flavor="stream", suppress_stdout=quiet, **kwargs ) - click.echo("Found {} tables".format(tables.n)) + click.echo(f"Found {tables.n} tables") if plot_type is not None: for table in tables: plot(table, kind=plot_type) diff --git a/camelot/core.py b/camelot/core.py index b7a02b1..3ea2c5e 100644 --- a/camelot/core.py +++ b/camelot/core.py @@ -52,13 +52,10 @@ class TextEdge(object): self.is_valid = False def __repr__(self): - return "".format( - round(self.x, 2), - round(self.y0, 2), - round(self.y1, 2), - self.align, - self.is_valid, - ) + x = round(self.x, 2) + y0 = round(self.y0, 2) + y1 = round(self.y1, 2) + return f"" def update_coords(self, x, y0, edge_tol=50): """Updates the text edge's x and bottom y coordinates and sets @@ -291,9 +288,11 @@ class Cell(object): self._text = "" def __repr__(self): - return "".format( - round(self.x1, 2), round(self.y1, 2), round(self.x2, 2), round(self.y2, 2) - ) + x1 = round(self.x1, 2) + y1 = round(self.y1, 2) + x2 = round(self.x2, 2) + y2 = round(self.y2, 2) + return f"" @property def text(self): @@ -351,7 +350,7 @@ class Table(object): self.page = None def __repr__(self): - return "<{} shape={}>".format(self.__class__.__name__, self.shape) + return f"<{self.__class__.__name__} shape={self.shape}>" def __lt__(self, other): if self.page == other.page: @@ -612,7 +611,7 @@ class Table(object): """ kw = { - "sheet_name": "page-{}-table-{}".format(self.page, self.order), + "sheet_name": f"page-{self.page}-table-{self.order}", "encoding": "utf-8", } kw.update(kwargs) @@ -649,7 +648,7 @@ class Table(object): kw = {"if_exists": "replace", "index": False} kw.update(kwargs) conn = sqlite3.connect(path) - table_name = "page-{}-table-{}".format(self.page, self.order) + table_name = f"page-{self.page}-table-{self.order}" self.df.to_sql(table_name, conn, **kw) conn.commit() conn.close() @@ -670,7 +669,7 @@ class TableList(object): self._tables = tables def __repr__(self): - return "<{} n={}>".format(self.__class__.__name__, self.n) + return f"<{self.__class__.__name__} n={self.n}>" def __len__(self): return len(self._tables) @@ -680,7 +679,7 @@ class TableList(object): @staticmethod def _format_func(table, f): - return getattr(table, "to_{}".format(f)) + return getattr(table, f"to_{f}") @property def n(self): @@ -691,9 +690,7 @@ class TableList(object): root = kwargs.get("root") ext = kwargs.get("ext") for table in self._tables: - filename = os.path.join( - "{}-page-{}-table-{}{}".format(root, table.page, table.order, ext) - ) + filename = f"{root}-page-{table.page}-table-{table.order}{ext}" filepath = os.path.join(dirname, filename) to_format = self._format_func(table, f) to_format(filepath) @@ -706,9 +703,7 @@ class TableList(object): zipname = os.path.join(os.path.dirname(path), root) + ".zip" with zipfile.ZipFile(zipname, "w", allowZip64=True) as z: for table in self._tables: - filename = os.path.join( - "{}-page-{}-table-{}{}".format(root, table.page, table.order, ext) - ) + filename = f"{root}-page-{table.page}-table-{table.order}{ext}" filepath = os.path.join(dirname, filename) z.write(filepath, os.path.basename(filepath)) @@ -741,7 +736,7 @@ class TableList(object): filepath = os.path.join(dirname, basename) writer = pd.ExcelWriter(filepath) for table in self._tables: - sheet_name = "page-{}-table-{}".format(table.page, table.order) + sheet_name = f"page-{table.page}-table-{table.order}" table.df.to_excel(writer, sheet_name=sheet_name, encoding="utf-8") writer.save() if compress: diff --git a/camelot/handlers.py b/camelot/handlers.py index 3a6d663..6aa3a31 100644 --- a/camelot/handlers.py +++ b/camelot/handlers.py @@ -106,7 +106,7 @@ class PDFHandler(object): infile = PdfFileReader(fileobj, strict=False) if infile.isEncrypted: infile.decrypt(self.password) - fpath = os.path.join(temp, "page-{0}.pdf".format(page)) + fpath = os.path.join(temp, f"page-{page}.pdf") froot, fext = os.path.splitext(fpath) p = infile.getPage(page - 1) outfile = PdfFileWriter() @@ -164,7 +164,7 @@ class PDFHandler(object): for p in self.pages: self._save_page(self.filepath, p, tempdir) pages = [ - os.path.join(tempdir, "page-{0}.pdf".format(p)) for p in self.pages + os.path.join(tempdir, f"page-{p}.pdf") for p in self.pages ] parser = Lattice(**kwargs) if flavor == "lattice" else Stream(**kwargs) for p in pages: diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index 35cf4eb..ee75c8f 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -357,7 +357,7 @@ class Stream(BaseParser): ncols = max(set(elements), key=elements.count) else: warnings.warn( - "No tables found in table area {}".format(table_idx + 1) + f"No tables found in table area {table_idx + 1}" ) cols = [(t.x0, t.x1) for r in rows_grouped if len(r) == ncols for t in r] cols = self._merge_columns(sorted(cols), column_tol=self.column_tol) @@ -432,19 +432,19 @@ class Stream(BaseParser): def extract_tables(self, filename, suppress_stdout=False, layout_kwargs={}): self._generate_layout(filename, layout_kwargs) + base_filename = os.path.basename(self.rootname) + if not suppress_stdout: - logger.info("Processing {}".format(os.path.basename(self.rootname))) + logger.info(f"Processing {base_filename}") if not self.horizontal_text: if self.images: warnings.warn( - "{} is image-based, camelot only works on" - " text-based pages.".format(os.path.basename(self.rootname)) + f"{base_filename} is image-based, camelot only works on" + " text-based pages.") ) else: - warnings.warn( - "No tables found on {}".format(os.path.basename(self.rootname)) - ) + warnings.warn(f"No tables found on {base_filename}")) return [] self._generate_table_bbox() diff --git a/camelot/plotting.py b/camelot/plotting.py index 5e0dc0c..a5930c2 100644 --- a/camelot/plotting.py +++ b/camelot/plotting.py @@ -35,11 +35,11 @@ class PlotMethods(object): if table.flavor == "lattice" and kind in ["textedge"]: raise NotImplementedError( - "Lattice flavor does not support kind='{}'".format(kind) + f"Lattice flavor does not support kind='{kind}'" ) elif table.flavor == "stream" and kind in ["joint", "line"]: raise NotImplementedError( - "Stream flavor does not support kind='{}'".format(kind) + f"Stream flavor does not support kind='{kind}'" ) plot_method = getattr(self, kind) diff --git a/camelot/utils.py b/camelot/utils.py index fd5c87f..1f54485 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -79,7 +79,7 @@ def download_url(url): Temporary filepath. """ - filename = "{}.pdf".format(random_string(6)) + filename = f"{random_string(6)}.pdf" with tempfile.NamedTemporaryFile("wb", delete=False) as f: headers = {"User-Agent": "Mozilla/5.0"} request = Request(url, None, headers) @@ -113,9 +113,7 @@ def validate_input(kwargs, flavor="lattice"): isec = set(parser_kwargs).intersection(set(input_kwargs.keys())) if isec: raise ValueError( - "{} cannot be used with flavor='{}'".format( - ",".join(sorted(isec)), flavor - ) + f"{','.join(sorted(isec))} cannot be used with flavor='{flavor}'" ) if flavor == "lattice": @@ -413,7 +411,7 @@ def text_strip(text, strip=""): return text stripped = re.sub( - r"[{}]".format("".join(map(re.escape, strip))), "", text, re.UNICODE + fr"[{''.join(map(re.escape, strip))}]", "", text, re.UNICODE ) return stripped @@ -650,9 +648,7 @@ def get_table_index( text_range = (t.x0, t.x1) col_range = (table.cols[0][0], table.cols[-1][1]) warnings.warn( - "{} {} does not lie in column range {}".format( - text, text_range, col_range - ) + f"{text} {text_range} does not lie in column range {col_range}" ) r_idx = r c_idx = lt_col_overlap.index(max(lt_col_overlap)) diff --git a/tests/test_cli.py b/tests/test_cli.py index d1a660f..cddc9a2 100755 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -114,31 +114,35 @@ def test_cli_password(): def test_cli_output_format(): with TemporaryDirectory() as tempdir: infile = os.path.join(testdir, "health.pdf") - outfile = os.path.join(tempdir, "health.{}") + runner = CliRunner() # json + outfile = os.path.join(tempdir, "health.json") result = runner.invoke( cli, - ["--format", "json", "--output", outfile.format("json"), "stream", infile], + ["--format", "json", "--output", outfile, "stream", infile], ) assert result.exit_code == 0 # excel + outfile = os.path.join(tempdir, "health.xlsx") result = runner.invoke( cli, - ["--format", "excel", "--output", outfile.format("xlsx"), "stream", infile], + ["--format", "excel", "--output", outfile, "stream", infile], ) assert result.exit_code == 0 # html + outfile = os.path.join(tempdir, "health.html") result = runner.invoke( cli, - ["--format", "html", "--output", outfile.format("html"), "stream", infile], + ["--format", "html", "--output", outfile, "stream", infile], ) assert result.exit_code == 0 # zip + outfile = os.path.join(tempdir, "health.csv") result = runner.invoke( cli, [ @@ -146,7 +150,7 @@ def test_cli_output_format(): "--format", "csv", "--output", - outfile.format("csv"), + outfile, "stream", infile, ], diff --git a/tests/test_errors.py b/tests/test_errors.py index 6b23828..6591b02 100755 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -73,7 +73,7 @@ def test_no_tables_found_logs_suppressed(): tables = camelot.read_pdf(filename, suppress_stdout=True) except Warning as e: warning_text = str(e) - pytest.fail("Unexpected warning: {}".format(warning_text)) + pytest.fail(f"Unexpected warning: {warning_text}") def test_no_tables_found_warnings_suppressed(): @@ -85,7 +85,7 @@ def test_no_tables_found_warnings_suppressed(): tables = camelot.read_pdf(filename, suppress_stdout=True) except Warning as e: warning_text = str(e) - pytest.fail("Unexpected warning: {}".format(warning_text)) + pytest.fail(f"Unexpected warning: {warning_text}" def test_no_password(): From a22fa63c4e6d7334e30a560eca77b1c5d603fae0 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sun, 24 May 2020 18:19:48 +0530 Subject: [PATCH 6/6] Fix syntax errors --- camelot/parsers/stream.py | 4 ++-- tests/test_errors.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index ee75c8f..3749028 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -441,10 +441,10 @@ class Stream(BaseParser): if self.images: warnings.warn( f"{base_filename} is image-based, camelot only works on" - " text-based pages.") + " text-based pages." ) else: - warnings.warn(f"No tables found on {base_filename}")) + warnings.warn(f"No tables found on {base_filename}") return [] self._generate_table_bbox() diff --git a/tests/test_errors.py b/tests/test_errors.py index 6591b02..2849110 100755 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -85,7 +85,7 @@ def test_no_tables_found_warnings_suppressed(): tables = camelot.read_pdf(filename, suppress_stdout=True) except Warning as e: warning_text = str(e) - pytest.fail(f"Unexpected warning: {warning_text}" + pytest.fail(f"Unexpected warning: {warning_text}") def test_no_password():