Skip to content

Commit 258ce9b

Browse files
committed
Prepare test release v0.0.1-python for PyPI publisher activation
- Set version to 0.0.1 in pyproject.toml - Ready to activate pending PyPI publishers for arcadedb-embed and arcadedb-embed-jre - This will validate the new simplified build system and GitHub Actions workflows
1 parent c16ec7c commit 258ce9b

14 files changed

Lines changed: 1508 additions & 241 deletions

.github/workflows/release-python-packages.yml

Lines changed: 12 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,14 @@ jobs:
3737

3838
build:
3939
needs: test # Wait for tests to pass
40-
name: Build Python Distribution (${{ matrix.distribution }})
40+
name: Build Python Package (${{ matrix.variant }})
4141
runs-on: ubuntu-latest
4242
strategy:
4343
matrix:
44-
distribution: [headless, minimal, full]
44+
variant: [base] # Only base variant for now, jre coming soon
4545
include:
46-
- distribution: headless
47-
environment: pypi-headless
48-
- distribution: minimal
49-
environment: pypi-minimal
50-
- distribution: full
51-
environment: pypi-full
46+
- variant: base
47+
environment: pypi-base
5248

5349
steps:
5450
- name: Checkout code
@@ -57,65 +53,31 @@ jobs:
5753
- name: Set up Docker Buildx
5854
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
5955

60-
- name: Build ${{ matrix.distribution }} distribution
56+
- name: Build ${{ matrix.variant }} variant
6157
run: |
6258
cd bindings/python
63-
./build-all.sh ${{ matrix.distribution }}
59+
./build-all.sh ${{ matrix.variant }}
6460
6561
- name: Upload wheel artifact
6662
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
6763
with:
68-
name: wheel-${{ matrix.distribution }}
64+
name: wheel-${{ matrix.variant }}
6965
path: bindings/python/dist/*.whl
7066
retention-days: 5
7167

72-
publish-headless:
73-
name: Publish arcadedb-embedded-headless to PyPI
68+
publish-base:
69+
name: Publish arcadedb-embed to PyPI
7470
needs: [check-release, build]
7571
if: needs.check-release.outputs.is-python-release == 'true'
7672
runs-on: ubuntu-latest
77-
environment: pypi-headless
73+
environment: pypi-base
7874
permissions:
7975
id-token: write
8076
steps:
81-
- name: Download headless wheel
77+
- name: Download base wheel
8278
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
8379
with:
84-
name: wheel-headless
85-
path: dist/
86-
- name: Publish to PyPI
87-
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
88-
89-
publish-minimal:
90-
name: Publish arcadedb-embedded-minimal to PyPI
91-
needs: [check-release, build]
92-
if: needs.check-release.outputs.is-python-release == 'true'
93-
runs-on: ubuntu-latest
94-
environment: pypi-minimal
95-
permissions:
96-
id-token: write
97-
steps:
98-
- name: Download minimal wheel
99-
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
100-
with:
101-
name: wheel-minimal
102-
path: dist/
103-
- name: Publish to PyPI
104-
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
105-
106-
publish-full:
107-
name: Publish arcadedb-embedded to PyPI
108-
needs: [check-release, build]
109-
if: needs.check-release.outputs.is-python-release == 'true'
110-
runs-on: ubuntu-latest
111-
environment: pypi-full
112-
permissions:
113-
id-token: write
114-
steps:
115-
- name: Download full wheel
116-
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
117-
with:
118-
name: wheel-full
80+
name: wheel-base
11981
path: dist/
12082
- name: Publish to PyPI
12183
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1

.github/workflows/test-python-bindings.yml

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,28 @@ on:
1313
# Allow manual trigger
1414
workflow_dispatch:
1515
inputs:
16-
distribution:
17-
description: 'Distribution to test (all, headless, minimal, or full)'
16+
variant:
17+
description: 'Package variant to test (all, base, or jre)'
1818
required: false
1919
default: 'all'
2020
type: choice
2121
options:
2222
- all
23-
- headless
24-
- minimal
25-
- full
23+
- base
24+
- jre
2625

2726
jobs:
2827
test:
29-
name: Test ${{ matrix.distribution }} distribution
28+
name: Test ${{ matrix.variant }} variant
3029
runs-on: ubuntu-latest
3130
strategy:
3231
# Don't cancel other matrix jobs if one fails
3332
fail-fast: false
3433
matrix:
35-
distribution: [headless, minimal, full]
34+
variant: [base] # Only base variant for now, jre coming soon
3635
# Filter based on workflow_dispatch input if present
3736
exclude:
38-
- distribution: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.distribution != 'all' && github.event.inputs.distribution != 'headless' && 'headless' || '' }}
39-
- distribution: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.distribution != 'all' && github.event.inputs.distribution != 'minimal' && 'minimal' || '' }}
40-
- distribution: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.distribution != 'all' && github.event.inputs.distribution != 'full' && 'full' || '' }}
37+
- variant: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.variant != 'all' && github.event.inputs.variant != 'base' && 'base' || '' }}
4138

4239
steps:
4340
- name: Checkout code
@@ -46,19 +43,19 @@ jobs:
4643
- name: Set up Docker Buildx
4744
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
4845

49-
- name: Build and test ${{ matrix.distribution }} distribution
46+
- name: Build and test ${{ matrix.variant }} variant
5047
run: |
5148
cd bindings/python
52-
echo "🔨 Building ${{ matrix.distribution }} distribution..."
53-
./build-all.sh ${{ matrix.distribution }}
49+
echo "🔨 Building ${{ matrix.variant }} variant..."
50+
./build-all.sh ${{ matrix.variant }}
5451
env:
55-
DISTRIBUTION: ${{ matrix.distribution }}
52+
VARIANT: ${{ matrix.variant }}
5653

5754
- name: Extract wheel for additional testing
5855
run: |
5956
cd bindings/python
6057
mkdir -p test-install
61-
cp dist/*${{ matrix.distribution }}*.whl test-install/ || cp dist/*.whl test-install/
58+
cp dist/*${{ matrix.variant }}*.whl test-install/ || cp dist/*.whl test-install/
6259
6360
- name: Set up Python for host testing
6461
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
@@ -80,7 +77,7 @@ jobs:
8077
id: pytest
8178
run: |
8279
cd bindings/python
83-
echo "🧪 Testing ${{ matrix.distribution }} distribution..."
80+
echo "🧪 Testing ${{ matrix.variant }} variant..."
8481
8582
# Run pytest with verbose output
8683
pytest tests/ -v --tb=short --color=yes 2>&1 | tee pytest-output.txt
@@ -90,7 +87,7 @@ jobs:
9087
echo "❌ Tests FAILED"
9188
exit 1
9289
elif grep -q "passed" pytest-output.txt || grep -q "skipped" pytest-output.txt; then
93-
echo "✅ Tests PASSED (may include skipped tests based on distribution)"
90+
echo "✅ Tests PASSED - All 43 tests should pass in our variant"
9491
9592
# Count results
9693
PASSED=$(grep -oP '\d+(?= passed)' pytest-output.txt || echo "0")
@@ -115,7 +112,7 @@ jobs:
115112
run: |
116113
cd bindings/python
117114
118-
echo "## 🧪 Test Results: ${{ matrix.distribution }}" >> $GITHUB_STEP_SUMMARY
115+
echo "## 🧪 Test Results: ${{ matrix.variant }}" >> $GITHUB_STEP_SUMMARY
119116
echo "" >> $GITHUB_STEP_SUMMARY
120117
121118
if [ "${{ steps.pytest.outcome }}" = "success" ]; then
@@ -132,17 +129,16 @@ jobs:
132129
echo "| ❌ Failed | ${{ steps.pytest.outputs.failed || 'N/A' }} |" >> $GITHUB_STEP_SUMMARY
133130
echo "" >> $GITHUB_STEP_SUMMARY
134131
135-
echo "### Expected Behavior by Distribution:" >> $GITHUB_STEP_SUMMARY
132+
echo "### Expected Behavior:" >> $GITHUB_STEP_SUMMARY
136133
echo "" >> $GITHUB_STEP_SUMMARY
137-
echo "- **Headless**: Some tests skipped (no server/Gremlin features)" >> $GITHUB_STEP_SUMMARY
138-
echo "- **Minimal**: Few tests skipped (no Gremlin, has server/Studio)" >> $GITHUB_STEP_SUMMARY
139-
echo "- **Full**: Minimal skipped tests (all features available)" >> $GITHUB_STEP_SUMMARY
134+
echo "- **Base package**: All 43 tests should pass (includes SQL, Cypher, Gremlin, Studio)" >> $GITHUB_STEP_SUMMARY
135+
echo "- **JRE package**: Same as base but with bundled JRE (coming soon)" >> $GITHUB_STEP_SUMMARY
140136
141137
- name: Upload test results
142138
if: always()
143139
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
144140
with:
145-
name: test-results-${{ matrix.distribution }}
141+
name: test-results-${{ matrix.variant }}
146142
path: |
147143
bindings/python/pytest-output.txt
148144
bindings/python/.coverage
@@ -151,11 +147,11 @@ jobs:
151147
- name: Upload wheel artifact
152148
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
153149
with:
154-
name: wheel-${{ matrix.distribution }}-test
150+
name: wheel-${{ matrix.variant }}-test
155151
path: bindings/python/dist/*.whl
156152
retention-days: 7
157153

158-
# Summary job that checks all distributions
154+
# Summary job that checks all variants
159155
test-summary:
160156
name: Test Summary
161157
needs: test
@@ -168,11 +164,11 @@ jobs:
168164
echo "" >> $GITHUB_STEP_SUMMARY
169165
170166
if [ "${{ needs.test.result }}" = "success" ]; then
171-
echo "✅ **All distributions passed testing!**" >> $GITHUB_STEP_SUMMARY
167+
echo "✅ **All variants passed testing!**" >> $GITHUB_STEP_SUMMARY
172168
echo "" >> $GITHUB_STEP_SUMMARY
173-
echo "All three Python distributions (headless, minimal, full) have been successfully built and tested." >> $GITHUB_STEP_SUMMARY
169+
echo "The ArcadeDB Python package (base variant) has been successfully built and tested." >> $GITHUB_STEP_SUMMARY
174170
else
175-
echo "❌ **Some distributions failed testing**" >> $GITHUB_STEP_SUMMARY
171+
echo "❌ **Some variants failed testing**" >> $GITHUB_STEP_SUMMARY
176172
echo "" >> $GITHUB_STEP_SUMMARY
177173
echo "Please check the individual test jobs for details." >> $GITHUB_STEP_SUMMARY
178174
exit 1

.github/workflows/test-python-examples.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ jobs:
2525
- name: Set up Docker Buildx
2626
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
2727

28-
- name: Build minimal distribution
28+
- name: Build base variant
2929
run: |
3030
cd bindings/python
31-
echo "🔨 Building minimal distribution for examples..."
32-
./build-all.sh minimal
31+
echo "🔨 Building base variant for examples..."
32+
./build-all.sh base
3333
3434
- name: Set up Python
3535
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
@@ -45,7 +45,7 @@ jobs:
4545
- name: Install ArcadeDB Python bindings
4646
run: |
4747
cd bindings/python
48-
pip install dist/*minimal*.whl
48+
pip install dist/*embed*.whl
4949
5050
- name: Install example dependencies
5151
run: |

README.md

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
> **Python bindings for [ArcadeDB](https://github.com/ArcadeData/arcadedb)** - A multi-model database supporting Graph, Document, Key/Value, Vector, and Time Series models with extreme performance.
44
5-
[![PyPI - Headless](https://img.shields.io/badge/PyPI-headless-blue)](https://pypi.org/project/arcadedb-embedded-headless/)
6-
[![PyPI - Minimal](https://img.shields.io/badge/PyPI-minimal-blue)](https://pypi.org/project/arcadedb-embedded-minimal/)
7-
[![PyPI - Full](https://img.shields.io/badge/PyPI-full-blue)](https://pypi.org/project/arcadedb-embedded/)
8-
[![Tests](https://img.shields.io/badge/tests-44%2F44%20passing-brightgreen)](https://github.com/humemai/arcadedb-embedded-python/actions)
5+
[![PyPI - Base](https://img.shields.io/badge/PyPI-arcadedb--embed-blue)](https://pypi.org/project/arcadedb-embed/)
6+
[![PyPI - JRE](https://img.shields.io/badge/PyPI-arcadedb--embed--jre-blue)](https://pypi.org/project/arcadedb-embed-jre/)
7+
[![Tests](https://img.shields.io/badge/tests-43%2F43%20passing-brightgreen)](https://github.com/humemai/arcadedb-embedded-python/actions)
98
[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](LICENSE)
109

1110
**📖 [Documentation](https://humemai.github.io/arcadedb-embedded-python/) | 🐛 [Issues](https://github.com/humemai/arcadedb-embedded-python/issues)**
@@ -17,12 +16,14 @@
1716
### Installation
1817

1918
```bash
20-
pip install arcadedb-embedded-headless # Recommended for production
21-
pip install arcadedb-embedded-minimal # With Studio UI for development
22-
pip install arcadedb-embedded # With Gremlin + GraphQL
19+
pip install arcadedb-embed # Base package (requires Java 21+)
20+
pip install arcadedb-embed-jre # With bundled JRE (coming soon)
2321
```
2422

25-
**Requirements:** Python 3.8+ and [Java 21+](https://adoptium.net/) (JRE)
23+
**Requirements:**
24+
25+
- **Base package:** Python 3.8+ and [Java 21+](https://adoptium.net/) (JRE)
26+
- **JRE package:** Python 3.8+ only (JRE bundled)
2627

2728
**💡 Tip:** See "JVMCI is not enabled" warnings? Install [GraalVM](https://humemai.github.io/arcadedb-embedded-python/latest/getting-started/installation/#eliminate-polyglot-warnings-optional) to fix them
2829

@@ -122,23 +123,26 @@ result = db.query("sql", """
122123

123124
**Embedded Mode** - Runs in your Python process (no server needed)
124125
**Multi-Model** - Graph, Document, Key/Value, Vector, Time Series
125-
**Query Languages** - SQL, Cypher, Gremlin (full distribution), MongoDB
126+
**Query Languages** - SQL, Cypher, Gremlin, MongoDB (all included)
126127
**ACID Transactions** - Full transactional support
127128
**Vector Search** - HNSW indexing for embeddings
129+
**Studio UI** - Web-based database browser (base package)
128130
**Self-Contained** - All JARs bundled, no external dependencies
129-
**Production Ready** - 44/44 tests passing, actively maintained
131+
**Production Ready** - 43/43 tests passing, actively maintained
130132

131133
---
132134

133-
## Distribution Comparison
135+
## Package Variants
136+
137+
| Package | Size | Java Required | Studio UI | Use Case |
138+
|---------|------|---------------|-----------|----------|
139+
| **arcadedb-embed** | ~97MB | Java 21+ || Development & Production |
140+
| **arcadedb-embed-jre** | ~170MB | None || Simplified deployment |
134141

135-
| Distribution | Size | Studio UI | Gremlin | Use Case |
136-
|-------------|------|-----------|---------|----------|
137-
| **Headless** | ~94MB ||| Production, CI/CD |
138-
| **Minimal** | ~97MB ||| Development with UI |
139-
| **Full** | ~158MB ||| All features |
142+
Both packages include the same features: SQL, Cypher, Gremlin, Studio UI, and all core functionality.
143+
The only difference is Java runtime dependency.
140144

141-
All distributions use the same import: `import arcadedb_embedded as arcadedb`
145+
All packages use the same import: `import arcadedb_embedded as arcadedb`
142146

143147
---
144148

@@ -154,6 +158,7 @@ All distributions use the same import: `import arcadedb_embedded as arcadedb`
154158
This fork provides **embedded Python bindings** using JPype to bridge Python and the Java-based ArcadeDB engine.
155159

156160
**Main ArcadeDB Resources:**
161+
157162
- 📖 [Official Documentation](https://docs.arcadedb.com)
158163
- 🐳 [Docker Images](https://hub.docker.com/r/arcadedata/arcadedb)
159164
- 💬 [Community Discord](https://discord.gg/w2Npx2B7hZ)

0 commit comments

Comments
 (0)