Metadata-Version: 2.1
Name: ppf-jabref
Version: 0.1.0
Summary: Python tools to work with JabRef libraries
Home-page: https://github.com/adrianschlatter/ppf.jabref/tree/master
Author: Adrian Schlatter
License: MIT
Keywords: jabref,python,sqlalchemy
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Utilities
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: sqlalchemy
Provides-Extra: dev
Requires-Dist: check-manifest ; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: twine ; extra == 'test'
Requires-Dist: check-manifest ; extra == 'test'
Requires-Dist: flake8 ; extra == 'test'
Requires-Dist: coverage ; extra == 'test'

# ppf.jabref

ppf.jabref provides a [python](https://www.python.org) interface to
[JabRef](https://www.jabref.org) SQL databases. It maps database relations
to python classes using [SQLAlchemy](https://www.sqlalchemy.org).
Also, ppf.jabref provides tools to parse the data stored inside the 
database tables.


## Using ppf.jabref

ppf.jabref relies on SQLAlchemy for database access. All that ppf.jabref
adds to this is a data model which makes sqlalchemy understand how a 
JabRef database is structured (by providing classes Entry and Field).

A simple example that queries all entries and prints a selection of
the fields looks like this:

```python
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    from ppf.jabref import Entry, File

    engine = create_engine('<your connection string here>', echo=False)
    Session = sessionmaker(bind=engine)
    session = Session()

    q = session.query(Entry)
    for entry in q:
        print(entry.fields['author'], '\t',
            entry.fields['title'], '\t',
            entry.fields['year'], '\t', end='')

        files = File.from_string(entry.fields['file'])
        for i in range(len(files)):
            f = files[i]
            print(f.path, '\t', end='')
```

The first 6 lines are setup code to import required packages and to set up
the database connection. The query then uses ppf.jabref's Entry class to
obtain all Entries (=references) in the JabRef database. The for-loop
shows how to access fields and uses the File class to find out where the
documents linked to this entry are stored.


