/python-fmrest

Python wrapper around the FileMaker Data API

Primary LanguagePythonMIT LicenseMIT

python-fmrest

python-fmrest is a wrapper around the FileMaker Data API.

No need to worry about manually requesting access tokens, setting the right http headers, parsing responses, ...

Quick example:

>>> fms = fmrest.Server('https://your-server.com',
                        user='admin',
                        password='admin',
                        database='Contacts',
                        layout='Contacts')
>>> fms.login()
>>> record = fms.get_record(1)
>>> record.name
John Doe

Supported Features

All API paths can be served:

  • auth
  • record
  • find
  • global
  • script

Feel free to contribute!

If you would like to contribute, you can help with the code, try it out and report 🐞🐞, propose new features, write tests, add examples and documentation.

There's always room for improvement!


Questions/problems? Open a new issue. You can also contact me directly at dh@davidhamann.de.

Install

You need Python 3.6 and FileMaker Server/Cloud 17.

You can install the library like this (preferably in a virtualenv):

pip install python-fmrest

Or the latest master:

pip install https://github.com/davidhamann/python-fmrest/archive/master.zip

Usage Examples

Examples can be found in the examples directory. Can't figure something out or feel an example is missing? Please file an issue.

Local development / running tests

Make sure to have requirements-dev.txt installed:

pip install -r requirements-dev.txt

Running pytest will run all tests. To run specific tests, specify the path:

pytest tests/unit

For running tests/integration you will need to have a real FileMaker Server and a test database.


For static type checking, please use mypy:

mypy fmrest

To have all tests plus static type checks run every time before a commit, please install the git hook:

cd hooks
chmod +x install.sh pre-commit.sh run-tests.sh
./install.sh

TO DO

Some bits and pieces are not implemented yet.

Examples of what I can think of:

  • OAuth support
  • Handling of reserved field names (currently, record_id, modification_id, is_dirty clash with used properties and you will not be able to read your own fields with the same name)
  • Needs more test coverage, e.g. for get_records(), find(), edit_record()
  • Some more usage examples on how to create, edit, delete, set globals, etc. Tell me where you have issues by opening an issue.
  • cli support would be great at some point in the future :-)