Firestore
- Details:
Firestore is an offline available ORM/ODM atop Google Firestore.
- Repository:
- Author:
Workenvoy Inc (http://github.com/workenvoy)
- Maintainer:
Raymond Ortserga (http://github.com/rayattack)
Details
Firestore is a Python Object-Document/Object-Collections Mapper for working with Google Firestore. The Flexible, Extremely Scalable, realtime database by Google. You can find some documentation at https://firestore.readthedocs.io - and there is also a quickstart tutorial.
Offline Support
Firestore currently uses an in-memory data store to simulate access to Google Firestore when working offline. There is an optimistic persistence to disk and the contents can be seen in the /projectdir/localfire directory. Deleting this directly means you lose all the data you might have saved prior to removing the directory from disk. Make sure to make a copy of this directory if you want to keep a copy of your data and you are encouraged to contribute i.e. open an issue, submit a pull request if you want to offer a helping hand.
Installation
We recommend the use of virtual environments e.g. virtualenv to control your package management. Installation of Firestore is easily done pip install -U firestore and requires pip. to be installed. Otherwise, you can download the source code from GitHub and run python setup.py install.
Dependencies
We tried to keep the dependencies to a minimum, and all dependencies are available using pip. The only dependencies you require to use Firestore are highlighted below:
google-cloud-firestore
If you are working with dates extensive we suggest you use a date parser:
dateutil>=2.1.0
Examples
Sample Firestore Code Snippet:
from firestore import Collection, Document, Reference as Ref
from firestore import Array
from firestore import Integer
from firestore import String
from firestore.lazy import Datatype
class SomeRootCollection(Collection):
"""
Root collections inherit directly from collection, whilst
sub collections will inherit from a document.
To understand this always remember in Firestore a collection can never be
a child of another collection, and a sub-collection will always live
under a document.
To have mongo style sub-collections use the Map datatype
"""
pass
class User(SomeRootCollection):
"""
This is the User document and will be saved under the
collection `SomeRootCollection`.
Documents live under collections or sub-collections directly
"""
__private__ = ["password"]
first_name = String(required=True)
middle_name = Datatype(datatype="String") # You can use Datatype in place of more specific types
last_name = Datatype("StrInG") # Case insensitive
age = Integer(minimum=0)
photos = Reference('Photo')
password = String(minimum=6) # private fields can not be viewed with get_XXX methods
class Photo(User):
"""
This creates a photos subcollection under the User document for documents
under the root collection
"""
id = String(required=True, id=True) # omit to have id auto-generated by cloud firestore
photo_urls = Array()
# Create a text-based post
>>> user = User()
>>> user.first_name = "Alan"
>>> user.last_name = "Turing"
>>> user.photos.append("https://cloudinary.com/img.jpg")
>>>
>>> # this will persist user and photo at
>>> # once unlike user.save that will save only user
>>> user.persist()
# Sometimes you want one thing to succeed before doing another
>>> user.photos.safe_save() # only saves if parent was prior saved else fails
>>> user.photos.save() # saves regardless
# You can also save a photo by itself and query easily
>>> photo = Photo()
>>> photo.parent = user
>>> photo.save() # save only photo
>>> photo.parent.save()
Contributing
We love contributors: Contribution guidelines
Metadata
Release files for firestore 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| firestore-0.0.8.tar.gz | 25.5 kB | Without provenance | Details for firestore-0.0.8.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| firestore-0.0.8-py3.7.egg | Legacy Egg format | - | - | Details for firestore-0.0.8-py3.7.egg |
| firestore-0.0.8-py3-none-any.whl | Python 3 | none | any | Details for firestore-0.0.8-py3-none-any.whl |
Total release size: 158.6 kB
Release files / firestore-0.0.8.tar.gz
| Download URL | firestore-0.0.8.tar.gz |
|---|---|
| Size | 25.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00003c07da7ac03b03126bb7bbcb62402f2bdaa6880241824eb8e0f05a497548
|
|
BLAKE2b-256 checksum How to use checksums |
bc092b228b59dc3162b372fe5b1a86de903cac72048bf6b337e13ad830f089a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
|
Release files / firestore-0.0.8-py3.7.egg
| Download URL | firestore-0.0.8-py3.7.egg |
|---|---|
| Size | 93.1 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
78762d2807587213cf5fd4c6653d15ef5aeeb1d8768aaed5c067597ce2db8ba2
|
|
BLAKE2b-256 checksum How to use checksums |
25e49e7340df908cbee45868449cde207f7fd68899b4d45c65cd24f4a84b0347
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
|
Release files / firestore-0.0.8-py3-none-any.whl
| Download URL | firestore-0.0.8-py3-none-any.whl |
|---|---|
| Size | 40.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba1b8f5fe98c2cb15c4c220878e5abf780be73880e87b889d7d5cb8b60df50c3
|
|
BLAKE2b-256 checksum How to use checksums |
f61b9cf398d40e608c9c7884afb19da8a3af69f16db35e33f5ee15d223646e95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
|
Security for firestore 0.0.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.