From bd2aab5b2dd53ad70bb978cd75b2ece927c63830 Mon Sep 17 00:00:00 2001 From: Frh Date: Sat, 18 Apr 2020 17:25:47 -0700 Subject: [PATCH] Fix unit tests, lint, drop Python 2 support Drop EOL Python 2 support. Resolve unit test discrepancies. Update unit tests to pass in Travis across all supported Py. Linting. --- .bandit | 3 + .gitignore | 3 + .travis.yml | 5 - camelot/core.py | 39 +- camelot/handlers.py | 25 +- camelot/io.py | 9 +- camelot/parsers/base.py | 15 +- camelot/parsers/lattice.py | 55 ++- camelot/parsers/stream.py | 102 ++++-- camelot/plotting.py | 18 +- camelot/utils.py | 47 ++- docs/user/install.rst | 2 +- requirements.txt | 2 +- setup.py | 5 +- tests/data.py | 343 ++++++++++-------- tests/files/baseline_plots/test_grid_plot.png | Bin 8367 -> 8366 bytes .../files/baseline_plots/test_joint_plot.png | Bin 48678 -> 33969 bytes .../test_lattice_contour_plot.png | Bin 47314 -> 47246 bytes tests/files/baseline_plots/test_line_plot.png | Bin 6833 -> 6832 bytes .../test_stream_contour_plot.png | Bin 13521 -> 14487 bytes .../baseline_plots/test_stream_grid_plot.png | Bin 0 -> 9940 bytes tests/files/baseline_plots/test_text_plot.png | Bin 8992 -> 9112 bytes .../baseline_plots/test_textedge_plot.png | Bin 17978 -> 19000 bytes tests/test_cli.py | 25 +- tests/test_common.py | 44 ++- tests/test_plotting.py | 32 ++ 26 files changed, 498 insertions(+), 276 deletions(-) create mode 100644 .bandit create mode 100644 tests/files/baseline_plots/test_stream_grid_plot.png diff --git a/.bandit b/.bandit new file mode 100644 index 0000000..c936150 --- /dev/null +++ b/.bandit @@ -0,0 +1,3 @@ +[bandit] +# Ignore concerns about asserts, necessary for unit test code +skips: B101,B102 diff --git a/.gitignore b/.gitignore index d0aea62..3af88c1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ __pycache__/ build/ dist/ +prof/ *.egg-info/ .eggs/ .coverage @@ -17,3 +18,5 @@ htmlcov/ # vscode .vscode + +.DS_Store \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 7426bb0..c603fd5 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: true language: python cache: pip addons: @@ -8,10 +7,6 @@ install: - make install jobs: include: - - stage: test - script: - - make test - python: '2.7' - stage: test script: - make test diff --git a/camelot/core.py b/camelot/core.py index b7a02b1..5fff3c6 100644 --- a/camelot/core.py +++ b/camelot/core.py @@ -38,7 +38,7 @@ class TextEdge(object): intersections: int Number of intersections with horizontal text rows. is_valid: bool - A text edge is valid if it intersections with at least + A text edge is valid if it intersects with at least TEXTEDGE_REQUIRED_ELEMENTS horizontal text rows. """ @@ -65,7 +65,8 @@ class TextEdge(object): the is_valid attribute. """ if np.isclose(self.y0, y0, atol=edge_tol): - self.x = (self.intersections * self.x + x) / float(self.intersections + 1) + self.x = (self.intersections * self.x + x) / \ + float(self.intersections + 1) self.y0 = y0 self.intersections += 1 # a textedge is valid only if it extends uninterrupted @@ -141,13 +142,16 @@ class TextEdges(object): """ intersections_sum = { "left": sum( - te.intersections for te in self._textedges["left"] if te.is_valid + te.intersections for te in self._textedges["left"] + if te.is_valid ), "right": sum( - te.intersections for te in self._textedges["right"] if te.is_valid + te.intersections for te in self._textedges["right"] + if te.is_valid ), "middle": sum( - te.intersections for te in self._textedges["middle"] if te.is_valid + te.intersections for te in self._textedges["middle"] + if te.is_valid ), } @@ -292,7 +296,10 @@ class Cell(object): def __repr__(self): return "".format( - round(self.x1, 2), round(self.y1, 2), round(self.x2, 2), round(self.y2, 2) + round(self.x1, 2), + round(self.y1, 2), + round(self.x2, 2), + round(self.y2, 2) ) @property @@ -342,7 +349,9 @@ class Table(object): def __init__(self, cols, rows): self.cols = cols self.rows = rows - self.cells = [[Cell(c[0], r[1], c[1], r[0]) for c in cols] for r in rows] + self.cells = [ + [Cell(c[0], r[1], c[1], r[0]) for c in cols] for r in rows + ] self.df = None self.shape = (0, 0) self.accuracy = 0 @@ -579,7 +588,8 @@ class Table(object): Output filepath. """ - kw = {"encoding": "utf-8", "index": False, "header": False, "quoting": 1} + kw = {"encoding": "utf-8", "index": False, "header": False, + "quoting": 1} kw.update(kwargs) self.df.to_csv(path, **kw) @@ -616,6 +626,7 @@ class Table(object): "encoding": "utf-8", } kw.update(kwargs) + # pylint: disable=abstract-class-instantiated writer = pd.ExcelWriter(path) self.df.to_excel(writer, **kw) writer.save() @@ -692,7 +703,8 @@ class TableList(object): ext = kwargs.get("ext") for table in self._tables: filename = os.path.join( - "{}-page-{}-table-{}{}".format(root, table.page, table.order, ext) + "{}-page-{}-table-{}{}".format(root, table.page, table.order, + ext) ) filepath = os.path.join(dirname, filename) to_format = self._format_func(table, f) @@ -707,7 +719,10 @@ class TableList(object): 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) + "{}-page-{}-table-{}{}".format(root, + table.page, + table.order, + ext) ) filepath = os.path.join(dirname, filename) z.write(filepath, os.path.basename(filepath)) @@ -739,10 +754,12 @@ class TableList(object): self._compress_dir(**kwargs) elif f == "excel": filepath = os.path.join(dirname, basename) + # pylint: disable=abstract-class-instantiated writer = pd.ExcelWriter(filepath) for table in self._tables: sheet_name = "page-{}-table-{}".format(table.page, table.order) - table.df.to_excel(writer, sheet_name=sheet_name, encoding="utf-8") + table.df.to_excel(writer, sheet_name=sheet_name, + encoding="utf-8") writer.save() if compress: zipname = os.path.join(os.path.dirname(path), root) + ".zip" diff --git a/camelot/handlers.py b/camelot/handlers.py index 3a6d663..a689ee5 100644 --- a/camelot/handlers.py +++ b/camelot/handlers.py @@ -113,14 +113,20 @@ class PDFHandler(object): outfile.addPage(p) with open(fpath, "wb") as f: outfile.write(f) - layout, dim = get_page_layout(fpath) + layout, __ = get_page_layout(fpath) # fix rotated PDF chars = get_text_objects(layout, ltype="char") horizontal_text = get_text_objects(layout, ltype="horizontal_text") vertical_text = get_text_objects(layout, ltype="vertical_text") rotation = get_rotation(chars, horizontal_text, vertical_text) if rotation != "": - fpath_new = "".join([froot.replace("page", "p"), "_rotated", fext]) + fpath_new = "".join( + [ + froot.replace("page", "p"), + "_rotated", + fext + ] + ) os.rename(fpath, fpath_new) infile = PdfFileReader(open(fpath_new, "rb"), strict=False) if infile.isEncrypted: @@ -136,7 +142,8 @@ class PDFHandler(object): outfile.write(f) def parse( - self, flavor="lattice", suppress_stdout=False, layout_kwargs={}, **kwargs + self, flavor="lattice", suppress_stdout=False, layout_kwargs=None, + **kwargs ): """Extracts tables by calling parser.get_tables on all single page PDFs. @@ -149,7 +156,7 @@ class PDFHandler(object): suppress_stdout : str (default: False) Suppress logs and warnings. layout_kwargs : dict, optional (default: {}) - A dict of `pdfminer.layout.LAParams `_ kwargs. + A dict of `pdfminer.layout.LAParams `_ kwargs. # noqa kwargs : dict See camelot.read_pdf kwargs. @@ -159,17 +166,21 @@ class PDFHandler(object): List of tables found in PDF. """ + layout_kwargs = layout_kwargs or {} tables = [] with TemporaryDirectory() as tempdir: 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, "page-{0}.pdf".format(p)) + for p in self.pages ] - parser = Lattice(**kwargs) if flavor == "lattice" else Stream(**kwargs) + parser = Lattice(**kwargs) \ + if flavor == "lattice" else Stream(**kwargs) for p in pages: t = parser.extract_tables( - p, suppress_stdout=suppress_stdout, layout_kwargs=layout_kwargs + p, suppress_stdout=suppress_stdout, + layout_kwargs=layout_kwargs ) tables.extend(t) return TableList(sorted(tables)) diff --git a/camelot/io.py b/camelot/io.py index a27a7c6..49d05cb 100644 --- a/camelot/io.py +++ b/camelot/io.py @@ -12,7 +12,7 @@ def read_pdf( password=None, flavor="lattice", suppress_stdout=False, - layout_kwargs={}, + layout_kwargs=None, **kwargs ): """Read PDF and return extracted tables. @@ -80,16 +80,16 @@ def read_pdf( Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. - For more information, refer `OpenCV's adaptiveThreshold `_. + For more information, refer `OpenCV's adaptiveThreshold `_. # noqa threshold_constant* : int, optional (default: -2) Constant subtracted from the mean or weighted mean. Normally, it is positive but may be zero or negative as well. - For more information, refer `OpenCV's adaptiveThreshold `_. + For more information, refer `OpenCV's adaptiveThreshold `_. # noqa iterations* : int, optional (default: 0) Number of times for erosion/dilation is applied. - For more information, refer `OpenCV's dilate `_. + For more information, refer `OpenCV's dilate `_. # noqa resolution* : int, optional (default: 300) Resolution used for PDF to PNG conversion. @@ -98,6 +98,7 @@ def read_pdf( tables : camelot.core.TableList """ + layout_kwargs = layout_kwargs or {} if flavor not in ["lattice", "stream"]: raise NotImplementedError( "Unknown flavor specified." " Use either 'lattice' or 'stream'" diff --git a/camelot/parsers/base.py b/camelot/parsers/base.py index cb1bc21..5713625 100644 --- a/camelot/parsers/base.py +++ b/camelot/parsers/base.py @@ -12,9 +12,18 @@ class BaseParser(object): def _generate_layout(self, filename, layout_kwargs): self.filename = filename self.layout_kwargs = layout_kwargs - self.layout, self.dimensions = get_page_layout(filename, **layout_kwargs) + self.layout, self.dimensions = get_page_layout( + filename, + **layout_kwargs + ) self.images = get_text_objects(self.layout, ltype="image") - self.horizontal_text = get_text_objects(self.layout, ltype="horizontal_text") - self.vertical_text = get_text_objects(self.layout, ltype="vertical_text") + self.horizontal_text = get_text_objects( + self.layout, + ltype="horizontal_text" + ) + self.vertical_text = get_text_objects( + self.layout, + ltype="vertical_text" + ) self.pdf_width, self.pdf_height = self.dimensions self.rootname, __ = os.path.splitext(self.filename) diff --git a/camelot/parsers/lattice.py b/camelot/parsers/lattice.py index 197ff9f..3a40f47 100644 --- a/camelot/parsers/lattice.py +++ b/camelot/parsers/lattice.py @@ -2,14 +2,10 @@ from __future__ import division import os -import sys import copy -import locale import logging import warnings -import subprocess -import numpy as np import pandas as pd from .base import BaseParser @@ -80,7 +76,7 @@ class Lattice(BaseParser): Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. - For more information, refer `OpenCV's adaptiveThreshold `_. + For more information, refer `OpenCV's adaptiveThreshold `_. # noqa threshold_constant : int, optional (default: -2) Constant subtracted from the mean or weighted mean. Normally, it is positive but may be zero or negative as well. @@ -102,7 +98,7 @@ class Lattice(BaseParser): process_background=False, line_scale=15, copy_text=None, - shift_text=["l", "t"], + shift_text=None, split_text=False, flag_size=False, strip_text="", @@ -114,6 +110,7 @@ class Lattice(BaseParser): resolution=300, **kwargs ): + shift_text = shift_text or ["l", "t"] self.table_regions = table_regions self.table_areas = table_areas self.process_background = process_background @@ -217,8 +214,7 @@ class Lattice(BaseParser): ) gs_call = gs_call.encode().split() null = open(os.devnull, "wb") - with Ghostscript(*gs_call, stdout=null) as gs: - pass + Ghostscript(*gs_call, stdout=null) null.close() def _generate_table_bbox(self): @@ -247,7 +243,8 @@ class Lattice(BaseParser): image_height_scaler = image_height / float(self.pdf_height) pdf_width_scaler = self.pdf_width / float(image_width) pdf_height_scaler = self.pdf_height / float(image_height) - image_scalers = (image_width_scaler, image_height_scaler, self.pdf_height) + image_scalers = (image_width_scaler, + image_height_scaler, self.pdf_height) pdf_scalers = (pdf_width_scaler, pdf_height_scaler, image_height) if self.table_areas is None: @@ -291,7 +288,11 @@ class Lattice(BaseParser): self.table_bbox_unscaled = copy.deepcopy(table_bbox) - self.table_bbox, self.vertical_segments, self.horizontal_segments = scale_image( + [ + self.table_bbox, + self.vertical_segments, + self.horizontal_segments + ] = scale_image( table_bbox, vertical_segments, horizontal_segments, pdf_scalers ) @@ -315,7 +316,10 @@ class Lattice(BaseParser): rows.extend([tk[1], tk[3]]) # sort horizontal and vertical segments cols = merge_close_lines(sorted(cols), line_tol=self.line_tol) - rows = merge_close_lines(sorted(rows, reverse=True), line_tol=self.line_tol) + rows = merge_close_lines( + sorted(rows, reverse=True), + line_tol=self.line_tol + ) # make grid using x and y coord of shortlisted rows and cols cols = [(cols[i], cols[i + 1]) for i in range(0, len(cols) - 1)] rows = [(rows[i], rows[i + 1]) for i in range(0, len(rows) - 1)] @@ -359,7 +363,10 @@ class Lattice(BaseParser): accuracy = compute_accuracy([[100, pos_errors]]) if self.copy_text is not None: - table = Lattice._copy_spanning_text(table, copy_text=self.copy_text) + table = Lattice._copy_spanning_text( + table, + copy_text=self.copy_text + ) data = table.data table.df = pd.DataFrame(data) @@ -383,20 +390,28 @@ class Lattice(BaseParser): return table - def extract_tables(self, filename, suppress_stdout=False, layout_kwargs={}): + def extract_tables( + self, + filename, + suppress_stdout=False, + layout_kwargs=None + ): + layout_kwargs = layout_kwargs or {} self._generate_layout(filename, layout_kwargs) + rootname = os.path.basename(self.rootname) if not suppress_stdout: - logger.info("Processing {}".format(os.path.basename(self.rootname))) + logger.info("Processing {rootname}".format(rootname=rootname)) 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)) + "{rootname} is image-based, " + "camelot only works on text-based pages." + .format(rootname=rootname) ) else: warnings.warn( - "No tables found on {}".format(os.path.basename(self.rootname)) + "No tables found on {rootname}".format(rootname=rootname) ) return [] @@ -408,8 +423,10 @@ class Lattice(BaseParser): for table_idx, tk in enumerate( sorted(self.table_bbox.keys(), key=lambda x: x[1], reverse=True) ): - cols, rows, v_s, h_s = self._generate_columns_and_rows(table_idx, tk) - table = self._generate_table(table_idx, cols, rows, v_s=v_s, h_s=h_s) + cols, rows, v_s, h_s = self._generate_columns_and_rows( + table_idx, tk) + table = self._generate_table( + table_idx, cols, rows, v_s=v_s, h_s=h_s) table._bbox = tk _tables.append(table) diff --git a/camelot/parsers/stream.py b/camelot/parsers/stream.py index 33f2fe5..4af0a0e 100644 --- a/camelot/parsers/stream.py +++ b/camelot/parsers/stream.py @@ -10,7 +10,8 @@ import pandas as pd from .base import BaseParser from ..core import TextEdges, Table -from ..utils import text_in_bbox, get_table_index, compute_accuracy, compute_whitespace +from ..utils import (text_in_bbox, get_table_index, compute_accuracy, + compute_whitespace) logger = logging.getLogger("camelot") @@ -70,6 +71,9 @@ class Stream(BaseParser): ): self.table_regions = table_regions self.table_areas = table_areas + self.table_bbox = None + self.t_bbox = None + self.textedges = [] self.columns = columns self._validate_columns() self.split_text = split_text @@ -95,10 +99,10 @@ class Stream(BaseParser): Tuple (x0, y0, x1, y1) in pdf coordinate space. """ - xmin = min([t.x0 for direction in t_bbox for t in t_bbox[direction]]) - ymin = min([t.y0 for direction in t_bbox for t in t_bbox[direction]]) - xmax = max([t.x1 for direction in t_bbox for t in t_bbox[direction]]) - ymax = max([t.y1 for direction in t_bbox for t in t_bbox[direction]]) + xmin = min(t.x0 for direction in t_bbox for t in t_bbox[direction]) + ymin = min(t.y0 for direction in t_bbox for t in t_bbox[direction]) + xmax = max(t.x1 for direction in t_bbox for t in t_bbox[direction]) + ymax = max(t.y1 for direction in t_bbox for t in t_bbox[direction]) text_bbox = (xmin, ymin, xmax, ymax) return text_bbox @@ -119,21 +123,25 @@ class Stream(BaseParser): Two-dimensional list of text objects grouped into rows. """ - row_y = 0 + row_y = None rows = [] temp = [] - for t in text: + non_empty_text = [t for t in text if t.get_text().strip()] + for t in non_empty_text: # is checking for upright necessary? - # if t.get_text().strip() and all([obj.upright for obj in t._objs if - # type(obj) is LTChar]): - if t.get_text().strip(): - if not np.isclose(row_y, t.y0, atol=row_tol): - rows.append(sorted(temp, key=lambda t: t.x0)) - temp = [] - row_y = t.y0 - temp.append(t) + # if t.get_text().strip() and all([obj.upright \ + # for obj in t._objs + # if type(obj) is LTChar]): + if row_y is None: + row_y = t.y0 + elif not np.isclose(row_y, t.y0, atol=row_tol): + rows.append(sorted(temp, key=lambda t: t.x0)) + temp = [] + # We update the row's bottom as we go, to be forgiving if there + # is a gradual change across multiple columns. + row_y = t.y0 + temp.append(t) rows.append(sorted(temp, key=lambda t: t.x0)) - __ = rows.pop(0) # TODO: hacky return rows @staticmethod @@ -170,7 +178,8 @@ class Stream(BaseParser): merged.append(higher) elif column_tol < 0: if higher[0] <= lower[1]: - if np.isclose(higher[0], lower[1], atol=abs(column_tol)): + if np.isclose(higher[0], lower[1], + atol=abs(column_tol)): merged.append(higher) else: upper_bound = max(lower[1], higher[1]) @@ -198,10 +207,13 @@ class Stream(BaseParser): """ row_mids = [ - sum([(t.y0 + t.y1) / 2 for t in r]) / len(r) if len(r) > 0 else 0 + sum((t.y0 + t.y1) / 2 for t in r) / len(r) if len(r) > 0 else 0 for r in rows_grouped ] - rows = [(row_mids[i] + row_mids[i - 1]) / 2 for i in range(1, len(row_mids))] + rows = [ + (row_mids[i] + row_mids[i - 1]) / 2 + for i in range(1, len(row_mids)) + ] rows.insert(0, text_y_max) rows.append(text_y_min) rows = [(rows[i], rows[i + 1]) for i in range(0, len(rows) - 1)] @@ -230,7 +242,9 @@ class Stream(BaseParser): text = Stream._group_rows(text, row_tol=row_tol) elements = [len(r) for r in text] new_cols = [ - (t.x0, t.x1) for r in text if len(r) == max(elements) for t in r + (t.x0, t.x1) + for r in text if len(r) == max(elements) + for t in r ] cols.extend(Stream._merge_columns(sorted(new_cols))) return cols @@ -262,12 +276,13 @@ class Stream(BaseParser): def _validate_columns(self): if self.table_areas is not None and self.columns is not None: if len(self.table_areas) != len(self.columns): - raise ValueError("Length of table_areas and columns" " should be equal") + raise ValueError("Length of table_areas and columns" + " should be equal") def _nurminen_table_detection(self, textlines): """A general implementation of the table detection algorithm described by Anssi Nurminen's master's thesis. - Link: https://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/21520/Nurminen.pdf?sequence=3 + Link: https://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/21520/Nurminen.pdf?sequence=3 # noqa Assumes that tables are situated relatively far apart vertically. @@ -284,7 +299,7 @@ class Stream(BaseParser): # guess table areas using textlines and relevant edges table_bbox = textedges.get_table_areas(textlines, relevant_textedges) # treat whole page as table area if no table areas found - if not len(table_bbox): + if not table_bbox: table_bbox = {(0, 0, self.pdf_width, self.pdf_height): None} return table_bbox @@ -302,7 +317,8 @@ class Stream(BaseParser): y1 = float(y1) x2 = float(x2) y2 = float(y2) - region_text = text_in_bbox((x1, y2, x2, y1), self.horizontal_text) + region_text = text_in_bbox( + (x1, y2, x2, y1), self.horizontal_text) hor_text.extend(region_text) # find tables based on nurminen's detection algorithm table_bbox = self._nurminen_table_detection(hor_text) @@ -328,8 +344,10 @@ class Stream(BaseParser): self.t_bbox = t_bbox - text_x_min, text_y_min, text_x_max, text_y_max = self._text_bbox(self.t_bbox) - rows_grouped = self._group_rows(self.t_bbox["horizontal"], row_tol=self.row_tol) + text_x_min, text_y_min, text_x_max, text_y_max = \ + self._text_bbox(self.t_bbox) + rows_grouped = self._group_rows( + self.t_bbox["horizontal"], row_tol=self.row_tol) rows = self._join_rows(rows_grouped, text_y_max, text_y_min) elements = [len(r) for r in rows_grouped] @@ -354,14 +372,23 @@ class Stream(BaseParser): # see if the list contains elements, if yes, then use # the mode after removing 1s elements = list(filter(lambda x: x != 1, elements)) - if len(elements): + if elements: ncols = max(set(elements), key=elements.count) else: warnings.warn( - "No tables found in table area {}".format(table_idx + 1) + "No tables found in table area {}" + .format(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) + 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 + ) inner_text = [] for i in range(1, len(cols)): left = cols[i - 1][1] @@ -431,23 +458,30 @@ class Stream(BaseParser): return table - def extract_tables(self, filename, suppress_stdout=False, layout_kwargs={}): + def extract_tables(self, filename, suppress_stdout=False, + layout_kwargs=None): + layout_kwargs = layout_kwargs or {} self._generate_layout(filename, layout_kwargs) if not suppress_stdout: - logger.info("Processing {}".format(os.path.basename(self.rootname))) + logger.info("Processing {}".format( + os.path.basename(self.rootname))) 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)) + " text-based pages.".format( + os.path.basename(self.rootname)) ) else: warnings.warn( - "No tables found on {}".format(os.path.basename(self.rootname)) + "No tables found on {}".format( + os.path.basename(self.rootname)) ) return [] + # Identify plausible areas within the doc where tables lie, + # populate table_bbox keys with these areas. self._generate_table_bbox() _tables = [] diff --git a/camelot/plotting.py b/camelot/plotting.py index 5e0dc0c..51928e9 100644 --- a/camelot/plotting.py +++ b/camelot/plotting.py @@ -37,7 +37,7 @@ class PlotMethods(object): raise NotImplementedError( "Lattice flavor does not support kind='{}'".format(kind) ) - elif table.flavor == "stream" and kind in ["joint", "line"]: + elif table.flavor == "stream" and kind in ["line"]: raise NotImplementedError( "Stream flavor does not support kind='{}'".format(kind) ) @@ -64,7 +64,13 @@ class PlotMethods(object): for t in table._text: xs.extend([t[0], t[2]]) ys.extend([t[1], t[3]]) - ax.add_patch(patches.Rectangle((t[0], t[1]), t[2] - t[0], t[3] - t[1])) + ax.add_patch( + patches.Rectangle( + (t[0], t[1]), + t[2] - t[0], + t[3] - t[1] + ) + ) ax.set_xlim(min(xs) - 10, max(xs) + 10) ax.set_ylim(min(ys) - 10, max(ys) + 10) return fig @@ -132,7 +138,8 @@ class PlotMethods(object): for t in table_bbox.keys(): ax.add_patch( patches.Rectangle( - (t[0], t[1]), t[2] - t[0], t[3] - t[1], fill=False, color="red" + (t[0], t[1]), t[2] - t[0], t[3] - t[1], + fill=False, color="red" ) ) if not _FOR_LATTICE: @@ -164,7 +171,10 @@ class PlotMethods(object): xs.extend([t[0], t[2]]) ys.extend([t[1], t[3]]) ax.add_patch( - patches.Rectangle((t[0], t[1]), t[2] - t[0], t[3] - t[1], color="blue") + patches.Rectangle( + (t[0], t[1]), t[2] - t[0], t[3] - t[1], + color="blue" + ) ) ax.set_xlim(min(xs) - 10, max(xs) + 10) ax.set_ylim(min(ys) - 10, max(ys) + 10) diff --git a/camelot/utils.py b/camelot/utils.py index e7ad848..c3bf723 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -30,6 +30,9 @@ from pdfminer.layout import ( ) +# pylint: disable=import-error +# PyLint will evaluate both branches, and will necessarily complain about one +# of them. PY3 = sys.version_info[0] >= 3 if PY3: from urllib.request import urlopen @@ -310,7 +313,8 @@ def get_rotation(chars, horizontal_text, vertical_text): if hlen < vlen: clockwise = sum(t.matrix[1] < 0 and t.matrix[2] > 0 for t in chars) anticlockwise = sum(t.matrix[1] > 0 and t.matrix[2] < 0 for t in chars) - rotation = "anticlockwise" if clockwise < anticlockwise else "clockwise" + rotation = "anticlockwise" if clockwise < anticlockwise \ + else "clockwise" return rotation @@ -341,12 +345,16 @@ def segments_in_bbox(bbox, v_segments, h_segments): v_s = [ v for v in v_segments - if v[1] > lb[1] - 2 and v[3] < rt[1] + 2 and lb[0] - 2 <= v[0] <= rt[0] + 2 + if v[1] > lb[1] - 2 and + v[3] < rt[1] + 2 and + lb[0] - 2 <= v[0] <= rt[0] + 2 ] h_s = [ h for h in h_segments - if h[0] > lb[0] - 2 and h[2] < rt[0] + 2 and lb[1] - 2 <= h[1] <= rt[1] + 2 + if h[0] > lb[0] - 2 and + h[2] < rt[0] + 2 and + lb[1] - 2 <= h[1] <= rt[1] + 2 ] return v_s, h_s @@ -464,10 +472,10 @@ def flag_font_size(textline, direction, strip_text=""): for t in textline if not isinstance(t, LTAnno) ] - l = [np.round(size, decimals=6) for text, size in d] - if len(set(l)) > 1: + text_sizes = [np.round(size, decimals=6) for text, size in d] + if len(set(text_sizes)) > 1: flist = [] - min_size = min(l) + min_size = min(text_sizes) for key, chars in groupby(d, itemgetter(1)): if key == min_size: fchars = [t[0] for t in chars] @@ -511,7 +519,6 @@ def split_textline(table, textline, direction, flag_size=False, strip_text=""): of row/column and text is the an lttextline substring. """ - idx = 0 cut_text = [] bbox = textline.bbox try: @@ -528,7 +535,9 @@ def split_textline(table, textline, direction, flag_size=False, strip_text=""): ] r = r_idx[0] x_cuts = [ - (c, table.cells[r][c].x2) for c in x_overlap if table.cells[r][c].right + (c, table.cells[r][c].x2) + for c in x_overlap + if table.cells[r][c].right ] if not x_cuts: x_cuts = [(x_overlap[0], table.cells[r][-1].x2)] @@ -561,7 +570,9 @@ def split_textline(table, textline, direction, flag_size=False, strip_text=""): ] c = c_idx[0] y_cuts = [ - (r, table.cells[r][c].y1) for r in y_overlap if table.cells[r][c].bottom + (r, table.cells[r][c].y1) + for r in y_overlap + if table.cells[r][c].bottom ] if not y_cuts: y_cuts = [(y_overlap[0], table.cells[-1][c].y1)] @@ -644,9 +655,8 @@ def get_table_index( """ r_idx, c_idx = [-1] * 2 for r in range(len(table.rows)): - if (t.y0 + t.y1) / 2.0 < table.rows[r][0] and (t.y0 + t.y1) / 2.0 > table.rows[ - r - ][1]: + if (t.y0 + t.y1) / 2.0 < table.rows[r][0] and \ + (t.y0 + t.y1) / 2.0 > table.rows[r][1]: lt_col_overlap = [] for c in table.cols: if c[0] <= t.x1 and c[1] >= t.x0: @@ -681,7 +691,9 @@ def get_table_index( X = 1.0 if abs(t.x0 - t.x1) == 0.0 else abs(t.x0 - t.x1) Y = 1.0 if abs(t.y0 - t.y1) == 0.0 else abs(t.y0 - t.y1) charea = X * Y - error = ((X * (y0_offset + y1_offset)) + (Y * (x0_offset + x1_offset))) / charea + error = ( + (X * (y0_offset + y1_offset)) + (Y * (x0_offset + x1_offset)) + ) / charea if split_text: return ( @@ -697,13 +709,16 @@ def get_table_index( ( r_idx, c_idx, - flag_font_size(t._objs, direction, strip_text=strip_text), + flag_font_size(t._objs, + direction, + strip_text=strip_text), ) ], error, ) else: - return [(r_idx, c_idx, text_strip(t.get_text(), strip_text))], error + return [(r_idx, c_idx, text_strip(t.get_text(), strip_text))], \ + error def compute_accuracy(error_weights): @@ -751,7 +766,6 @@ def compute_whitespace(d): """ whitespace = 0 - r_nempty_cells, c_nempty_cells = [], [] for i in d: for j in i: if j.strip() == "": @@ -811,6 +825,7 @@ def get_page_layout( width = layout.bbox[2] height = layout.bbox[3] dim = (width, height) + break # we assume a single page pdf return layout, dim diff --git a/docs/user/install.rst b/docs/user/install.rst index b3d4813..4bbf491 100644 --- a/docs/user/install.rst +++ b/docs/user/install.rst @@ -13,7 +13,7 @@ The easiest way to install Camelot is to install it with `conda`_, which is a pa $ conda install -c conda-forge camelot-py -.. note:: Camelot is available for Python 2.7, 3.5, 3.6 and 3.7 on Linux, macOS and Windows. For Windows, you will need to install ghostscript which you can get from their `downloads page`_. +.. note:: Camelot is available for Python 3.5, 3.6 and 3.7 on Linux, macOS and Windows. For Windows, you will need to install ghostscript which you can get from their `downloads page`_. .. _conda: https://conda.io/docs/ .. _Anaconda: http://docs.continuum.io/anaconda/ diff --git a/requirements.txt b/requirements.txt index f815e26..764c037 100755 --- a/requirements.txt +++ b/requirements.txt @@ -4,5 +4,5 @@ numpy>=1.13.3 opencv-python>=3.4.2.17 openpyxl>=2.5.8 pandas>=0.23.4 -pdfminer.six>=20170720 +pdfminer.six>=20200402 PyPDF2>=1.26.0 diff --git a/setup.py b/setup.py index b83f566..b2e90f5 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ requires = [ 'numpy>=1.13.3', 'openpyxl>=2.5.8', 'pandas>=0.23.4', - 'pdfminer.six>=20170720', + 'pdfminer.six>=20200402', 'PyPDF2>=1.26.0' ] @@ -69,9 +69,8 @@ def setup_package(): }, classifiers=[ # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers + # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers # noqa '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' diff --git a/tests/data.py b/tests/data.py index 3338a81..1017160 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", "", "", ""], @@ -80,7 +70,8 @@ data_stream = [ "5,000", "33,051,480", ], - ["Goa", "4,055,567", "110,000", "330,053", "0", "4,495,620", "12,560", "4,508,180"], + ["Goa", "4,055,567", "110,000", "330,053", "0", "4,495,620", "12,560", + "4,508,180"], [ "Gujarat", "26,328,400", @@ -171,7 +162,8 @@ data_stream = [ "313,762", "67,044,159", ], - ["Manipur", "2,494,600", "187,700", "897,400", "0", "3,579,700", "0", "3,579,700"], + ["Manipur", "2,494,600", "187,700", "897,400", "0", "3,579,700", + "0", "3,579,700"], [ "Meghalaya", "2,894,093", @@ -236,7 +228,8 @@ data_stream = [ data_stream_table_rotated = [ [ - "Table 21 Current use of contraception by background characteristics\u2014Continued", + "Table 21 Current use of contraception by background characteristics" + "\u2014Continued", "", "", "", @@ -330,7 +323,8 @@ data_stream_table_rotated = [ "Total", "women", ], - ["Caste/tribe", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""], + ["Caste/tribe", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", ""], [ "Scheduled caste", "74.8", @@ -407,7 +401,8 @@ data_stream_table_rotated = [ "100.0", "3,319", ], - ["Wealth index", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""], + ["Wealth index", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", ""], [ "Lowest", "64.5", @@ -830,7 +825,8 @@ 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", "", "", "", @@ -842,7 +838,8 @@ data_stream_two_tables_1 = [ "", ], [ - "Program. Represents arrests reported (not charged) by 12,910 agencies with a total population of 247,526,916 as estimated", + "by the FBI. Some persons may be arrested more than once during a " + "year, therefore, the data in this table, in some cases,", "", "", "", @@ -854,19 +851,8 @@ data_stream_two_tables_1 = [ "", ], [ - "by the FBI. Some persons may be arrested more than once during a year, therefore, the data in this table, in some cases,", - "", - "", - "", - "", - "", - "", - "", - "", - "", - ], - [ - "could represent multiple arrests of the same person. See text, this section and source]", + "could represent multiple arrests of the same person. See text, " + "this section and source]", "", "", "", @@ -903,7 +889,8 @@ data_stream_two_tables_1 = [ "and over", ], [ - "Total .\n .\n . . . . . .\n . .\n . .\n . .\n . .\n . .\n . .\n . .\n . . .", + "Total .\n .\n . . . . . .\n . .\n . .\n . .\n . .\n . " + ".\n . .\n . .\n . . .", "11,062 .6", "1,540 .0", "9,522 .6", @@ -915,7 +902,8 @@ 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", @@ -976,7 +964,8 @@ data_stream_two_tables_1 = [ "64.5", ], [ - "Property crime . . . .\n . .\n . . .\n . . .\n .\n . . . .", + "Property crime . . . .\n . .\n . . .\n . . .\n .\n . . " + ". .", "1,396 .4", "338 .7", "1,057 .7", @@ -1060,7 +1049,8 @@ data_stream_two_tables_1 = [ "25.5", ], [ - "Fraud .\n.\n.\n. .\n. . . .\n. .\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n.\n.", + "Fraud .\n.\n.\n. .\n. . . .\n. .\n.\n. .\n.\n.\n. .\n.\n.\n. " + ".\n.\n.\n.", "173.7", "5.1", "168.5", @@ -1290,19 +1280,8 @@ data_stream_two_tables_1 = [ ], [ "", - "– Represents zero. X Not applicable. 1 Buying, receiving, possessing stolen property. 2 Except forcible rape and prostitution.", - "", - "", - "", - "", - "", - "", - "", - "", - ], - [ - "", - "Source: U.S. Department of Justice, Federal Bureau of Investigation, Uniform Crime Reports, Arrests Master Files.", + "– Represents zero. X Not applicable. 1 Buying, receiving, " + "possessing stolen property. 2 Except forcible rape and prostitution.", "", "", "", @@ -1315,17 +1294,10 @@ data_stream_two_tables_1 = [ ] 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", + "[Based on Uniform Crime Reporting (UCR) Program. Represents " + "arrests reported (not charged) by 12,371 agencies", "", "", "", @@ -1333,7 +1305,8 @@ data_stream_two_tables_2 = [ "", ], [ - "with a total population of 239,839,971 as estimated by the FBI. See headnote, Table 324]", + "with a total population of 239,839,971 as estimated by the FBI. " + "See headnote, Table 324]", "", "", "", @@ -1344,7 +1317,8 @@ data_stream_two_tables_2 = [ ["Offense charged", "", "", "", "Indian/Alaskan", "Asian Pacific"], ["", "Total", "White", "Black", "Native", "Islander"], [ - "Total .\n .\n .\n .\n . .\n . . .\n . . .\n .\n . . .\n .\n . . .\n . .\n .\n . . .\n .\n .\n .\n . .\n . .\n . .", + "Total .\n .\n .\n .\n . .\n . . .\n . . .\n .\n . . .\n " + ".\n . . .\n . .\n .\n . . .\n .\n .\n .\n . .\n . .\n . .", "10,690,561", "7,389,208", "3,027,153", @@ -1352,7 +1326,8 @@ 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", @@ -1368,7 +1343,8 @@ data_stream_two_tables_2 = [ "97", ], [ - "Forcible rape . . . . . . . .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. .\n.\n.\n.\n.\n. .", + "Forcible rape . . . . . . . .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. " + ".\n.\n.\n.\n.\n. .", "16,362", "10,644", "5,319", @@ -1376,7 +1352,8 @@ data_stream_two_tables_2 = [ "230", ], [ - "Robbery . . . . .\n. . . . .\n.\n. . .\n.\n. . .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. . . .", + "Robbery . . . . .\n. . . . .\n.\n. . .\n.\n. . .\n.\n.\n. " + ".\n.\n.\n. .\n.\n.\n. . . .", "100,496", "43,039", "55,742", @@ -1384,7 +1361,8 @@ data_stream_two_tables_2 = [ "989", ], [ - "Aggravated assault . . . . . . . .\n. .\n. .\n.\n.\n.\n.\n. .\n. .\n.\n.\n.", + "Aggravated assault . . . . . . . .\n. .\n. .\n.\n.\n.\n.\n. .\n. " + ".\n.\n.\n.", "330,368", "209,922", "111,904", @@ -1392,7 +1370,8 @@ data_stream_two_tables_2 = [ "3,929", ], [ - "Property crime . . . . .\n . . . . .\n .\n . . .\n .\n . .\n .\n .\n .\n . .\n .\n . .\n .\n .", + "Property crime . . . . .\n . . . . .\n .\n . . .\n .\n " + ". .\n .\n .\n .\n . .\n .\n . .\n .\n .", "1,364,409", "922,139", "406,382", @@ -1400,7 +1379,8 @@ data_stream_two_tables_2 = [ "18,289", ], [ - "Burglary . . .\n. . . . .\n. . .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n. . . .", + "Burglary . . .\n. . . . .\n. . .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. " + ".\n.\n.\n. .\n.\n. . . .", "234,551", "155,994", "74,419", @@ -1408,7 +1388,8 @@ data_stream_two_tables_2 = [ "2,117", ], [ - "Larceny-theft . . . . . . . .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. .\n.\n.\n.\n.\n. .", + "Larceny-theft . . . . . . . .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. " + ".\n.\n.\n.\n.\n. .", "1,056,473", "719,983", "306,625", @@ -1416,7 +1397,8 @@ data_stream_two_tables_2 = [ "15,219", ], [ - "Motor vehicle theft . . . . . .\n. .\n.\n. . .\n.\n. .\n.\n.\n.\n. .\n.\n. .\n.", + "Motor vehicle theft . . . . . .\n. .\n.\n. . .\n.\n. .\n.\n.\n.\n. " + ".\n.\n. .\n.", "63,919", "39,077", "23,184", @@ -1424,7 +1406,8 @@ data_stream_two_tables_2 = [ "841", ], [ - "Arson .\n. . . .\n. .\n. .\n. .\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. . . . . .", + "Arson .\n. . . .\n. .\n. .\n. .\n.\n. .\n.\n.\n. .\n.\n.\n. " + ".\n.\n.\n. .\n.\n.\n. . . . . .", "9,466", "7,085", "2,154", @@ -1432,7 +1415,8 @@ data_stream_two_tables_2 = [ "112", ], [ - "Other assaults .\n. . . . . . .\n.\n. . .\n.\n. . .\n.\n. .\n.\n.\n.\n. .\n.\n. .\n.", + "Other assaults .\n. . . . . . .\n.\n. . .\n.\n. . .\n.\n. " + ".\n.\n.\n.\n. .\n.\n. .\n.", "1,032,502", "672,865", "332,435", @@ -1440,7 +1424,8 @@ data_stream_two_tables_2 = [ "12,075", ], [ - "Forgery and counterfeiting .\n. . . . . . .\n.\n. .\n.\n.\n.\n. .\n. .\n.", + "Forgery and counterfeiting .\n. . . . . . .\n.\n. .\n.\n.\n.\n. " + ".\n. .\n.", "67,054", "44,730", "21,251", @@ -1448,7 +1433,8 @@ data_stream_two_tables_2 = [ "728", ], [ - "Fraud .\n.\n. . . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n. .\n. .\n. .\n.\n.\n. . . . . . .", + "Fraud .\n.\n. . . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n. .\n. .\n. " + ".\n.\n.\n. . . . . . .", "161,233", "108,032", "50,367", @@ -1456,7 +1442,8 @@ data_stream_two_tables_2 = [ "1,519", ], [ - "Embezzlement . . . .\n. . . . .\n.\n. . .\n.\n. . .\n.\n.\n. .\n.\n. .\n.\n.\n.\n.", + "Embezzlement . . . .\n. . . . .\n.\n. . .\n.\n. . .\n.\n.\n. " + ".\n.\n. .\n.\n.\n.\n.", "13,960", "9,208", "4,429", @@ -1472,7 +1459,8 @@ data_stream_two_tables_2 = [ "742", ], [ - "Vandalism . . . . . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. .\n.\n.\n.\n. .", + "Vandalism . . . . . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n.\n.\n. " + ".\n. .\n.\n.\n.\n. .", "212,173", "157,723", "48,746", @@ -1496,7 +1484,8 @@ data_stream_two_tables_2 = [ "1,413", ], [ - "Sex offenses 1 . . . . . . . .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. .\n.\n.\n.\n.\n. .", + "Sex offenses 1 . . . . . . . .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. " + ".\n.\n.\n.\n.\n. .", "60,175", "44,240", "14,347", @@ -1504,7 +1493,8 @@ data_stream_two_tables_2 = [ "873", ], [ - "Drug abuse violations . . . . . . . .\n. . .\n.\n.\n.\n. .\n. .\n.\n.\n.\n.", + "Drug abuse violations . . . . . . . .\n. . .\n.\n.\n.\n. .\n. " + ".\n.\n.\n.\n.", "1,301,629", "845,974", "437,623", @@ -1512,7 +1502,8 @@ data_stream_two_tables_2 = [ "9,444", ], [ - "Gambling . . . . .\n. . . . .\n.\n. . .\n.\n. . .\n. .\n.\n. . .\n.\n.\n.\n.\n. .\n. .", + "Gambling . . . . .\n. . . . .\n.\n. . .\n.\n. . .\n. .\n.\n. . " + ".\n.\n.\n.\n.\n. .\n. .", "8,046", "2,290", "5,518", @@ -1528,7 +1519,8 @@ data_stream_two_tables_2 = [ "624", ], [ - "Driving under the influence . . . . . . .\n. .\n.\n. .\n.\n.\n.\n.\n. .", + "Driving under the influence . . . . . . .\n. .\n.\n. " + ".\n.\n.\n.\n.\n. .", "1,105,401", "954,444", "121,594", @@ -1536,7 +1528,8 @@ data_stream_two_tables_2 = [ "14,460", ], [ - "Liquor laws . . . . . . . .\n. .\n. .\n. .\n. .\n. . .\n.\n.\n.\n. .\n. .\n.\n.\n.\n.", + "Liquor laws . . . . . . . .\n. .\n. .\n. .\n. .\n. . " + ".\n.\n.\n.\n. .\n. .\n.\n.\n.\n.", "444,087", "373,189", "50,431", @@ -1544,7 +1537,8 @@ data_stream_two_tables_2 = [ "5,591", ], [ - "Drunkenness . .\n. . . . . . .\n.\n. . .\n.\n. . .\n.\n.\n.\n. . .\n.\n.\n.\n.\n.\n.", + "Drunkenness . .\n. . . . . . .\n.\n. . .\n.\n. . .\n.\n.\n.\n. . " + ".\n.\n.\n.\n.\n.\n.", "469,958", "387,542", "71,020", @@ -1552,7 +1546,8 @@ data_stream_two_tables_2 = [ "2,844", ], [ - "Disorderly conduct . . .\n. . . . . .\n. .\n. . .\n.\n.\n.\n. .\n. .\n.\n.\n.\n.", + "Disorderly conduct . . .\n. . . . . .\n. .\n. . .\n.\n.\n.\n. .\n. " + ".\n.\n.\n.\n.", "515,689", "326,563", "176,169", @@ -1560,7 +1555,8 @@ data_stream_two_tables_2 = [ "4,174", ], [ - "Vagrancy . . .\n. .\n. . . .\n. .\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. .\n.\n.\n. . . .", + "Vagrancy . . .\n. .\n. . . .\n. .\n.\n. .\n.\n.\n. .\n.\n.\n. " + ".\n.\n.\n. .\n.\n.\n. . . .", "26,347", "14,581", "11,031", @@ -1568,7 +1564,8 @@ data_stream_two_tables_2 = [ "192", ], [ - "All other offenses (except traffic) . .\n. .\n. .\n. .\n.\n.\n.\n. .\n.", + "All other offenses (except traffic) . .\n. .\n. .\n. .\n.\n.\n.\n. " + ".\n.", "2,929,217", "1,937,221", "911,670", @@ -1576,7 +1573,8 @@ data_stream_two_tables_2 = [ "36,446", ], [ - "Suspicion . . .\n. . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n. .\n.\n.\n.\n.\n. .\n. . . .", + "Suspicion . . .\n. . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n. " + ".\n.\n.\n.\n.\n. .\n. . . .", "1,513", "677", "828", @@ -1592,7 +1590,8 @@ data_stream_two_tables_2 = [ "1,060", ], [ - "Runaways . . . . . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n.\n.\n. .\n. .\n.\n.\n.\n. .", + "Runaways . . . . . . . .\n. .\n. .\n. .\n. .\n. .\n. .\n.\n.\n. " + ".\n. .\n.\n.\n.\n. .", "73,616", "48,343", "19,670", @@ -1600,14 +1599,6 @@ 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 = [ @@ -1634,10 +1625,12 @@ data_stream_columns = [ "Nombre Localidad", ], ["Entidad", "", "Municipio", "", "Localidad", ""], - ["01", "Aguascalientes", "001", "Aguascalientes", "0094", "Granja Adelita"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0094", + "Granja Adelita"], ["01", "Aguascalientes", "001", "Aguascalientes", "0096", "Agua Azul"], ["01", "Aguascalientes", "001", "Aguascalientes", "0100", "Rancho Alegre"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0102", "Los Arbolitos [Rancho]"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0102", + "Los Arbolitos [Rancho]"], [ "01", "Aguascalientes", @@ -1655,7 +1648,8 @@ data_stream_columns = [ "0112", "Baj\xedo los V\xe1zquez", ], - ["01", "Aguascalientes", "001", "Aguascalientes", "0113", "Baj\xedo de Montoro"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0113", + "Baj\xedo de Montoro"], [ "01", "Aguascalientes", @@ -1697,8 +1691,10 @@ data_stream_columns = [ "Ca\xf1ada Honda [Estaci\xf3n]", ], ["01", "Aguascalientes", "001", "Aguascalientes", "0127", "Los Ca\xf1os"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0128", "El Cari\xf1\xe1n"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0129", "El Carmen [Granja]"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0128", + "El Cari\xf1\xe1n"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0129", + "El Carmen [Granja]"], [ "01", "Aguascalientes", @@ -1733,9 +1729,11 @@ data_stream_columns = [ "El Colorado (El Soyatal)", ], ["01", "Aguascalientes", "001", "Aguascalientes", "0146", "El Conejal"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0157", "Cotorina de Abajo"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0157", + "Cotorina de Abajo"], ["01", "Aguascalientes", "001", "Aguascalientes", "0162", "Coyotes"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0166", "La Huerta (La Cruz)"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0166", + "La Huerta (La Cruz)"], [ "01", "Aguascalientes", @@ -1752,17 +1750,20 @@ data_stream_columns = [ "0171", "Los Cuervos (Los Ojos de Agua)", ], - ["01", "Aguascalientes", "001", "Aguascalientes", "0172", "San Jos\xe9 [Granja]"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0172", + "San Jos\xe9 [Granja]"], ["01", "Aguascalientes", "001", "Aguascalientes", "0176", "La Chiripa"], ["01", "Aguascalientes", "001", "Aguascalientes", "0182", "Dolores"], ["01", "Aguascalientes", "001", "Aguascalientes", "0183", "Los Dolores"], ["01", "Aguascalientes", "001", "Aguascalientes", "0190", "El Duraznillo"], ["01", "Aguascalientes", "001", "Aguascalientes", "0191", "Los Dur\xf3n"], ["01", "Aguascalientes", "001", "Aguascalientes", "0197", "La Escondida"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0201", "Brande Vin [Bodegas]"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0201", + "Brande Vin [Bodegas]"], ["01", "Aguascalientes", "001", "Aguascalientes", "0207", "Valle Redondo"], ["01", "Aguascalientes", "001", "Aguascalientes", "0209", "La Fortuna"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0212", "Lomas del Gachup\xedn"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0212", + "Lomas del Gachup\xedn"], [ "01", "Aguascalientes", @@ -1772,22 +1773,12 @@ data_stream_columns = [ "El Carmen (Gallinas G\xfceras) [Rancho]", ], ["01", "Aguascalientes", "001", "Aguascalientes", "0216", "La Gloria"], - ["01", "Aguascalientes", "001", "Aguascalientes", "0226", "Hacienda Nueva"], + ["01", "Aguascalientes", "001", "Aguascalientes", "0226", + "Hacienda Nueva"], ] 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", "", "", "", "", ""], @@ -1977,7 +1968,18 @@ data_stream_split_text = [ "(872) 825-8309", "2014/04/11", ], - ["", "", "A SENSU JAPANESE", "", "7123 SOUTH 92ND EAST", "", "", "", "", ""], + [ + "", + "", + "A SENSU JAPANESE", + "", + "7123 SOUTH 92ND EAST", + "", + "", + "", + "", + "", + ], [ "625422", "BAW", @@ -2029,7 +2031,18 @@ data_stream_split_text = [ "(580) 928-2700", "2014/09/08", ], - ["", "", "ANDOLINI'S PIZZERIA &", "", "12140 EAST 96TH STREET", "", "", "", "", ""], + [ + "", + "", + "ANDOLINI'S PIZZERIA &", + "", + "12140 EAST 96TH STREET", + "", + "", + "", + "", + "", + ], [ "428377", "BAW", @@ -2148,7 +2161,8 @@ data_stream_flag_size = [ "from SBI", "from", ], - ["", "Debt", "", "", "RBI", "Banks", "LIC", "GIC", "NABARD", "& Other", "NCDC"], + ["", "Debt", "", "", "RBI", "Banks", "LIC", "GIC", "NABARD", "& Other", + "NCDC"], ["", "", "", "", "", "& FIs", "", "", "", "Banks", ""], ["1", "2=", "3", "4", "5", "6=", "7", "8", "9", "10", "11"], ["", "(3 to 6)+14", "", "", "", "(7 to13)", "", "", "", "", ""], @@ -2165,7 +2179,8 @@ data_stream_flag_size = [ "-", "0.25", ], - ["Arunachal Pradesh", "1.23", "1.1", "-", "-", "0.13", "-", "-", "-", "-", "-"], + ["Arunachal Pradesh", "1.23", "1.1", "-", "-", "0.13", "-", "-", "-", + "-", "-"], [ "Assam", "12.69", @@ -2194,8 +2209,10 @@ data_stream_flag_size = [ ], ["Chhattisgarh", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"], ["Goa", "1.4", "1.02", "-", "-", "0.38", "0.31", "-", "0.07", "-", "-"], - ["Gujarat", "19.75", "17.1", "-", "-", "2.64", "1.17", "-", "1.11", "-", "0.44"], - ["Haryana", "11.53", "9.67", "-", "0.06", "1.8", "0.55", "-", "0.64", "-", "0.49"], + ["Gujarat", "19.75", "17.1", "-", "-", "2.64", "1.17", "-", "1.11", + "-", "0.44"], + ["Haryana", "11.53", "9.67", "-", "0.06", "1.8", "0.55", "-", "0.64", + "-", "0.49"], [ "Himachal Pradesh", "8.02", @@ -2223,7 +2240,8 @@ data_stream_flag_size = [ "-", ], ["Jharkhand", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"], - ["Karnataka", "22.44", "19.59", "-", "-", "2.86", "1.22", "-", "0.89", "-", "0.69"], + ["Karnataka", "22.44", "19.59", "-", "-", "2.86", "1.22", "-", "0.89", + "-", "0.69"], [ "Kerala", "29.03", @@ -2263,11 +2281,16 @@ data_stream_flag_size = [ "0.02", "2.89", ], - ["Manipur", "2.17", "1.61", "-", "0.26", "0.29", "0.08", "-", "-", "-", "0.09"], - ["Meghalaya", "1.36", "1.38", "-", "-", "-0.02", "0.04", "-", "-0.05", "-", "0.03"], - ["Mizoram", "1.17", "0.46", "-", "0.27", "0.43", "0.11", "-", "-", "-", "0.03"], - ["Nagaland", "2.99", "2.6", "-", "-", "0.39", "0.24", "-", "-", "-", "0.04"], - ["Odisha", "34.04", "27.58", "-", "4.4", "2.06", "0.56", "-", "0.66", "-", "0.2"], + ["Manipur", "2.17", "1.61", "-", "0.26", "0.29", "0.08", "-", "-", "-", + "0.09"], + ["Meghalaya", "1.36", "1.38", "-", "-", "-0.02", "0.04", "-", "-0.05", + "-", "0.03"], + ["Mizoram", "1.17", "0.46", "-", "0.27", "0.43", "0.11", "-", "-", + "-", "0.03"], + ["Nagaland", "2.99", "2.6", "-", "-", "0.39", "0.24", "-", "-", "-", + "0.04"], + ["Odisha", "34.04", "27.58", "-", "4.4", "2.06", "0.56", "-", "0.66", + "-", "0.2"], [ "Punjab", "19.18", @@ -2295,8 +2318,10 @@ data_stream_flag_size = [ "0.81", ], ["Sikkim", "0.16", "-", "-", "-", "0.16", "0.03", "-", "-", "-", "0.01"], - ["Tamil Nadu", "34.11", "31.41", "-", "-", "2.7", "1.3", "-", "0.6", "-", "0.68"], - ["Tripura", "2.3", "1.89", "-", "-", "0.41", "0.41", "-", "-0.05", "-", "0.02"], + ["Tamil Nadu", "34.11", "31.41", "-", "-", "2.7", "1.3", "-", "0.6", "-", + "0.68"], + ["Tripura", "2.3", "1.89", "-", "-", "0.41", "0.41", "-", "-0.05", "-", + "0.02"], ["Uttaranchal", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"], [ "Uttar Pradesh", @@ -2393,11 +2418,13 @@ data_stream_edge_tol = [ ["Costs", "(0.21)"], ["T\notal investment result per unit", "3.78"], [ - "1 The results cover the period from inception of the Fund at 8 April 2016 through 31 December 2016.", + "1 The results cover the period from inception of the Fund at " + "8 April 2016 through 31 December 2016.", "", ], [ - "2 The result per unit is calculated using the total number of outstanding unit as per the end of the", + "2 The result per unit is calculated using the total number of " + "outstanding unit as per the end of the", "", ], ["period.", ""], @@ -2454,7 +2481,8 @@ data_lattice_table_rotated = [ "Men", "Women", ], - ["Kerala", "5738", "6633", "8864", "8297", "245", "2161", "3195", "1645", "2391"], + ["Kerala", "5738", "6633", "8864", "8297", "245", "2161", "3195", "1645", + "2391"], [ "Tamil Nadu", "7387", @@ -2503,11 +2531,16 @@ data_lattice_table_rotated = [ "1417", "1599", ], - ["Gujarat", "4403", "5374", "4866", "9645", "477", "2687", "3021", "2122", "2503"], - ["Madhya Pradesh", "*", "*", "*", "7942", "470", "1965", "2150", "1579", "1709"], - ["Orissa", "3756", "5540", "12024", "8473", "398", "2040", "2624", "1093", "1628"], - ["West Bengal", "*", "*", "*", "8047", "423", "2058", "2743", "1413", "2027"], - ["Uttar Pradesh", "*", "*", "*", "9860", "581", "2139", "2415", "1185", "1366"], + ["Gujarat", "4403", "5374", "4866", "9645", "477", "2687", "3021", "2122", + "2503"], + ["Madhya Pradesh", "*", "*", "*", "7942", "470", "1965", "2150", "1579", + "1709"], + ["Orissa", "3756", "5540", "12024", "8473", "398", "2040", "2624", "1093", + "1628"], + ["West Bengal", "*", "*", "*", "8047", "423", "2058", "2743", "1413", + "2027"], + ["Uttar Pradesh", "*", "*", "*", "9860", "581", "2139", "2415", "1185", + "1366"], [ "Pooled", "38742", @@ -2573,7 +2606,8 @@ data_lattice_two_tables_2 = [ ] data_lattice_table_regions = [ - ["Età dell’Assicurato \nall’epoca del decesso", "Misura % di \nmaggiorazione"], + ["Età dell’Assicurato \nall’epoca del decesso", + "Misura % di \nmaggiorazione"], ["18-75", "1,00%"], ["76-80", "0,50%"], ["81 in poi", "0,10%"], @@ -2596,10 +2630,12 @@ data_lattice_table_areas = [ ["Kerala", "2400", "7.2", "0.5", "25.3", "20.1", "41.5", "5.5", ""], ["Tamil Nadu", "2400", "21.4", "2.3", "8.8", "35.5", "25.8", "6.2", ""], ["Karnataka", "2399", "37.4", "2.8", "12.5", "18.3", "23.1", "5.8", ""], - ["Andhra Pradesh", "2400", "54.0", "1.7", "8.4", "13.2", "18.8", "3.9", ""], + ["Andhra Pradesh", "2400", "54.0", "1.7", "8.4", "13.2", "18.8", "3.9", + ""], ["Maharashtra", "2400", "22.0", "0.9", "17.3", "20.3", "32.6", "7.0", ""], ["Gujarat", "2390", "28.6", "0.1", "14.4", "23.1", "26.9", "6.8", ""], - ["Madhya Pradesh", "2402", "29.1", "3.4", "8.5", "35.1", "13.3", "10.6", ""], + ["Madhya Pradesh", "2402", "29.1", "3.4", "8.5", "35.1", "13.3", "10.6", + ""], ["Orissa", "2405", "33.2", "1.0", "10.4", "25.7", "21.2", "8.5", ""], ["West Bengal", "2293", "41.7", "4.4", "13.2", "17.1", "21.2", "2.4", ""], ["Uttar Pradesh", "2400", "35.3", "2.1", "4.5", "23.3", "27.1", "7.6", ""], @@ -2650,7 +2686,8 @@ data_lattice_process_background = [ "3,658", "3,183", ], - ["Kerala", "23.2.2010 to \n11.3.2010", "9", "17", "1.42", "3,559", "2,173", "855"], + ["Kerala", "23.2.2010 to \n11.3.2010", "9", "17", "1.42", "3,559", "2,173", + "855"], ["Total", "", "47", "92", "11.81", "22,455", "19,584", "10,644"], ] @@ -2689,7 +2726,8 @@ data_lattice_copy_text = [ ["COHS", "San Mateo", "Health Plan of San Mateo", "113,202"], ["COHS", "Ventura", "Gold Coast Health Plan", "202,217"], ["COHS", "Total COHS Enrollment", "", "2,176,064"], - ["Subtotal for Two-Plan, Regional Model, GMC and COHS", "", "", "10,132,022"], + ["Subtotal for Two-Plan, Regional Model, GMC and COHS", "", "", + "10,132,022"], ["PCCM", "Los Angeles", "AIDS Healthcare Foundation", "828"], ["PCCM", "San Francisco", "Family Mosaic", "25"], ["PCCM", "Total PHP Enrollment", "", "853"], @@ -2721,7 +2759,8 @@ data_lattice_shift_text_left_top = [ ], ["Blood Pressure #", "2400", "Men (≥ 18yrs)", "10%", "95%", "20%", "1728"], ["", "", "Women (≥ 18 yrs)", "", "", "", "1728"], - ["Fasting blood glucose", "2400", "Men (≥ 18 yrs)", "5%", "95%", "20%", "1825"], + ["Fasting blood glucose", "2400", "Men (≥ 18 yrs)", "5%", "95%", "20%", + "1825"], ["", "", "Women (≥ 18 yrs)", "", "", "", "1825"], [ "Knowledge &\nPractices on HTN &\nDM", @@ -2746,7 +2785,8 @@ data_lattice_shift_text_disable = [ "Sample size\nper State", ], ["Anthropometry", "", "", "", "", "", ""], - ["Clinical Examination", "2400", "", "All the available individuals", "", "", ""], + ["Clinical Examination", "2400", "", "All the available individuals", + "", "", ""], ["History of morbidity", "", "", "", "", "", ""], [ "Diet survey", @@ -2758,9 +2798,11 @@ data_lattice_shift_text_disable = [ "", ], ["", "", "Men (≥ 18yrs)", "", "", "", "1728"], - ["Blood Pressure #", "2400", "Women (≥ 18 yrs)", "10%", "95%", "20%", "1728"], + ["Blood Pressure #", "2400", "Women (≥ 18 yrs)", "10%", "95%", "20%", + "1728"], ["", "", "Men (≥ 18 yrs)", "", "", "", "1825"], - ["Fasting blood glucose", "2400", "Women (≥ 18 yrs)", "5%", "95%", "20%", "1825"], + ["Fasting blood glucose", "2400", "Women (≥ 18 yrs)", "5%", "95%", "20%", + "1825"], [ "Knowledge &\nPractices on HTN &", "2400", @@ -2785,7 +2827,8 @@ data_lattice_shift_text_right_bottom = [ ], ["Anthropometry", "", "", "", "", "", ""], ["Clinical Examination", "", "", "", "", "", ""], - ["History of morbidity", "2400", "", "", "", "", "All the available individuals"], + ["History of morbidity", "2400", "", "", "", "", + "All the available individuals"], [ "Diet survey", "1200", @@ -2796,9 +2839,11 @@ data_lattice_shift_text_right_bottom = [ "All the individuals partaking meals in the HH", ], ["", "", "Men (≥ 18yrs)", "", "", "", "1728"], - ["Blood Pressure #", "2400", "Women (≥ 18 yrs)", "10%", "95%", "20%", "1728"], + ["Blood Pressure #", "2400", "Women (≥ 18 yrs)", "10%", "95%", "20%", + "1728"], ["", "", "Men (≥ 18 yrs)", "", "", "", "1825"], - ["Fasting blood glucose", "2400", "Women (≥ 18 yrs)", "5%", "95%", "20%", "1825"], + ["Fasting blood glucose", "2400", "Women (≥ 18 yrs)", "5%", "95%", "20%", + "1825"], ["", "2400", "Men (≥ 18 yrs)", "-", "-", "-", "1728"], [ "Knowledge &\nPractices on HTN &\nDM", @@ -2820,7 +2865,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_grid_plot.png b/tests/files/baseline_plots/test_grid_plot.png index 3b835f5f078a099fb0c389a5e860c941de53a8a2..0607d15f9320ef335a1d213b2cd1811cb6e28ea8 100644 GIT binary patch delta 27 jcmZ4QxXy8cC!@tgFL`ETJ)?=aQY?!4*$t)c(`gzyQ+ delta 28 kcmZ4IxZZJsC!^&=FL@RPV?Be3IZ`aVxxN23cBv=;0EI3IK>z>% diff --git a/tests/files/baseline_plots/test_joint_plot.png b/tests/files/baseline_plots/test_joint_plot.png index e9e40ece9fad0e09be566f872bb8d94ed2fd9cb4..9f98d68e2dcd6a7809e96f664b452d1c731b94e0 100644 GIT binary patch literal 33969 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 Y8XMVt*g$$8ejkN;Q1d|gzEfBJ4|UQs^Z)<= literal 48678 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 H#FhU87erZu diff --git a/tests/files/baseline_plots/test_lattice_contour_plot.png b/tests/files/baseline_plots/test_lattice_contour_plot.png index a8d33265204f8759370a037bb2b7649363d46dae..e458b3daab7e9ea25482b49129edbcb50b927c8e 100644 GIT binary patch literal 47246 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

a4K6NbSItr0!HTOY;!s`WEyZAEI zB;>&n7MwaQ5lz(jt}hGx6-&{=J+&91pJuLS(@HPDIge1!oz-a(nYD-ZL`>H^DC-j1qG)U$wOSs_8NaHQ(f3RJ^ zw9)+vuG7dd3h6~@q-d(HrIXrU>VQBj^=hXvBeAgcY`<={#V5}eLEP5V5L+cBC0ZR+ z!E}kO=B#li_EACu?n|H+LLIyPx^d2#$Y%%*;~MSO5{mL4jjeF9Vsrg8pP-Lc-JJbP zQOpKi|McSO;YV!1sqtvI5!XETGt#&rf;wsvNUi#>6B3dj zyGp{%Ou-~>IFxRczlIn-pK+Lw~>Bo+1*JH_8FTADA2RmC4kSY}+yOXh0zAVj) zb;T^tq9&c)qq1M=+1Wk(GI)eJg9!-<2L5=ckgL^!u5Ew*o5endI0G_(iPd-cq z!%ZNzN@HD79O(6Z=i-!<6i)yX9-T5WiNU2z?}O?u%Cm{@2YX9RS;p{!8oOJa$> zhD@|i$%4Kt_Ko2a=CCh=k+gu2si#ww!{MagyH_6!=tsVida%YKaIrcF1;!)Qt}65v zO!$2$rwU?ZbNAZ`i_6LS8D_{%^L})~*)}7SekfXQuVPw{X|vC}N`z}^a$>MWr{y>% zRt*7yLu_P#hnKL5H{ohT*d%8?P@0h&bRlH8fAE?dq2P%Qm&x$bWoToj-|+s8viT2a z3R}1j<%rg(CZ9WlfcV&fsS|)QHrXq(vj6U_ha2O#Xfr|R%HcaTawByX2W&%C*c2jc z^-pHuMA&_ji;E 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_stream_grid_plot.png b/tests/files/baseline_plots/test_stream_grid_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..818958c0cc0d341179aa2fae2a488f2515fcc2dd GIT binary patch literal 9940 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 literal 0 HcmV?d00001 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?| diff --git a/tests/test_cli.py b/tests/test_cli.py index d1a660f..d3b7d55 100755 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -19,10 +19,16 @@ def test_help_output(): output = result.output assert prog_name == "camelot" - assert result.output.startswith("Usage: %(prog_name)s [OPTIONS] COMMAND" % locals()) + assert result.output.startswith( + "Usage: %(prog_name)s [OPTIONS] COMMAND" % + locals() + ) assert all( v in result.output - for v in ["Options:", "--version", "--help", "Commands:", "lattice", "stream"] + for v in [ + "Options:", "--version", "--help", "Commands:", "lattice", + "stream" + ] ) @@ -120,21 +126,24 @@ def test_cli_output_format(): # json result = runner.invoke( cli, - ["--format", "json", "--output", outfile.format("json"), "stream", infile], + ["--format", "json", "--output", outfile.format("json"), "stream", + infile], ) assert result.exit_code == 0 # excel result = runner.invoke( cli, - ["--format", "excel", "--output", outfile.format("xlsx"), "stream", infile], + ["--format", "excel", "--output", outfile.format("xlsx"), "stream", + infile], ) assert result.exit_code == 0 # html result = runner.invoke( cli, - ["--format", "html", "--output", outfile.format("html"), "stream", infile], + ["--format", "html", "--output", outfile.format("html"), "stream", + infile], ) assert result.exit_code == 0 @@ -166,6 +175,10 @@ def test_cli_quiet(): assert "No tables found on page-1" in result.output result = runner.invoke( - cli, ["--quiet", "--format", "csv", "--output", outfile, "stream", infile] + cli, + [ + "--quiet", "--format", "csv", "--output", outfile, "stream", + infile + ] ) assert "No tables found on page-1" not in result.output diff --git a/tests/test_common.py b/tests/test_common.py index 6fadc9d..6395a42 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -11,12 +11,15 @@ from camelot.__version__ import generate_version from .data import * + testdir = os.path.dirname(os.path.abspath(__file__)) testdir = os.path.join(testdir, "files") def test_parsing_report(): - parsing_report = {"accuracy": 99.02, "whitespace": 12.24, "order": 1, "page": 1} + parsing_report = { + "accuracy": 99.02, "whitespace": 12.24, "order": 1, "page": 1 + } filename = os.path.join(testdir, "foo.pdf") tables = camelot.read_pdf(filename) @@ -28,9 +31,17 @@ def test_password(): filename = os.path.join(testdir, "health_protected.pdf") tables = camelot.read_pdf(filename, password="ownerpass", flavor="stream") +<<<<<<< HEAD assert_frame_equal(df, tables[0].df) tables = camelot.read_pdf(filename, password="userpass", flavor="stream") +======= + assert len(tables) == 1 + assert_frame_equal(df, tables[0].df) + + tables = camelot.read_pdf(filename, password="userpass", flavor="stream") + assert len(tables) == 1 +>>>>>>> Fix unit tests, lint, drop Python 2 support assert_frame_equal(df, tables[0].df) @@ -229,9 +240,9 @@ def test_repr(): tables = camelot.read_pdf(filename) assert repr(tables) == "" assert repr(tables[0]) == "" - assert ( - repr(tables[0].cells[0][0]) == "" - ) + assert \ + repr(tables[0].cells[0][0]) == \ + "" def test_pages(): @@ -239,22 +250,23 @@ def test_pages(): tables = camelot.read_pdf(url) assert repr(tables) == "" assert repr(tables[0]) == "
" - assert ( - repr(tables[0].cells[0][0]) == "" - ) + assert \ + repr(tables[0].cells[0][0]) == \ + "" tables = camelot.read_pdf(url, pages="1-end") assert repr(tables) == "" assert repr(tables[0]) == "
" - assert ( - repr(tables[0].cells[0][0]) == "" - ) + assert \ + repr(tables[0].cells[0][0]) == \ + "" tables = camelot.read_pdf(url, pages="all") assert repr(tables) == "" assert repr(tables[0]) == "
" assert ( - repr(tables[0].cells[0][0]) == "" + repr(tables[0].cells[0][0]) == + "" ) @@ -264,7 +276,8 @@ def test_url(): assert repr(tables) == "" assert repr(tables[0]) == "
" assert ( - repr(tables[0].cells[0][0]) == "" + repr(tables[0].cells[0][0]) == + "" ) @@ -284,7 +297,12 @@ def test_table_order(): return t table_list = TableList( - [_make_table(2, 1), _make_table(1, 1), _make_table(3, 4), _make_table(1, 2)] + [ + _make_table(2, 1), + _make_table(1, 1), + _make_table(3, 4), + _make_table(1, 2) + ] ) assert [(t.page, t.order) for t in sorted(table_list)] == [ diff --git a/tests/test_plotting.py b/tests/test_plotting.py index f267e29..565c68c 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -4,13 +4,30 @@ import os import pytest +import matplotlib + import camelot +# The version of Matplotlib has an impact on some of the tests. Unfortunately, +# we can't enforce usage of a recent version of MatplotLib without dropping +# support for Python 3.6. +# To check the version of matplotlib installed: +# pip freeze | grep matplotlib +# To force upgrade: +# pip install --upgrade --force-reinstall matplotlib +# To force usage of a Python 3.6 compatible version: +# pip install "matplotlib==2.2.5" +# This condition can be removed in favor of a version requirement bump for +# matplotlib once support for Python 3.5 is dropped. + +LEGACY_MATPLOTLIB = matplotlib.__version__ < "3.2.1" testdir = os.path.dirname(os.path.abspath(__file__)) testdir = os.path.join(testdir, "files") +@pytest.mark.skipif(LEGACY_MATPLOTLIB, + reason="depends on a recent version of MatPlotLib") @pytest.mark.mpl_image_compare( baseline_dir="files/baseline_plots", remove_text=True) def test_text_plot(): @@ -26,6 +43,15 @@ def test_grid_plot(): tables = camelot.read_pdf(filename) return camelot.plot(tables[0], kind='grid') +@pytest.mark.skipif(LEGACY_MATPLOTLIB, + reason="depends on a recent version of MatPlotLib") +@pytest.mark.mpl_image_compare( + baseline_dir="files/baseline_plots", remove_text=True) +def test_stream_grid_plot(): + filename = os.path.join(testdir, "foo.pdf") + tables = camelot.read_pdf(filename, flavor="stream") + return camelot.plot(tables[0], kind='grid') + @pytest.mark.mpl_image_compare( baseline_dir="files/baseline_plots", remove_text=True) @@ -35,6 +61,8 @@ def test_lattice_contour_plot(): return camelot.plot(tables[0], kind='contour') +@pytest.mark.skipif(LEGACY_MATPLOTLIB, + reason="depends on a recent version of MatPlotLib") @pytest.mark.mpl_image_compare( baseline_dir="files/baseline_plots", remove_text=True) def test_stream_contour_plot(): @@ -51,6 +79,8 @@ def test_line_plot(): return camelot.plot(tables[0], kind='line') +@pytest.mark.skipif(LEGACY_MATPLOTLIB, + reason="depends on a recent version of MatPlotLib") @pytest.mark.mpl_image_compare( baseline_dir="files/baseline_plots", remove_text=True) def test_joint_plot(): @@ -59,6 +89,8 @@ def test_joint_plot(): return camelot.plot(tables[0], kind='joint') +@pytest.mark.skipif(LEGACY_MATPLOTLIB, + reason="depends on a recent version of MatPlotLib") @pytest.mark.mpl_image_compare( baseline_dir="files/baseline_plots", remove_text=True) def test_textedge_plot():