Eule is a universal logic engine for generating Euler diagrams and analyzing set relationships.
It generates non-empty Euler diagrams (disjoint partitions) for ANY type of overlapping data:
- Discrete Sets: Strings, integers, custom objects.
- Continuous Intervals: Time ranges, numerical values (via
interval-sets). - Geometric Shapes: 2D Polygons, 3D Boxes (via
shapelyandbox-sets).
Motivation
Installation
# Standard install (Discrete sets)
pip install eule
# With Interval support
pip install "eule[interval]"
# With Geometry support
pip install "eule[geometry]"
Universal Logic Engine 🚀
Eule is no longer just for Python sets. It now supports the SetLike Protocol, allowing it to compute disjoint regions for advanced mathematical objects.
1. Discrete Sets (Standard)
from eule import euler
sets = {
'A': {1, 2, 3},
'B': {2, 3, 4},
'C': {3, 4, 5}
}
diagram = euler(sets)
# Returns disjoint decomposition:
# {'A': {1}, 'B': {5}, 'C': {6}, 'A,B': {2}, ...}
2. Continuous Intervals (Time/Numbers)
Requires interval-sets
from interval_sets import IntervalSet, Interval
from eule import euler
schedules = {
'Alice': IntervalSet([Interval(9, 12), Interval(13, 17)]),
'Bob': IntervalSet([Interval(11, 14)])
}
# Find exact overlap: 11:00-12:00 and 13:00-14:00
diagram = euler(schedules)
3. Geometric Shapes (2D/3D)
Requires shapely
from shapely.geometry import Polygon
from eule import euler
territories = {
'Wolves': Polygon([(0,0), (0,10), (10,10), (10,0)]),
'Bears': Polygon([(5,5), (5,15), (15,15), (15,5)])
}
# Automatically computes the exact Intersection Polygon!
diagram = euler(territories)
Examples
Check the examples/ directory for advanced real-world use cases:
- case_scatter_hulls.py: 🐾 Ecology / Spatial - Convex Hull analysis of scatter points (e.g., animal territories).
- case_3d_clash_detection.py: 🏗️ Engineering / BIM - 3D Box collision detection (Beams vs HVAC).
- case_scheduling.py: 🗓️ Productivity - Finding common free time across multiple calendars.
- case_nlp_stylometry.py: 📜 NLP - Vocabulary overlap analysis.
How to Contribute
We welcome implementations of the SetLike protocol for new domains!
See Protocol Specification.
Metadata
Release files for eule 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eule-1.4.0.tar.gz | 358.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eule-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 397.0 kB
Release files / eule-1.4.0.tar.gz
| Download URL | eule-1.4.0.tar.gz |
|---|---|
| Size | 358.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a578b71853ec6487c5498902adf9b3419891fdd756e5803f0e46bddd419757e
|
|
BLAKE2b-256 checksum How to use checksums |
c921b285ef8581868da8cecbb8862f77fe3fd03df56c8752b5e0a3ae676ff39d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.2
|
Release files / eule-1.4.0-py3-none-any.whl
| Download URL | eule-1.4.0-py3-none-any.whl |
|---|---|
| Size | 38.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c9416420577de1bde00536d0a63a1fd3ac1c49e83d59d9896cae5ab99c4d03d
|
|
BLAKE2b-256 checksum How to use checksums |
d2e6c08506372052a410be803add26ea5a5b47f76be997a2767a7b0c9cc676be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.2
|