(F)ile T(ables)
Project description
Fables - (F)ile T(ables)
For users:
Parse the tabular data in the input file:
import fables
for parse_result in fables.parse('myfile.zip'):
for table in parse_result.tables:
print(table.name)
print(table.df.head())
for error in parse_result.errors:
print(error.message)
Inspect the contents of the input file:
node = fables.detect('myfile.zip')
print(node.name)
print(node.mimetype)
for child in node.children:
print(child.name)
print(child.mimetype)
Note if you've already discovered the input tree from detect()
,
you can pass it into parse()
:
parse_results = parse(tree=node)
Handling encrypted zip
, xlsx
, xlsb
, and xls
files:
node = fables.detect('encrypted.xlsx')
assert node.encrypted
node.add_password('encrypted.xlsx', 'fables')
assert not node.encrypted
You can also supply a passwords dictionary (filename -> password) into detect and parse:
node = fables.detect(
'encrypted.zip',
passwords={
'encrypted.zip': 'fables',
# an encrypted file inside the zip
'encrypted.xlsx': 'foobles',
}
)
# and/or parse
parse_results = fables.parse(
'sub_dir',
passwords={
'sub_dir/encrypted.xlsx': 'fables',
'sub_dir/encrypted.xls': 'foobles',
},
)
Seeing is believing:
Clone the repository & run the example file by executing the example.py script with the following command:
python3 example.py
Installation
The python library python-magic
requires additional system dependencies. There are installation instructions
there, but here are recommended routes to try:
-
on OSX:
brew install libmagic
. -
on Windows: this
pip install python-magic-bin
will install a built version using ctypes to access the libmagic file type identification library.
Then pip install -r requirements.txt
should do the trick.
For contributors:
Tests
- all tests:
pytest
- coverage:
pytest --cov=fables tests
- coverage:
- integration:
pytest tests/integration
- coverage:
pytest --cov=fables tests/integration
- coverage:
- unit:
pytest tests/unit
- coverage:
pytest --cov=fables tests/unit
- coverage:
Note all the coverage statistics are for statements.
Type checking with mypy
mypy fables
Linting
- We enforce flake8:
flake8 .
Run test, type checking, and linter all at once
nox
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fables-1.2.2.tar.gz
.
File metadata
- Download URL: fables-1.2.2.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e106ab76b23d56eb7d216bcfadb77384342c82145ba51d588973b20e6c9d3c7b |
|
MD5 | cc068eeb16e42a258eb7d227c531aaf7 |
|
BLAKE2b-256 | 4ec6d8df2c85dd4b6012afa674a662273fb0ee14e43a694734c74dac182d2924 |
File details
Details for the file fables-1.2.2-py3-none-any.whl
.
File metadata
- Download URL: fables-1.2.2-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 611d70a8b4ded0c5e4b1ecc02cb0a753253dda74839df7dc342fd3da9666d7fd |
|
MD5 | 3533911158d31d8075ec344ffe1f6fad |
|
BLAKE2b-256 | cdef4b74c0e7c558e0569fce6ed41f4792dc2309a716e681f392e49eaea55be2 |