Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.1.71 instead.
Reason given by maintainers: Replaced by new zef 0.2+ (different project)

A data-oriented toolkit for graph data

versioned graphs + streams + query using Python + GraphQL

Workflow status badge

Docs   |   Blog   |   Chat   |   ZefHub


gif showing Zef demo intro


Description

Zef is an open source, data-oriented toolkit for graph data. It combines the access speed and local development experience of an in-memory data structure with the power of a fully versioned, immutable database (and distributed persistence if needed with ZefHub). Furthermore, Zef includes a library of composable functional operators, effects handling, and native GraphQL support. You can pick and choose what you need for your project.

If any of these apply to you, Zef might help:

  • I need a graph database with fast query speeds and hassle-free infra
  • I need a graph data model that's more powerful than NetworkX but easier than Neo4j
  • I need to "time travel" and access past states easily
  • I like Datomic but prefer something open source that feels like working with local data structures
  • I would prefer querying and traversing directly in Python, rather than a query language (like Cypher or GSQL)
  • I need a GraphQL API that's easy to spin up and close to my data model


Features

  • a graph language you can use directly in Python code
  • fully versioned graphs
  • in-memory access speeds
  • free and real-time data persistence (via ZefHub)
  • work with graphs like local data structures
  • no separate query language
  • no ORM
  • GraphQL API with low impedance mismatch to data model
  • data streams and subscriptions


Status

Zef is currently in Public Alpha.

  • Private Alpha: Testing Zef internally and with a closed group of users.
  • Public Alpha: Anyone can use Zef but please be patient with very large graphs!
  • Public Beta: Stable enough for most non-enterprise use cases.
  • Public: Stable for all production use cases.


Installation

The platforms we currently support are 64-bit Linux and MacOS. The latest version can be installed via the PyPI repository using:

pip install zef

This will attempt to install a wheel if supported by your system and compile from source otherwise. See INSTALL for more details if compiling from source.

Check out our installation doc for more details about getting up and running once installed.



Using Zef

Here's some quick points to get going. Check out our Quick Start and docs for more details.

A quick note, in Zef, we overloaded the "|" pipe so users can chain together values, Zef operators (ZefOps), and functions in sequential, lazy, and executable pipelines where data flow is left to right.


💆 Get started 💆

from zef import *          # these imports unlock user friendly syntax and powerful Zef operators (ZefOps)
from zef.ops import *

g = Graph()                # create an empty graph

🌱 Add some data 🌱

p1 = ET.Person | g | run                  # add an entity to the graph

(p1, RT.FirstName, "Yolandi") | g | run   # add "fields" via relations triples: (source, relation, target)

🐾 Traverse the graph 🐾

p1 | Out[RT.FirstName]         # one hop: step onto the relation

p1 | out_rel[RT.FirstName]     # two hops: step onto the target

⏳ Time travel ⌛

p1 | time_travel[-2]                                           # move reference frame back two time slices

p1 | time_travel[Time('2021 December 4 15:31:00 (+0100)')]     # move to a specific date and time

👐 Share with other users (via ZefHub) 👐

g | sync[True] | run                            # save and sync all future changes on ZefHub

# ---------------- Python Session A (You) -----------------
g | uid | to_clipboard | run                    # copy uid onto local clipboard

# ---------------- Python Session B (Friend) -----------------
graph_uid: str = '...'                          # uid copied from Slack/WhatsApp/email/etc
g = Graph(graph_uid)
g | now | all[ET] | collect                     # see all entities in the latest time slice

🚣 Choose your own adventure 🚣


📌 A note on ZefHub 📌

Zef is designed so you can use it locally and drop it into any existing project. You have the option of syncing your graphs with ZefHub, a service that persists, syncs, and distributes graphs automatically (and the company behind Zef). ZefHub makes it possible to share graphs with other users and see changes live, by memory mapping across machines in real-time!

You can create a ZefHub account for free which gives you full access to storing and sharing graphs forever. For full transparency, our long-term hope is that many users will get value from Zef or Zef + ZefHub for free, while ZefHub power users will pay a fee for added features and services.



Roadmap

We want to make it incredibly easy for developers to build fully distributed, reactive systems with consistent data and cross-language (Python, C++, Julia) support. If there's sufficient interest, we'd be happy to share a public board of items we're working on.



Contributing

Thank you for considering contributing to Zef! We know your time is valuable and your input makes Zef better for all current and future users.

To optimize for feedback speed, please raise bugs or suggest features directly in our community chat https://zef.chat.

Please refer to our CONTRIBUTING file and CODE_OF_CONDUCT file for more details.



License

Zef is licensed under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0



Dependencies

The compiled libraries make use of the following packages:

Download files

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

Source Distribution

zef-0.16.0a1.tar.gz (667.4 kB view details)

Uploaded Source

Built Distributions

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

zef-0.16.0a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

zef-0.16.0a1-cp310-cp310-macosx_10_15_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

zef-0.16.0a1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

zef-0.16.0a1-cp39-cp39-macosx_10_15_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

Details for the file zef-0.16.0a1.tar.gz.

File metadata

  • Download URL: zef-0.16.0a1.tar.gz
  • Upload date:
  • Size: 667.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for zef-0.16.0a1.tar.gz
Algorithm Hash digest
SHA256 4e0aee027276d2bbc9d55f32f3578528428e1e8aefc0a68c0a0e25790b21bff5
MD5 d7a0b39ddb4a3a354b209517e43ad7a2
BLAKE2b-256 610b68cbc0c49833c6a9936cb57f36929db7317e67e075c887b222c3dad16fe1

See more details on using hashes here.

File details

Details for the file zef-0.16.0a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zef-0.16.0a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 290084985033413771b5bc92ea6e640029991681b02b10745a8dc855f9971163
MD5 a2b925ba41a76f7ad7c1c6ffd5f92c06
BLAKE2b-256 bf27aeb74c30a7d8b5efc87fb741d3cea8dd39af8b2303c79ec2f650e3f280c6

See more details on using hashes here.

File details

Details for the file zef-0.16.0a1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for zef-0.16.0a1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7d36fbac3176ca02cb3dfa24276c1de50644d98bc712997e91614d8b27424b8b
MD5 319a3738c80b94c981a747dbef36ee1c
BLAKE2b-256 251d6095b197a57bb13de4d856ea394f6f35991ea16bfed2c7ad41eed4b7a5fc

See more details on using hashes here.

File details

Details for the file zef-0.16.0a1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zef-0.16.0a1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5890b483815844d05c859340779ac1b3f40c3025c20f92fe7d623a1fccc040ff
MD5 082f2a2c5fae87b7b064a92b2145d5de
BLAKE2b-256 1699b124a78f2425427db011de618e108ef06495077674094439c08abc22119b

See more details on using hashes here.

File details

Details for the file zef-0.16.0a1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for zef-0.16.0a1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c72dcf20e83841b79f3001e86218efcd20e245215e3f17eef41c201aae152e26
MD5 dd5d82c2ba5568ea424e7e430d3172bc
BLAKE2b-256 880a1a5c21574c4da529eac3f214237e0eb637cffa9f42de6eda38b9d7efe65c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.18.0a3

10 files

0.18.0a2

7 files

0.18.0a1

7 files

0.17.2a9

10 files

0.17.2a8

2 files

0.17.2a6

2 files

0.17.2a4

2 files

0.17.2a2

7 files

0.17.1

9 files

0.17.1a1

7 files

0.17.0

9 files

0.17.0a5

7 files

0.17.0a4

5 files

0.17.0a3

5 files

0.17.0a2

5 files

0.17.0a1

5 files

0.16.7

14 files

0.16.6

14 files

0.16.5

14 files

0.16.4

14 files

0.16.3.post11

9 files

0.16.3.post8

7 files

0.16.3.post7

7 files

0.16.3.post6

7 files

0.16.3.post5

7 files

0.16.3.post4

7 files

0.16.3.post3

6 files

0.16.3.post2

7 files

0.16.3.post1

7 files

0.16.3

7 files

0.16.2

7 files

0.16.1

7 files

0.16.1a1.dev2

1 file

0.16.1a1.dev1

1 file

0.16.0

7 files

0.16.0a10

4 files

0.16.0a9

5 files

0.16.0a8

5 files

0.16.0a7

5 files

0.16.0a6

5 files

0.16.0a5

5 files

0.16.0a4

5 files

0.16.0a3

5 files

0.16.0a2

5 files

This release

0.16.0a1 This release

5 files

0.16.0a1.dev4

1 file

0.16.0a1.dev3

1 file

0.16.0a1.dev2

1 file

0.16.0a1.dev1

1 file

0.15.9a1

5 files

0.15.8

11 files

0.15.8a4

4 files

0.15.8a3

5 files

0.15.8a2

5 files

0.15.8a1

5 files

0.15.8a1.dev1

1 file

0.15.7

11 files

0.15.7a7

5 files

0.15.7a6

5 files

0.15.7a5

5 files

0.15.7a4

5 files

0.15.7a3

5 files

0.15.7a2

5 files

0.15.7a1

11 files

0.15.7a1.dev1

1 file

0.15.6.post1

11 files

0.15.6

11 files

0.15.6a3.post1

7 files

0.15.6a3

7 files

0.15.6a3.dev4

1 file

0.15.6a3.dev3

1 file

0.15.6a2

7 files

0.15.6a1

6 files

0.15.5

6 files

0.15.5a1

6 files

0.15.5a1.dev2

1 file

0.15.5a1.dev1

1 file

0.1.71

3 files

0.1.70

3 files

0.1.69

3 files

0.1.67

3 files

0.1.66

3 files

0.1.65

3 files

0.1.64

3 files

0.1.63

3 files

0.1.62

3 files

0.1.61

3 files

0.1.60

3 files

0.1.59

3 files

0.1.58

3 files

0.1.57

2 files

0.1.56

2 files

0.1.55

2 files

0.1.54

2 files

0.1.53

2 files

0.1.52

2 files

0.1.51

2 files

0.1.50

2 files

0.1.49

2 files

0.1.48

2 files

0.1.47

2 files

0.1.46

2 files

0.1.45

2 files

0.1.44

2 files

0.1.43

2 files

0.1.42

2 files

0.1.41

2 files

0.1.40

2 files

0.1.39

2 files

0.1.38

2 files

0.1.37

2 files

0.1.36

2 files

0.1.34

2 files

0.1.33

2 files

0.1.32

2 files

0.1.31

2 files

0.1.30

2 files

0.1.29

2 files

0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page