Skip to main content

memberjojo - tools for working with members.

Project description

memberjojo

memberjojo is a Python library for using Membermojo data from CSV imports.
It provides member database, and completed payments querying.
This is done in a local SQLite database which is optionally encrypted if sqlcipher3 is installed, and does not alter anything on Membermojo.
It provides tools to load, and query membership and transaction data efficiently without having to use SQLite directly.
When importing CSV files existing entries are dropped before import, so you can just import the latest download and the local database is updated with a summary diff printed out.

Using the download_csv function the csv can be downloaded directly into the db, which can also be in memory if :memory: is used as the db path.


Installation

Installing via pip on macos with optional sqlcipher installed via homebrew:
(The sqlcipher bindings are compiled by pip so the C_INCLUDE_PATH and LIBRARY_PATH are needed for the libsqlcipher files to be found)

brew install sqlcipher
export C_INCLUDE_PATH="/opt/homebrew/opt/sqlcipher/include"
export LIBRARY_PATH="/opt/homebrew/opt/sqlcipher/lib"
pip install memberjojo[sqlciper]

Installing via pip on ubuntu:

sudo apt-get --no-install-recommends --no-install-suggests install libsqlcipher-dev
pip install memberjojo[sqlcipher]

Installing via pip without sqlcipher:

pip install memberjojo

Or clone the repo and install locally with flit:

git clone https://github.com/a16bitsysop/memberjojo.git
cd memberjojo
flit install --symlink

Usage

Example loading members and using Member objects:

from pathlib import Path
from membermojo import Member

# database is created if it does not exist
member_database_path = Path(Path(__file__).parent, "database", "my-members.db")
member_csv_path = Path("download", "members.csv")

members = Member(member_database_path, "My DB Password")
members.import_csv(member_csv_path)

for member in members:
    print(member.first_name, member.last_name, member.member_number)

# Get full name for a given member number
found_name = members.get_name(1)
if found_name:
    print(f"Member with id of 1 is {found_name}")
else:
    print("Member 1 does not exist")

Documentation

Full documentation is available at
👉 https://a16bitsysop.github.io/memberjojo/


Running Tests

Run tests:

pytest

Contributing

Contributions are welcome! Please:

  1. Fork the repo
  2. Create your feature branch git checkout -b my-feature
  3. Edit the source code to add and test your changes
  4. Commit your changes git commit -m 'Add some feature'
  5. Push to your branch git push origin my-feature
  6. Open a Pull Request

Please follow the existing code style and write tests for new features.


License

This project is licensed under the MIT MIT License.


Contact

Created and maintained by Duncan Bellamy. Feel free to open issues or reach out on GitHub.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memberjojo-3.2.1.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memberjojo-3.2.1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file memberjojo-3.2.1.tar.gz.

File metadata

  • Download URL: memberjojo-3.2.1.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for memberjojo-3.2.1.tar.gz
Algorithm Hash digest
SHA256 63696322fd18d4afc619c7d1e0d2995dd2b02d14eb55cf420f22b2c5cd50359f
MD5 55e56ccac140baa01f1666398b041ca7
BLAKE2b-256 f6d2fe716f9b79ddfb1f2dfeae2f1c66fc13cccc1fc54bbb063a0d2f04055558

See more details on using hashes here.

Provenance

The following attestation bundles were made for memberjojo-3.2.1.tar.gz:

Publisher: publish.yaml on a16bitsysop/memberjojo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file memberjojo-3.2.1-py3-none-any.whl.

File metadata

  • Download URL: memberjojo-3.2.1-py3-none-any.whl
  • Upload date:
  • Size: 17.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for memberjojo-3.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 16555deabf7cb27603022036af84f31fd0e1325aec182b75f23b959b6b3bb332
MD5 70b605d0b057db71fd2aaceceff24e5d
BLAKE2b-256 0aa93e567891d7ea47f0d53e5aee9c104a2663e2cc53bfea9334cd7665880a6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for memberjojo-3.2.1-py3-none-any.whl:

Publisher: publish.yaml on a16bitsysop/memberjojo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page