turicas/rows

Support Python 3

turicas opened this issue · 6 comments

Support Python 3

Any specific library missing in python3 to be replaced?

@ocarneiro, I actually don't know. We currently have these dependencies:

  • unicodecsv (for CSV plugin -- we may use csv from standard library on Python3)
  • click and requests (for command-line interface)
  • lxml (HTML and ODS plugins)
  • xlrd and xlwt (XLS)
  • openpyxl (XLSX)

And also development requirements:

  • coverage
  • ipdb
  • mock
  • nose
  • pylint
  • yanc

@ocarneiro, all dependencies are ported.
csv is Unicode-only in Python 3, and mock is in the standard library as unittest.mock since 3.3. The others claim py3 compatibility on PyPI.

Working in progress by @henriquebastos on #151.

Since many changes related to rows.fields were made on last version 0.2.1, I've started a new branch with Python 3 migration, from scratch: feature/python3-support.
First I converted the rows.fields module, utility functions and the library core, then I converted some plugins. By now I just need to convert the JSON and Parquet plugins. All tests are passing on Python 2.

@henriquebastos, I'd like somebody to review this branch once I finished -- could you please to it? I think I'm going to finish early this week.

Update: the work is almost complete! By now all tests are passing on both versions, but still need to:

  • Create test and fix a little issue I found on plugin HTML
  • Create test and fix a little issue I found on BinaryField
  • Fix problem with BinaryField precedence
  • Fix examples ecuador_radiodifusoras.py (Python 2), slip_opinions.py (2 and 3) and tests_uwsgi_log.py/uwsgi_log_plugin.py and the related problems on the library which are causing them to fail
  • Configure tox
  • Verify the best way to expose plugin functions (from rows.plugins.html import extract_links won't work, for example)