Skip to content

Commit 42b4d79

Browse files
committed
💚 update sortable to use csv2table 2.0.0
1 parent 0e5cfa6 commit 42b4d79

13 files changed

+173
-75
lines changed

Diff for: .gitignore

+6-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,11 @@ ENV/
8989

9090
# Rope project settings
9191
.ropeproject
92+
93+
# emacs
9294
*~
93-
commons/
94-
commons
95+
96+
# moban hashes
9597
.moban.hashes
98+
.DS_store
99+

Diff for: .moban.d/travis.yml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{% extends "travis.yml.jj2" %}
2+
3+
{%block custom_python_versions%}
4+
python:
5+
- pypy
6+
- 3.6
7+
- 3.5
8+
- 3.4
9+
- 3.3
10+
- 2.7
11+
{%endblock%}

Diff for: .moban.yml

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ configuration:
22
configuration_dir: "commons/config"
33
template_dir:
44
- "commons/templates"
5+
- "setupmobans/templates"
56
- ".moban.d"
67
configuration: pyexcel-sortable.yml
78
targets:
89
- README.rst: README.rst
910
- setup.py: setup.py
1011
- requirements.txt: requirements.txt
11-
- LICENSE: LICENSE.jj2
12+
- LICENSE: NEW_BSD_LICENSE.jj2
1213
- MANIFEST.in: MANIFEST.in.jj2
1314
- "tests/requirements.txt": "tests/requirements.txt"
14-
- test.sh: test.sh.jj2
15-
- test.bat: test.sh.jj2
15+
- test.sh: test.script.jj2
16+
- test.bat: test.script.jj2
1617
- .travis.yml: travis.yml
17-
- .gitignore: .gitignore.jj2
18+
- .gitignore: gitignore.jj2

Diff for: .travis.yml

-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ python:
1010
- 3.3
1111
- 2.7
1212
before_install:
13-
- cd $HOME
14-
- "if [[ $TRAVIS_PYTHON_VERSION == 'pypy' ]]; then deactivate && wget https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.7.1-linux_x86_64-portable.tar.bz2 -O - | tar -jxf - && echo 'Setting up aliases...' && ln -s pypy-5.7.1-linux_x86_64-portable pypy2-latest && export PATH=$HOME/pypy2-latest/bin/:$PATH && virtualenv --no-site-packages --python ~/pypy2-latest/bin/pypy pypy2-env && echo 'Creating custom env...' && source pypy2-env/bin/activate && python -V; fi"
15-
- cd -
1613
- if [[ $TRAVIS_PYTHON_VERSION == "2.6" ]]; then pip install flake8==2.6.2; fi
1714
- if [[ -f min_requirements.txt && "$MINREQ" -eq 1 ]]; then
1815
mv min_requirements.txt requirements.txt ;

Diff for: MANIFEST.in

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
include README.rst
2+
include LICENSE
23
include CHANGELOG.rst

Diff for: README.rst

+27-21
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,31 @@ pyexcel-sortable - Let you focus on data, instead of file formats
88
.. image:: https://api.travis-ci.org/pyexcel/pyexcel-sortable.svg?branch=master
99
:target: http://travis-ci.org/pyexcel/pyexcel-sortable
1010

11-
.. image:: https://codecov.io/github/pyexcel/pyexcel-sortable/coverage.png
12-
:target: https://codecov.io/github/pyexcel/pyexcel-sortable
11+
.. image:: https://codecov.io/gh/pyexcel/pyexcel-sortable/branch/master/graph/badge.svg
12+
:target: https://codecov.io/gh/pyexcel/pyexcel-sortable
1313

1414
.. image:: https://img.shields.io/gitter/room/gitterHQ/gitter.svg
1515
:target: https://gitter.im/pyexcel/Lobby
1616

1717

18+
Support the project
19+
================================================================================
20+
21+
If your company has embedded pyexcel and its components into a revenue generating
22+
product, please `support me on patreon <https://www.patreon.com/bePatron?u=5537627>`_ to
23+
maintain the project and develop it further.
1824

25+
If you are an individual, you are welcome to support me too on patreon and for however long
26+
you feel like. As a patreon, you will receive
27+
`early access to pyexcel related contents <https://www.patreon.com/pyexcel/posts>`_.
28+
29+
With your financial support, I will be able to invest
30+
a little bit more time in coding, documentation and writing interesting posts.
31+
32+
33+
34+
Introduction
35+
================================================================================
1936
**pyexcel-sortable** is inspired by `csvtotable <https://github.com/vividvilla/csvtotable>`_ and
2037
provides csvtotable functionality to pyexcel family.
2138

@@ -32,7 +49,8 @@ Quick evaluation::
3249

3350
Installation
3451
================================================================================
35-
You can install it via pip:
52+
53+
You can install pyexcel-sortable via pip:
3654

3755
.. code-block:: bash
3856
@@ -49,21 +67,6 @@ or clone it and install it:
4967
5068
5169
52-
Support the project
53-
================================================================================
54-
55-
If your company has embedded pyexcel and its components into a revenue generating
56-
product, please `support me on patreon <https://www.patreon.com/bePatron?u=5537627>`_ to
57-
maintain the project and develop it further.
58-
59-
If you are an individual, you are welcome to support me too on patreon and for however long
60-
you feel like to. As a patreon, you will receive
61-
`early access to pyexcel related contents <https://www.patreon.com/pyexcel/posts>`_.
62-
63-
With your financial support, I will be able to invest
64-
a little bit more time in coding, documentation and writing interesting posts.
65-
66-
6770
Development guide
6871
================================================================================
6972

@@ -88,9 +91,9 @@ and update CHANGELOG.rst.
8891
.. note::
8992

9093
As to rnd_requirements.txt, usually, it is created when a dependent
91-
library is not released. Once the dependecy is installed
92-
(will be released), the future
93-
version of the dependency in the requirements.txt will be valid.
94+
library is not released. Once the dependecy is installed
95+
(will be released), the future
96+
version of the dependency in the requirements.txt will be valid.
9497

9598

9699
How to test your contribution
@@ -112,6 +115,7 @@ How to update test environment and update documentation
112115
Additional steps are required:
113116

114117
#. pip install moban
118+
#. git clone https://github.com/moremoban/setupmobans.git # generic setup
115119
#. git clone https://github.com/pyexcel/pyexcel-commons.git commons
116120
#. make your changes in `.moban.d` directory, then issue command `moban`
117121

@@ -132,6 +136,8 @@ Acceptance criteria
132136
#. Has all code lines tested
133137
#. Passes all Travis CI builds
134138
#. Has fair amount of documentation if your change is complex
139+
#. Please update CHANGELOG.rst
140+
#. Please add yourself to CONTRIBUTORS.rst
135141
#. Agree on NEW BSD License for your contribution
136142

137143

Diff for: notebook.ipynb

+34-25
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,45 @@
22
"cells": [
33
{
44
"cell_type": "code",
5-
"execution_count": 1,
6-
"metadata": {
7-
"collapsed": false
8-
},
5+
"execution_count": 2,
6+
"metadata": {},
97
"outputs": [
108
{
11-
"ename": "TypeError",
12-
"evalue": "unorderable types: int() > NoneType()",
13-
"output_type": "error",
14-
"traceback": [
15-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
16-
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
17-
"\u001b[0;32m<ipython-input-1-7ac7233c3511>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpyexcel\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0msheet\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_sheet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile_name\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'goog.ods'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0msheet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave_as\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'me.sortable.html'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplay_length\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisplay\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mIFrame\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mIFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"me.sortable.html\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m600\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m500\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
18-
"\u001b[0;32m/Users/jaska/github/data-analysis-env/lib/python3.5/site-packages/pyexcel-0.5.3-py3.5.egg/pyexcel/internal/meta.py\u001b[0m in \u001b[0;36msave_as\u001b[0;34m(self, filename, **keywords)\u001b[0m\n\u001b[1;32m 279\u001b[0m \"\"\"\n\u001b[1;32m 280\u001b[0m return save_sheet(self, file_name=filename,\n\u001b[0;32m--> 281\u001b[0;31m **keywords)\n\u001b[0m\u001b[1;32m 282\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 283\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msave_to_memory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfile_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkeywords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
19-
"\u001b[0;32m/Users/jaska/github/data-analysis-env/lib/python3.5/site-packages/pyexcel-0.5.3-py3.5.egg/pyexcel/internal/core.py\u001b[0m in \u001b[0;36msave_sheet\u001b[0;34m(sheet, **keywords)\u001b[0m\n\u001b[1;32m 41\u001b[0m \"\"\"\n\u001b[1;32m 42\u001b[0m \u001b[0ma_source\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSOURCE\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_writable_source\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkeywords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 43\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_save_any\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma_source\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msheet\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 44\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
20-
"\u001b[0;32m/Users/jaska/github/data-analysis-env/lib/python3.5/site-packages/pyexcel-0.5.3-py3.5.egg/pyexcel/internal/core.py\u001b[0m in \u001b[0;36m_save_any\u001b[0;34m(a_source, instance)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_save_any\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma_source\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minstance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m \u001b[0ma_source\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 56\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[0mcontent_stream\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma_source\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_content\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
21-
"\u001b[0;32m/Users/jaska/github/data-analysis-env/lib/python3.5/site-packages/pyexcel-0.5.3-py3.5.egg/pyexcel/plugins/sources/file_output.py\u001b[0m in \u001b[0;36mwrite_data\u001b[0;34m(self, sheet)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrite_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msheet\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m self._renderer.render_sheet_to_file(self._file_name,\n\u001b[0;32m---> 29\u001b[0;31m sheet, **self._keywords)\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
22-
"\u001b[0;32m/Users/jaska/github/data-analysis-env/lib/python3.5/site-packages/pyexcel-0.5.3-py3.5.egg/pyexcel/renderer.py\u001b[0m in \u001b[0;36mrender_sheet_to_file\u001b[0;34m(self, file_name, sheet, write_title, **keywords)\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mWRITE_FLAG\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0moutfile\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_output_stream\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 85\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrender_sheet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msheet\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkeywords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 86\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 87\u001b[0m def render_sheet_to_stream(self, file_stream, sheet,\n",
23-
"\u001b[0;32m/Users/jaska/github/pyexcel-sortable/pyexcel_sortable/sortable.py\u001b[0m in \u001b[0;36mrender_sheet\u001b[0;34m(self, sheet, caption, display_length, **keywords)\u001b[0m\n\u001b[1;32m 23\u001b[0m html = render_template(\n\u001b[1;32m 24\u001b[0m \u001b[0msheet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolnames\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msheet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m caption=caption, display_length=display_length)\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0mjs_freezed_html\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfreeze_js\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
24-
"\u001b[0;32m/Users/jaska/github/data-analysis-env/lib/python3.5/site-packages/csvtotable/convert.py\u001b[0m in \u001b[0;36mrender_template\u001b[0;34m(table_headers, table_items, **options)\u001b[0m\n\u001b[1;32m 131\u001b[0m \u001b[0mscroll_y\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 132\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 133\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mvirtual_scroll_limit\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtable_items\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mvirtual_scroll_limit\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 134\u001b[0m \u001b[0mvirtual_scroll\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[0mdisplay_length\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
25-
"\u001b[0;31mTypeError\u001b[0m: unorderable types: int() > NoneType()"
9+
"name": "stderr",
10+
"output_type": "stream",
11+
"text": [
12+
"WARNING:csvtotable:\n",
13+
"Virtual scroll is enabled since number of rows exceeds None. You can set custom row limit by setting flag -vs, --virtual-scroll. Virtual scroll can be disabled by setting the value to -1 and set it to 0 to always enable.\n"
2614
]
15+
},
16+
{
17+
"data": {
18+
"text/html": [
19+
"\n",
20+
" <iframe\n",
21+
" width=\"600\"\n",
22+
" height=\"600\"\n",
23+
" src=\"me.sortable.html\"\n",
24+
" frameborder=\"0\"\n",
25+
" allowfullscreen\n",
26+
" ></iframe>\n",
27+
" "
28+
],
29+
"text/plain": [
30+
"<IPython.lib.display.IFrame at 0x110da8f90>"
31+
]
32+
},
33+
"execution_count": 2,
34+
"metadata": {},
35+
"output_type": "execute_result"
2736
}
2837
],
2938
"source": [
3039
"import pyexcel as p\n",
3140
"sheet = p.get_sheet(file_name='goog.ods')\n",
3241
"sheet.save_as('me.sortable.html', display_length=10)\n",
3342
"from IPython.display import IFrame\n",
34-
"IFrame(\"me.sortable.html\", width=600, height=500)"
43+
"IFrame(\"me.sortable.html\", width=600, height=600)"
3544
]
3645
},
3746
{
@@ -46,21 +55,21 @@
4655
],
4756
"metadata": {
4857
"kernelspec": {
49-
"display_name": "Python 3",
58+
"display_name": "Python 2",
5059
"language": "python",
51-
"name": "python3"
60+
"name": "python2"
5261
},
5362
"language_info": {
5463
"codemirror_mode": {
5564
"name": "ipython",
56-
"version": 3
65+
"version": 2
5766
},
5867
"file_extension": ".py",
5968
"mimetype": "text/x-python",
6069
"name": "python",
6170
"nbconvert_exporter": "python",
62-
"pygments_lexer": "ipython3",
63-
"version": "3.5.2"
71+
"pygments_lexer": "ipython2",
72+
"version": "2.7.10"
6473
}
6574
},
6675
"nbformat": 4,

Diff for: pyexcel-sortable.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ version: "0.0.1"
55
current_version: "0.0.1"
66
release: "0.0.1"
77
dependencies:
8-
- csvtotable >= 1.1.1
8+
- csvtotable >= 2.0
99
description: "Transform your csv file or a sheet of your xls, xlsx and ods into a sortable HTML file using csvtotable"

Diff for: pyexcel_sortable/sortable.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ def render_sheet(self, sheet, caption="", display_length=None,
2222

2323
html = render_template(
2424
sheet.colnames, sheet.array[1:],
25-
caption=caption, display_length=display_length)
25+
caption=caption, pagination=True, export=False,
26+
display_length=display_length)
2627

2728
js_freezed_html = freeze_js(html)
2829
if PY2:

Diff for: requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
csvtotable >= 1.1.1
1+
csvtotable >= 2.0

0 commit comments

Comments
 (0)