Skip to content

Commit 6e010a3

Browse files
committed
Rework README.md for 4.0, minor changes to CHANGELOG.md
1 parent dd3c65a commit 6e010a3

File tree

2 files changed

+62
-121
lines changed

2 files changed

+62
-121
lines changed

CHANGELOG.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,16 @@ ObjectBox Python ChangeLog
44
4.0.0 (2024-05-16)
55
------------------
66

7-
### Core
8-
97
* ObjectBox now supports vector search ("vector database") to enable efficient similarity searches.
108
This is particularly useful for AI/ML/RAG applications, e.g. image, audio, or text similarity.
119
Other use cases include sematic search or recommendation engines.
1210
See https://docs.objectbox.io/ann-vector-search for details.
13-
* Adjusting the version number to match the core version (4.0); we will be aligning on major versions from now on.
14-
15-
### Python Bindings
16-
17-
* Queries: Support for Property-based conditions and logic combinations
11+
* Queries: support for Property-based conditions and logic combinations
1812
* Convenient "Store" API deprecates ObjectBox and Builder API
1913
* New examples added, illustrating an VectorSearch and AI/RAG application
2014
* Dependency flatbuffers: Updated to 24.3.50
15+
* Adjusting the version number to match the core version (4.0); we will be aligning on major versions from now on.
2116

22-
0.6.1 (and below)
23-
-----------------
24-
17+
Older Versions
18+
--------------
2519
Please check https://github.com/objectbox/objectbox-python/releases for details.

README.md

Lines changed: 58 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,56 @@
1-
ObjectBox Python API
2-
====================
3-
[ObjectBox](https://objectbox.io) is a superfast database for objects, now also available for Python (3.4+) with a simple CRUD API.
1+
ObjectBox Python
2+
================
3+
[ObjectBox](https://objectbox.io) Python is a lightweight yet powerful on-device database & vector database.
4+
Store Python objects and vectors directly with an easy-to-use CRUD API while enjoying exceptional speed and efficiency.
45
And because it's an embedded database, there's no setup required.
56

67
Its advanced vector search empowers AI for a variety of applications, including RAG AI, generative AI,
7-
and similarity searches. Designed for high performance, the ObjectBox database is excellent for mobile and IoT devices,
8-
minimizing CPU, memory, and battery usage to enhance device efficiency and sustainability.
9-
As an offline-first solution, ObjectBox makes sure your app reliably works offline as well as online.
8+
and similarity searches.
109

10+
Designed for high performance, the ObjectBox database runs locally on-device.
11+
As an offline-first solution, ObjectBox makes sure your app reliably works offline as well as online
12+
(via [Sync](https://objectbox.io/sync/)).
1113

12-
## Table of Contents:
14+
_Table of Contents_
15+
16+
- [Feature Highlights](#feature-highlights)
17+
- [Code Example (CRUD - Create, Read, Update, Delete)](#code-example-crud---create-read-update-delete)
1318
- [Getting Started](#getting-started)
14-
- [Model IDs and UIDs](#model-ids-and-uids)
15-
- [model.py](#modelpy)
16-
- [Using ObjectBox](#using-objectbox)
17-
- [Some features](#some-features)
18-
- [Coming in the future](#coming-in-the-future)
19+
- [Alpha Notes](#alpha-notes)
1920
- [Help wanted](#help-wanted)
2021
- [Feedback](#feedback)
2122
- [License](#license)
2223

23-
---
24-
25-
Getting started
26-
---------------
27-
First of all, install the latest version:
28-
29-
```bash
30-
pip install --upgrade objectbox
31-
```
32-
33-
To start using ObjectBox as a storage for your data, you need to define your model first.
34-
The model consists of Python classes annotated with `@Entity` decorator.
35-
36-
### Model IDs and UIDs
37-
38-
Each Entity has to have an ID (unique among entities).
39-
Properties need an ID as well (unique inside one Entity).
40-
Both Entities and Properties must also have an UID, which is a globally unique identifier.
41-
42-
For other ObjectBox supported languages, the binding takes care of assigning these IDs/UIDs but this feature is not yet implemented for Python.
43-
To learn more, see [ObjectBox Java documentation](https://docs.objectbox.io/advanced/meta-model-ids-and-uids)
24+
Feature Highlights
25+
------------------
4426

45-
#### model.py
27+
🏁 **On-device vector database** - for AI apps that work any place.\
28+
🏁 **High performance** - superfast response rates enabling real-time applications.\
29+
🪂 **ACID compliant** - Atomic, Consistent, Isolated, Durable.\
30+
🌱 **Scalable** - grows with your app, handling millions of objects with ease.\
31+
💚 **Sustainable** - frugal on CPU, Memory and battery / power use, reducing CO2 emissions.\
32+
💐 **[Queries](https://docs.objectbox.io/queries)** - filter data as needed, even across relations.\
33+
💻 **Multiplatform** - Get native speed on your favorite platforms.\
34+
* Linux x86-64 (64-bit)
35+
* Linux ARMv6hf (e.g. Raspberry PI Zero)
36+
* Linux ARMv7hf (e.g. Raspberry PI 3)
37+
* Linux ARMv8 (e.g. Raspberry PI 4, 5, etc.)
38+
* MacOS x86-64 and arm64 (Intel 64-bit and Apple Silicon)
39+
* Windows x86-64 (64-bit)
4640

47-
```python
48-
from objectbox.model import *
49-
50-
@Entity(id=1, uid=1)
51-
class Person:
52-
id = Id(id=1, uid=1001)
53-
name = Property(str, id=2, uid=1002)
54-
is_enabled = Property(bool, id=3, uid=1003)
55-
# int can be stored with 64 (default), 32, 16 or 8 bit precision.
56-
int64 = Property(int, id=4, uid=1004)
57-
int32 = Property(int, type=PropertyType.int, id=5, uid=1005)
58-
int16 = Property(int, type=PropertyType.short, id=6, uid=1006)
59-
int8 = Property(int, type=PropertyType.byte, id=7, uid=1007)
60-
# float can be stored with 64 or 32 (default) bit precision.
61-
float64 = Property(float, id=8, uid=1008)
62-
float32 = Property(float, type=PropertyType.float, id=9, uid=1009)
63-
byte_array = Property(bytes, id=10, uid=1010)
64-
# Regular properties are not stored.
65-
transient = ""
66-
```
67-
68-
### Using ObjectBox
41+
#### Code Example (CRUD - Create, Read, Update, Delete)
6942

70-
To actually use the database, you create a Store with the model you've just defined.
71-
Afterwards, you can reuse the instance (`store` in the example below) and use it to access "Entity Boxes" which hold your objects.
72-
73-
#### program.py
43+
What does using ObjectBox in Python look like?
7444

7545
```python
7646
import objectbox
47+
7748
# from mypackage.model import Person
7849

79-
# Configure ObjectBox: should be done only once in the whole program and the "store" variable should be kept around
80-
model = objectbox.Model()
81-
model.entity(Person, last_property_id=objectbox.model.IdUid(10, 1010))
82-
model.last_entity_id = objectbox.model.IdUid(1, 1)
50+
# The ObjectBox Store represents a database; keep it around...
8351
store = objectbox.Store(model=model)
8452

85-
# Open the box of "Person" entity. This can be called many times but you can also pass the variable around
53+
# Get a box for the "Person" entity; a Box is the main interaction point with objects and the database.
8654
box = store.box(Person)
8755

8856
person = Person()
@@ -94,65 +62,44 @@ box.put(person) # Update
9462
box.remove(person) # Delete
9563
```
9664

97-
Additionally, see the [TaskList example app](https://github.com/objectbox/objectbox-python/tree/main/example). After checking out this repository to run the example:
65+
Getting started
66+
---------------
67+
To install or update the latest version of ObjectBox, run this:
68+
69+
```bash
70+
pip install --upgrade --pre objectbox # "--pre" because you want to get the 4.0.0 alpha version
9871
```
99-
// Set up virtual environment, download ObjectBox libraries
100-
make depend
72+
Now you are ready to use ObjectBox in your Python project.
10173

102-
// Activate virtual environment...
103-
// ...on Linux
104-
source .venv/bin/activate
105-
// ...on Windows
106-
.venv\Scripts\activate
74+
Head over to the **[ObjectBox documentation](https://docs.objectbox.io)**
75+
and learn how to setup your first entity classes.
10776

108-
// Run the example
109-
python3 -m example
77+
### Examples
11078

111-
// Once done, leave the virtual environment
112-
deactivate
113-
```
79+
Do you prefer to dive right into working examples?
80+
We have you covered in the [example](example/) folder.
81+
It comes with a task list application and a vector search example using cities.
82+
Additionally, for AI enthusiasts, we provide an "ollama" example,
83+
which integrates a local LLM (via [ollama](https://ollama.com))
84+
with ObjectBox to manage and search embeddings effectively.
11485

115-
For more information and code examples, see the tests folder. The docs for other languages may also help you understand the basics.
116-
117-
* ObjectBox Java/Dart/Flutter - https://docs.objectbox.io
118-
* ObjectBox Go - https://golang.objectbox.io
119-
* ObjectBox Swift - https://swift.objectbox.io
120-
121-
Some features
122-
-------------
123-
* Automatic transactions (ACID compliant)
124-
* Bulk operations
125-
* Vector types, e.g. for AI vector embeddings
126-
* Platforms supported with native speed:
127-
* Linux x86-64 (64-bit)
128-
* Linux ARMv6hf (e.g. Raspberry PI Zero)
129-
* Linux ARMv7hf (e.g. Raspberry PI 3; available only on request)
130-
* Linux ARMv8 (e.g. Raspberry PI 4)
131-
* MacOS x86-64 and arm64 (Intel 64-bit and Apple Silicon)
132-
* Windows x86-64 (64-bit)
133-
134-
Coming in the future
135-
--------------------
136-
The goodness you know from the other ObjectBox language-bindings, e.g.,
137-
138-
* model management (no need to manually set id/uid)
139-
* automatic model migration (no schema upgrade scripts etc.)
140-
* powerful queries
141-
* relations (to-one, to-many)
142-
* asynchronous operations
143-
* secondary indexes
86+
Alpha Notes
87+
-----------
88+
While ObjectBox Python is powered by a rock stable core written in C/C++, we label our Python binding still "alpha."
89+
We do this to manage expectations as some quality of life improvements are yet to come to our Python binding.
90+
This is mostly about "model management," which still requires you to do some manual coding setup, e.g. for model IDs.
91+
The final release will take care of this for you automatically.
14492

14593
Help wanted
14694
-----------
147-
ObjectBox for Python is still in an early stage with limited feature set (compared to our other supported languages).
148-
To bring all these features to Python, we're asking the community to help out. PRs are more than welcome!
95+
ObjectBox for Python is open to contributions.
14996
The ObjectBox team will try its best to guide you and answer questions.
15097
See [CONTRIBUTING.md](https://github.com/objectbox/objectbox-python/blob/main/CONTRIBUTING.md) to get started.
15198

15299
Feedback
153100
--------
154-
Also, please let us know your feedback by opening an issue: for example, if you experience errors or if you have ideas
155-
for how to improve the API. Thanks!
101+
We are looking for your feedback!
102+
Please let us know what you think about ObjectBox for Python and how we can improve it.
156103

157104
License
158105
-------

0 commit comments

Comments
 (0)