Skip to main content

Python bindings for libmongocrypt

Project description

Info:

Python bindings for libmongocrypt. See GitHub for the latest source.

Author:

Shane Harvey

About

Python wrapper library for libmongocrypt that supports client side encryption in drivers. PyMongoCrypt uses cffi and cryptography.

PyMongoCrypt supports Python 2.7, 3.4+, and PyPy3.5+.

Support / Feedback

For issues with, questions about, or feedback for PyMongoCrypt, please look into our support channels. Please do not email any of the PyMongoCrypt developers directly with issues or questions - you’re more likely to get an answer on the mongodb-user list on Google Groups.

Bugs / Feature Requests

Think you’ve found a bug? Want to see a new feature in PyMongoCrypt? Please open a case in our issue management tool, JIRA:

Bug reports in JIRA for all driver projects (i.e. PYTHON, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are public.

How To Ask For Help

Please include all of the following information when opening an issue:

  • Detailed steps to reproduce the problem, including full traceback, if possible.

  • The exact python version used, with patch level:

    $ python -c "import sys; print(sys.version)"
  • The exact version of PyMongoCrypt used:

    $ python -c "import pymongocrypt; print(pymongocrypt.__version__)"
  • The exact version of libbmongocrypt used by PyMongoCrypt:

    $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
  • The exact version of PyMongo used (if applicable), with patch level:

    $ python -c "import pymongo; print(pymongo.version); print(pymongo.has_c())"
  • The operating system and version (e.g. Windows 7, OSX 10.8, …)

  • Web framework or asynchronous network library used, if any, with version (e.g. Django 1.7, mod_wsgi 4.3.0, gevent 1.0.1, Tornado 4.0.2, …)

Security Vulnerabilities

If you’ve identified a security vulnerability in a driver or any other MongoDB project, please report it according to the instructions here.

Installation

PyMongoCrypt can be installed with pip:

$ python -m pip install pymongocrypt
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

PyMongoCrypt ships wheels for macOS, Windows, and manylinux2010 that include an embedded libmongocrypt build.

Installing from wheels on Linux requires pip 19 or later because it adds support for manylinux2010 wheels. Older versions of pip will attempt installation using the pymongocrypt-X.Y.tar.gz source distribution which requires the extra step of downloading and installing libmongocrypt as described below. Users can upgrade to pip 19 by running:

$ python -m pip install --upgrade 'pip>=19'

Installing from source

Installing from source (or the pymongocrypt-X.Y.tar.gz source distribution, or pip < 19 on Linux) requires an extra step of installing libmongocrypt. First, install PyMongoCrypt from source:

$ git clone git@github.com:mongodb/libmongocrypt.git
$ python -m pip install ./libmongocrypt/bindings/python

Next, install libmongocrypt.

libmongocrypt is continuously built and published on evergreen. The latest tarball containing libmongocrypt built on all supported variants is published here. Download and extract libmongocrypt-all.tar.gz and set PYMONGOCRYPT_LIB to the path to your operating system’s libmongocrypt.so file. For example:

$ curl -O https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz
$ mkdir libmongocrypt-all && tar xzf libmongocrypt-all.tar.gz -C libmongocrypt-all
$ ls libmongocrypt-all
amazon2             rhel-62-64-bit      rhel72-zseries-test ubuntu1604-arm64
debian10            rhel-67-s390x       suse12-64           ubuntu1804-64
debian92            rhel-70-64-bit      suse12-s390x        ubuntu1804-arm64
linux-64-amazon-ami rhel-71-ppc64el     suse15-64           windows-test
macos               rhel-80-64-bit      ubuntu1604

macOS:

$ # Set PYMONGOCRYPT_LIB for macOS:
$ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/macos/nocrypto/lib/libmongocrypt.dylib
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Windows:

$ # Set PYMONGOCRYPT_LIB for Windows:
$ chmod +x $(pwd)/libmongocrypt-all/windows-test/nocrypto/bin/mongocrypt.dll
$ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/windows-test/nocrypto/bin/mongocrypt.dll
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Linux:

$ # Set PYMONGOCRYPT_LIB for RHEL 6.2 x86_64:
$ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/rhel-62-64-bit/nocrypto/lib64/libmongocrypt.so
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Dependencies

PyMongoCrypt supports CPython 2.7, 3.4+, PyPy, and PyPy3.5+.

PyMongoCrypt requires cffi and cryptography.

PyMongoCrypt also requires libmongocrypt to be installed on your system. If libmongocrypt is not installed you will see an error like this:

>>> import pymongocrypt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pymongocrypt/__init__.py", line 15, in <module>
    from pymongocrypt.binding import libmongocrypt_version, lib
  File "pymongocrypt/binding.py", line 803, in <module>
    lib = ffi.dlopen(os.environ.get('PYMONGOCRYPT_LIB', 'mongocrypt'))
  File "/.../lib/python3.7/site-packages/cffi/api.py", line 146, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "/.../lib/python3.7/site-packages/cffi/api.py", line 828, in _make_ffi_library
    backendlib = _load_backend_lib(backend, libname, flags)
  File "/.../lib/python3.7/site-packages/cffi/api.py", line 823, in _load_backend_lib
    raise OSError(msg)
OSError: ctypes.util.find_library() did not manage to locate a library called 'mongocrypt'

Use the PYMONGOCRYPT_LIB environment variable to load a locally installed libmongocrypt build without relying on platform specific library path environment variables, like LD_LIBRARY_PATH. For example:

$ export PYMONGOCRYPT_LIB='/path/to/libmongocrypt.so'
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Testing

The easiest way to run the tests is to run python setup.py test in the root of the distribution.

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

pymongocrypt-1.3.1.tar.gz (40.2 kB view details)

Uploaded Source

Built Distributions

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

pymongocrypt-1.3.1-py2.py3-none-win_amd64.whl (216.6 kB view details)

Uploaded Python 2Python 3Windows x86-64

pymongocrypt-1.3.1-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (538.5 kB view details)

Uploaded Python 2Python 3manylinux: glibc 2.12+ x86-64

pymongocrypt-1.3.1-py2.py3-none-manylinux2010_x86_64.whl (538.1 kB view details)

Uploaded Python 2Python 3manylinux: glibc 2.12+ x86-64

pymongocrypt-1.3.1-py2.py3-none-macosx_11_0_universal2.whl (417.4 kB view details)

Uploaded Python 2Python 3macOS 11.0+ universal2 (ARM64, x86-64)

pymongocrypt-1.3.1-py2.py3-none-macosx_10_14_x86_64.whl (217.0 kB view details)

Uploaded Python 2Python 3macOS 10.14+ x86-64

File details

Details for the file pymongocrypt-1.3.1.tar.gz.

File metadata

  • Download URL: pymongocrypt-1.3.1.tar.gz
  • Upload date:
  • Size: 40.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for pymongocrypt-1.3.1.tar.gz
Algorithm Hash digest
SHA256 10ef83bd0013e4bd03040c2e5ecbbcbd9766c3a9abbeac80b9810b3dc1feb592
MD5 747329e21a9070986ca9f17c1797bd21
BLAKE2b-256 9871eb74b74461b3726d264e224b125a2ad5fd2699b9b9e6bbbbd7b5054ec1a4

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.1-py2.py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.3.1-py2.py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1702ea7fb1dbe57f45fe338abe3abe34701879140ee56e25aeaaf8edb6d8f7d1
MD5 e3979930c99a9992f7d52bc3458ab204
BLAKE2b-256 fe6c2c24a424f63c405553cc1f2efeb195891001b8a186886844c8aa7d227d8e

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.1-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.3.1-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 062dfb8011667a57f9d79c3c537ce628ad221eeac75d9fa128a30b603780a898
MD5 2b1ef1c3885a17966b912646a5a4f3fb
BLAKE2b-256 d3bab7a1560548d9d9d2c9a75ed2a7f0184df4db21e62b37fcb3f711dad8d0b3

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.1-py2.py3-none-manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.3.1-py2.py3-none-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1a0b7e2c270c76cb805d90f262882431780f319aae686c42b2ab83010ff7fc4f
MD5 4bdaca41f2a1882cf5d5746c58bd8bed
BLAKE2b-256 6e119e8ed2914f07affa03121780f9251f28037fe109ad3a0c7c4d855ed29332

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.1-py2.py3-none-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.3.1-py2.py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 a65e158c233eaa3d9876d02fa4470376b6334b746e20a7239c3641d19f54364f
MD5 036401f4493753de1ed5ecb8c29d6680
BLAKE2b-256 601484a6d603e018a879b53926331b16aff3993ea25b5e3905041ad52951015b

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.1-py2.py3-none-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.3.1-py2.py3-none-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f6b2d5cec506cc1ab0d0df8cbcf7381cb4c2b9f3136b2efc1e6b968a1ecc9e89
MD5 2b36f8c388f72b6a31caec941efccf81
BLAKE2b-256 ede868c71735e50e24f1424e9c3efc5ce5cb9a7d74527ed6ad686058e968e5f8

See more details on using hashes here.

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