Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python.announce > #3283
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Shawn Brown <03sjbrown@gmail.com> |
| Newsgroups | comp.lang.python.announce |
| Subject | [ANN] get-reader 1.0.0 stable release |
| Date | Sat, 28 Dec 2019 20:57:12 -0500 |
| Lines | 84 |
| Approved | python-announce-list@python.org |
| Message-ID | <157758799587.8676.python-announce-list@python.org> (permalink) |
| Reply-To | python-list@python.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| X-Trace | news.uni-berlin.de rZJMbEEWbBnaIjnFe7ZZxA1sKTLRETnXqpMOqRK7qQ6A== |
| X-Spam-Status | OK 0.000 |
| X-Spam-Evidence | '*H*': 1.00; '*S*': 0.00; 'url:github': 0.03; '>>>': 0.03; 'objects': 0.05; 'pip': 0.05; 'url-ip:151.101.0.223/32': 0.05; 'url-ip:151.101.128.223/32': 0.05; 'url- ip:151.101.192.223/32': 0.05; 'url-ip:151.101.64.223/32': 0.05; 'tests': 0.07; 'url:project': 0.07; 'url:pypi': 0.07; '>>>': 0.09; 'connection.': 0.09; 'optional': 0.09; 'pandas': 0.09; 'skip:` 10': 0.09; 'subject:ANN': 0.09; 'url- ip:192.30/16': 0.09; 'install': 0.10; 'python': 0.12; 'context': 0.14; '2020,': 0.16; 'apache': 0.16; 'closed.': 0.16; 'deleted,': 0.16; 'dependencies': 0.16; 'dependency': 0.16; 'freely': 0.16; 'iterator': 0.16; 'package:': 0.16; 'projects:': 0.16; 'stable': 0.16; 'statement:': 0.16; 'subject:release': 0.16; 'versions.': 0.16; 'to:addr:python-announce-list': 0.19; 'subject:] ': 0.21; 'file.': 0.21; 'url-ip:151.101.0/24': 0.22; 'url- ip:151.101.128/24': 0.22; 'url-ip:151.101.192/24': 0.22; 'url- ip:151.101.64/24': 0.22; 'runs': 0.23; 'versions': 0.26; 'explicitly': 0.27; 'row': 0.27; 'example': 0.27; 'import': 0.27; 'message-id:@mail.gmail.com': 0.29; 'url-ip:151.101/16': 0.29; 'url-ip:151/8': 0.29; 'returns': 0.29; "doesn't": 0.29; '...': 0.30; 'using': 0.30; 'module': 0.30; 'received:google.com': 0.31; 'code': 0.31; 'files': 0.31; 'from:addr:gmail.com': 0.32; 'version': 0.33; 'interface': 0.33; 'those': 0.34; 'continue': 0.35; 'ecosystem': 0.35; 'finish': 0.35; 'reads': 0.35; 'tested': 0.35; 'use': 0.35; 'subject:[': 0.35; 'include': 0.37; 'handling': 0.37; 'older': 0.37; 'run': 0.39; 'single': 0.39; 'skip:u 10': 0.40; 'returned': 0.60; 'through': 0.61; 'skip:g 20': 0.61; 'directly': 0.61; 'reading': 0.62; 'long': 0.62; 'your': 0.63; 'sql': 0.64; 'under': 0.65; 'reader': 0.65; 'subject:get': 0.65; 'january': 0.66; 'automated': 0.68; 'existing': 0.71; 'ability': 0.76; 'easy': 0.80; 'etc.),': 0.84; 'manager:': 0.84; 'seamless': 0.84; 'database': 0.86; 'incorporate': 0.91 |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=7vn7h++db1BpbDcIV4KxdKWM8hq9wOK6Wrl4ELte/Yo=; b=gy5jAYrnnlAfb290QS+eOFpSsHwpLFvlCKAjsk/277BiavXNyqzNtHoeRudV4+feKU blmBrBYeE70AUQRG3TeB6wrD/ftaP4O2xlsii6Ie5fvPwODNKOpkqfgWduOS8fKqesrj /mb7sQrLA0EBqnzl46o7Px/RKn1spCdUmSFTZulOBRY9D6VZkblOD/oaBMsVTPjBO5l3 RNuqFoSlBGnirk96DSf0Wo24EDuq/oI51yNdajiPx/dQPahrRUvaSgI5xac2WCbmj8Lp CUT6enPJ7fjjq3rY8Gn05AKBOGbWWDScrzAapmoz4is9hrDmDdoSMqFazAeU1R6TKmAW 5Pjw== |
| X-Google-DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=7vn7h++db1BpbDcIV4KxdKWM8hq9wOK6Wrl4ELte/Yo=; b=CJ6kEt1zOGoaSrYS0shLImUBp/08nRpRCMdmHaOXKcMyBViczsTpDAl+o7yWCuDbsd 9hcORtRmuMMh518Bo1l9Oi7FbHTt2TyR7CsPRvDh5pCSgCEGPjHuWJNSOl8PRUHJR1e3 dnc62Wn2yUBeu2HBs68PQbuo4uOrqhZehWVg8L3qLRDyEC5BrOEkvYocm7NOL7TyjN8h k187dJnHylAhUTxNBfTu1jBx3JTMAnT6NVAs8lfdiaFDdHwOx0oFPxyc/bjtxf6ZXszs 2bXHBSQzd5Wuyiy4pROBJRtWLec4oY9oyUEaTWE6evOZBJ+Eg//JHhb5JEcgpKlD+ZE+ j77g== |
| X-Gm-Message-State | APjAAAX2uhUwYsTFg1wAk7VgSQQbVS2JoEA/0NM4fgvpizp2eq4lCBBa Xa8mVMMwSOIP+oeRPtHkZZ9hR7dqMGttLk+FCNWUbRQN |
| X-Google-Smtp-Source | APXvYqwe0F6o7ZzjGuwkmYiroQgmq/lO1PZEaij5LWg+QLlD1RjzvM8ZzHNe7EL5n5SrePagH3TdqsMQpBL9u3/tl3o= |
| X-Received | by 2002:a17:907:212f:: with SMTP id qo15mr37624021ejb.245.1577584843513; Sat, 28 Dec 2019 18:00:43 -0800 (PST) |
| X-MailFrom | 03sjbrown@gmail.com |
| X-Mailman-Rule-Hits | emergency |
| X-Mailman-Rule-Misses | dmarc-mitigation; no-senders; approved |
| Message-ID-Hash | IRU7PKB6XEUXLLP3PG2A4PUFAWR6YHKD |
| X-Message-ID-Hash | IRU7PKB6XEUXLLP3PG2A4PUFAWR6YHKD |
| X-Mailman-Approved-At | Sat, 28 Dec 2019 21:53:09 -0500 |
| X-Content-Filtered-By | Mailman/MimeDel 3.3.1 |
| X-Mailman-Version | 3.3.1 |
| Precedence | list |
| List-Id | Announcement-only list for the Python programming language <python-announce-list.python.org> |
| Archived-At | <https://mail.python.org/archives/list/python-announce-list@python.org/message/IRU7PKB6XEUXLLP3PG2A4PUFAWR6YHKD/> |
| List-Archive | <https://mail.python.org/archives/list/python-announce-list@python.org/> |
| List-Help | <mailto:python-announce-list-request@python.org?subject=help> |
| List-Post | <mailto:python-announce-list@python.org> |
| List-Subscribe | <mailto:python-announce-list-join@python.org> |
| List-Unsubscribe | <mailto:python-announce-list-leave@python.org> |
| Xref | csiph.com comp.lang.python.announce:3283 |
Show key headers only | View raw
Happy Holidays!
The first stable release of get-reader, version 1.0.0 is
now available.
* https://pypi.org/project/get-reader/
* https://github.com/shawnbrown/get_reader
This module provides a `get_reader()` function that returns
reader objects similar to those returned by `csv.reader()`.
This package:
* reduces common boilerplate code for handling files and
reading records
* reads data from CSV, pandas, SQL connections, MS Excel,
DBF, and squint
* provides a single interface across Python versions (including
seamless Unicode-aware CSV support for Python 2)
* is easy to incorporate into your own projects:
* has no hard dependencies
* runs on Python 2.6, 2.7, 3.2 through 3.8, PyPy, PyPy3,
and Jython
* is freely available under the Apache License, version 2
* can be easily vendored directly into your codebase if you
don't want to include it as a dependency
Some examples:
>>> from get_reader import get_reader
>>>
>>> # CSV file.
>>> reader = get_reader('myfile.csv')
>>>
>>> # Database connection.
>>> connection = ...
>>> reader = get_reader(connection, 'SELECT col1, col2 FROM mytable;')
>>>
>>> # Pandas DataFrame.
>>> df = pd.DataFrame([...])
>>> reader = get_reader(df)
>>>
>>> # Excel file.
>>> reader = get_reader('myfile.xlsx', worksheet='Sheet2')
The internal file object is automatically closed when the
iterator is exhausted, when the object is deleted, or when
it is explicitly closed.
An example using a context manager:
>>> with get_reader('myfile.csv') as reader:
>>> for row in reader:
>>> print(', '.join(row))
The internal file object is also closed when exiting a with
block even if the for-loop doesn't finish exhausting the
reader.
Install:
The get-reader module has no hard dependencies; is tested on
Python 2.6, 2.7, 3.2 through 3.8, PyPy, PyPy3, and Jython;
and is freely available under the Apache License, version 2.
You can install get_reader using pip:
pip install get-reader
To install optional support for MS Excel and DBF files (dBase,
Foxpro, etc.), use the following:
pip install get-reader[excel,dbf]
Python 2 Support Statement:
While official support for Python 2 ends on January 1, 2020,
this project will continue to support older versions as long
as the existing ecosystem provides the ability to run automated
tests on those older versions.
Back to comp.lang.python.announce | Previous | Next | Find similar | Unroll thread
[ANN] get-reader 1.0.0 stable release Shawn Brown <03sjbrown@gmail.com> - 2019-12-28 20:57 -0500
csiph-web