sharedbox 0.1.0__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sharedbox-0.2.4/.github/workflows/ci.yaml +119 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/.gitignore +3 -1
- sharedbox-0.2.4/CHANGELOG.md +37 -0
- sharedbox-0.2.4/CMakeLists.txt +102 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/PKG-INFO +45 -25
- sharedbox-0.1.0/src/sharedbox.egg-info/PKG-INFO → sharedbox-0.2.4/README.md +43 -40
- sharedbox-0.2.4/docs/readme.md +234 -0
- sharedbox-0.2.4/install-vcpkg.sh +57 -0
- sharedbox-0.2.4/noxfile.py +20 -0
- sharedbox-0.2.4/pyproject.toml +83 -0
- sharedbox-0.1.0/cpp_src/shared_dict.cpp → sharedbox-0.2.4/src/sharedbox/_core/sharedmemory.cpp +1 -1
- sharedbox-0.2.4/src/sharedbox/_shareddict.pyi +40 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/src/sharedbox/_version.py +3 -3
- sharedbox-0.2.4/src/sharedbox/py.typed +0 -0
- sharedbox-0.2.4/src/sharedbox/shareddict.cpp +465 -0
- sharedbox-0.2.4/src/sharedbox/shareddict.hpp +86 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/tests/test_mixed_data_types.py +2 -3
- {sharedbox-0.1.0 → sharedbox-0.2.4}/tests/test_multiprocess_containers.py +2 -1
- {sharedbox-0.1.0 → sharedbox-0.2.4}/uv.lock +10 -10
- sharedbox-0.1.0/.github/workflows/ci.yaml +0 -79
- sharedbox-0.1.0/CHANGELOG.md +0 -12
- sharedbox-0.1.0/README.md +0 -132
- sharedbox-0.1.0/pyproject.toml +0 -54
- sharedbox-0.1.0/setup.cfg +0 -4
- sharedbox-0.1.0/setup.py +0 -106
- sharedbox-0.1.0/src/sharedbox/_shareddict.pyi +0 -32
- sharedbox-0.1.0/src/sharedbox/_shareddict.pyx +0 -350
- sharedbox-0.1.0/src/sharedbox.egg-info/SOURCES.txt +0 -33
- sharedbox-0.1.0/src/sharedbox.egg-info/dependency_links.txt +0 -1
- sharedbox-0.1.0/src/sharedbox.egg-info/not-zip-safe +0 -1
- sharedbox-0.1.0/src/sharedbox.egg-info/requires.txt +0 -5
- sharedbox-0.1.0/src/sharedbox.egg-info/top_level.txt +0 -1
- {sharedbox-0.1.0 → sharedbox-0.2.4}/LICENSE +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/basic_comparison.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/concurrent_access.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/getting_started.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/initialization_demo.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/memory_usage.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/mixed_data_benchmark.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/numpy_performance_benchmark.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/examples/shared_cache_example.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/src/sharedbox/__init__.py +0 -0
- /sharedbox-0.1.0/cpp_src/shared_dict.hpp → /sharedbox-0.2.4/src/sharedbox/_core/sharedmemory.hpp +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/src/sharedbox/utils.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/tests/test_initialization_data.py +0 -0
- {sharedbox-0.1.0 → sharedbox-0.2.4}/tests/test_numpy_support.py +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
release:
|
|
9
|
+
types: [ published ]
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build_wheels:
|
|
13
|
+
name: Build wheel for ${{ matrix.python }}-${{ matrix.platform_id }}
|
|
14
|
+
runs-on: ${{ matrix.os }}
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
include:
|
|
19
|
+
# Windows
|
|
20
|
+
- os: windows-latest
|
|
21
|
+
python: cp310
|
|
22
|
+
platform_id: win_amd64
|
|
23
|
+
- os: windows-latest
|
|
24
|
+
python: cp311
|
|
25
|
+
platform_id: win_amd64
|
|
26
|
+
- os: windows-latest
|
|
27
|
+
python: cp312
|
|
28
|
+
platform_id: win_amd64
|
|
29
|
+
- os: windows-latest
|
|
30
|
+
python: cp313
|
|
31
|
+
platform_id: win_amd64
|
|
32
|
+
|
|
33
|
+
# Linux x86_64
|
|
34
|
+
- os: ubuntu-latest
|
|
35
|
+
python: cp310
|
|
36
|
+
platform_id: manylinux_x86_64
|
|
37
|
+
- os: ubuntu-latest
|
|
38
|
+
python: cp311
|
|
39
|
+
platform_id: manylinux_x86_64
|
|
40
|
+
- os: ubuntu-latest
|
|
41
|
+
python: cp312
|
|
42
|
+
platform_id: manylinux_x86_64
|
|
43
|
+
- os: ubuntu-latest
|
|
44
|
+
python: cp313
|
|
45
|
+
platform_id: manylinux_x86_64
|
|
46
|
+
|
|
47
|
+
# Linux musllinux x86_64
|
|
48
|
+
- os: ubuntu-latest
|
|
49
|
+
python: cp310
|
|
50
|
+
platform_id: musllinux_x86_64
|
|
51
|
+
- os: ubuntu-latest
|
|
52
|
+
python: cp311
|
|
53
|
+
platform_id: musllinux_x86_64
|
|
54
|
+
- os: ubuntu-latest
|
|
55
|
+
python: cp312
|
|
56
|
+
platform_id: musllinux_x86_64
|
|
57
|
+
- os: ubuntu-latest
|
|
58
|
+
python: cp313
|
|
59
|
+
platform_id: musllinux_x86_64
|
|
60
|
+
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/checkout@v5
|
|
63
|
+
with:
|
|
64
|
+
fetch-depth: 0
|
|
65
|
+
ref: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}
|
|
66
|
+
|
|
67
|
+
- name: Build wheels
|
|
68
|
+
uses: pypa/cibuildwheel@v3.2.0
|
|
69
|
+
env:
|
|
70
|
+
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.platform_id }}
|
|
71
|
+
CIBW_CONTAINER_ENGINE: "docker; create_args: --shm-size=1g"
|
|
72
|
+
CIBW_TEST_REQUIRES: pytest numpy
|
|
73
|
+
CIBW_TEST_COMMAND: pytest {project}/tests
|
|
74
|
+
with:
|
|
75
|
+
package-dir: .
|
|
76
|
+
output-dir: wheelhouse
|
|
77
|
+
|
|
78
|
+
- name: Upload wheel artifacts
|
|
79
|
+
uses: actions/upload-artifact@v4
|
|
80
|
+
with:
|
|
81
|
+
name: cibw-wheels-${{ matrix.python }}-${{ matrix.platform_id }}
|
|
82
|
+
path: ./wheelhouse/*.whl
|
|
83
|
+
|
|
84
|
+
make_sdist:
|
|
85
|
+
name: Make SDist
|
|
86
|
+
runs-on: ubuntu-latest
|
|
87
|
+
needs: [build_wheels]
|
|
88
|
+
if: github.event_name == 'release' && github.event.action == 'published'
|
|
89
|
+
steps:
|
|
90
|
+
- uses: actions/checkout@v5
|
|
91
|
+
with:
|
|
92
|
+
fetch-depth: 0
|
|
93
|
+
ref: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}
|
|
94
|
+
|
|
95
|
+
- name: Build SDist
|
|
96
|
+
run: pipx run build --sdist
|
|
97
|
+
|
|
98
|
+
- uses: actions/upload-artifact@v4
|
|
99
|
+
with:
|
|
100
|
+
name: cibw-sdist
|
|
101
|
+
path: dist/*.tar.gz
|
|
102
|
+
|
|
103
|
+
upload_pypi:
|
|
104
|
+
name: Upload to PyPI
|
|
105
|
+
needs: [build_wheels, make_sdist]
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
environment: pypi
|
|
108
|
+
permissions:
|
|
109
|
+
id-token: write
|
|
110
|
+
if: github.event_name == 'release' && github.event.action == 'published'
|
|
111
|
+
steps:
|
|
112
|
+
- uses: actions/download-artifact@v5
|
|
113
|
+
with:
|
|
114
|
+
# unpacks all CIBW artifacts into dist/
|
|
115
|
+
pattern: cibw-*
|
|
116
|
+
path: dist
|
|
117
|
+
merge-multiple: true
|
|
118
|
+
|
|
119
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
Dates are marked as `DD-MM-YYYY`
|
|
9
|
+
|
|
10
|
+
## [0.2.2] - 05-10-2025
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Fix CI (again)
|
|
15
|
+
|
|
16
|
+
## [0.2.1] - 05-10-2025 (YANKED)
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Fix CI bug that was not uploading all wheels
|
|
21
|
+
|
|
22
|
+
## [0.2.0] - 05-10-2025 (YANKED)
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Rewrite codebase in nanobind
|
|
27
|
+
|
|
28
|
+
## [0.1.0] - 29-09-2025
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- Initial release
|
|
33
|
+
|
|
34
|
+
[0.2.2]: (https://github.com/jacopoabramo/sharedbox/compare/0.2.1...0.2.2)
|
|
35
|
+
[0.2.1]: (https://github.com/jacopoabramo/sharedbox/compare/0.2.0...0.2.1)
|
|
36
|
+
[0.2.0]: (https://github.com/jacopoabramo/sharedbox/compare/0.1.0...0.2.0)
|
|
37
|
+
[0.1.0]: (https://github.com/jacopoabramo/sharedbox/commits/0.1.0)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.15)
|
|
2
|
+
|
|
3
|
+
# Set vcpkg toolchain from VCPKG_ROOT environment variable
|
|
4
|
+
if(DEFINED ENV{VCPKG_ROOT})
|
|
5
|
+
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
|
6
|
+
CACHE STRING "Vcpkg toolchain file")
|
|
7
|
+
message(STATUS "Using vcpkg toolchain from VCPKG_ROOT: ${CMAKE_TOOLCHAIN_FILE}")
|
|
8
|
+
else()
|
|
9
|
+
message(FATAL_ERROR "VCPKG_ROOT environment variable is not set. Please install vcpkg and set VCPKG_ROOT to the vcpkg installation directory.")
|
|
10
|
+
endif()
|
|
11
|
+
|
|
12
|
+
project(${SKBUILD_PROJECT_NAME} LANGUAGES CXX C)
|
|
13
|
+
|
|
14
|
+
# Set C++ standard
|
|
15
|
+
set(CMAKE_CXX_STANDARD 17)
|
|
16
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
17
|
+
|
|
18
|
+
if (CMAKE_VERSION VERSION_LESS 3.18)
|
|
19
|
+
set(DEV_MODULE Development)
|
|
20
|
+
else()
|
|
21
|
+
set(DEV_MODULE Development.Module)
|
|
22
|
+
endif()
|
|
23
|
+
|
|
24
|
+
set(Python_ROOT_DIR "${CMAKE_SOURCE_DIR}/.venv")
|
|
25
|
+
find_package(Python 3.10 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)
|
|
26
|
+
|
|
27
|
+
message(STATUS "Using Python interpreter: ${Python_EXECUTABLE}")
|
|
28
|
+
|
|
29
|
+
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
30
|
+
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
|
|
31
|
+
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
32
|
+
endif()
|
|
33
|
+
|
|
34
|
+
execute_process(
|
|
35
|
+
COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
|
|
36
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE nanobind_ROOT
|
|
37
|
+
)
|
|
38
|
+
find_package(nanobind CONFIG REQUIRED)
|
|
39
|
+
|
|
40
|
+
find_package(Boost REQUIRED CONFIG)
|
|
41
|
+
|
|
42
|
+
message(STATUS "Found Boost version: ${Boost_VERSION}")
|
|
43
|
+
|
|
44
|
+
# Platform-specific compiler settings
|
|
45
|
+
if(WIN32)
|
|
46
|
+
set(PLATFORM_COMPILE_DEFS
|
|
47
|
+
BOOST_ALL_NO_LIB
|
|
48
|
+
_WIN32_WINNT=0x0601
|
|
49
|
+
WIN32_LEAN_AND_MEAN
|
|
50
|
+
NOMINMAX
|
|
51
|
+
)
|
|
52
|
+
set(PLATFORM_COMPILE_ARGS /EHsc /O2)
|
|
53
|
+
set(PLATFORM_LIBRARIES kernel32 user32 advapi32)
|
|
54
|
+
else()
|
|
55
|
+
set(PLATFORM_COMPILE_DEFS
|
|
56
|
+
BOOST_ALL_NO_LIB
|
|
57
|
+
_GNU_SOURCE
|
|
58
|
+
)
|
|
59
|
+
set(PLATFORM_COMPILE_ARGS -O3)
|
|
60
|
+
set(PLATFORM_LIBRARIES rt pthread)
|
|
61
|
+
endif()
|
|
62
|
+
|
|
63
|
+
# Create the _shareddict extension using nanobind
|
|
64
|
+
nanobind_add_module(_shareddict
|
|
65
|
+
NB_STATIC # Link nanobind statically
|
|
66
|
+
src/sharedbox/shareddict.cpp
|
|
67
|
+
src/sharedbox/_core/sharedmemory.cpp
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
target_include_directories(_shareddict PRIVATE
|
|
71
|
+
src/sharedbox
|
|
72
|
+
src/sharedbox/_core
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
target_compile_definitions(_shareddict PRIVATE ${PLATFORM_COMPILE_DEFS})
|
|
76
|
+
target_compile_options(_shareddict PRIVATE ${PLATFORM_COMPILE_ARGS})
|
|
77
|
+
|
|
78
|
+
# Link Boost (header-only, no library needed for interprocess/container) and platform libraries
|
|
79
|
+
target_link_libraries(_shareddict PRIVATE
|
|
80
|
+
Boost::headers # Boost header-only libraries
|
|
81
|
+
${PLATFORM_LIBRARIES}
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
# Generate stub file for the _shareddict module in the source folder
|
|
85
|
+
nanobind_add_stub(
|
|
86
|
+
_shareddict_stub
|
|
87
|
+
MODULE _shareddict
|
|
88
|
+
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/sharedbox/_shareddict.pyi
|
|
89
|
+
PYTHON_PATH $<TARGET_FILE_DIR:_shareddict>
|
|
90
|
+
DEPENDS _shareddict
|
|
91
|
+
MARKER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/src/sharedbox/py.typed
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# Install the extension to the sharedbox package
|
|
95
|
+
install(TARGETS _shareddict LIBRARY DESTINATION sharedbox)
|
|
96
|
+
|
|
97
|
+
# Install stub file and marker file from source folder
|
|
98
|
+
install(FILES
|
|
99
|
+
${CMAKE_CURRENT_SOURCE_DIR}/src/sharedbox/_shareddict.pyi
|
|
100
|
+
${CMAKE_CURRENT_SOURCE_DIR}/src/sharedbox/py.typed
|
|
101
|
+
DESTINATION sharedbox
|
|
102
|
+
)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sharedbox
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Python containers using shared memory.
|
|
5
|
-
Author-
|
|
5
|
+
Author-Email: Jacopo Abramo <jacopo.abramo@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
7
7
|
Classifier: Development Status :: 3 - Alpha
|
|
8
8
|
Classifier: Intended Audience :: Developers
|
|
@@ -14,19 +14,13 @@ Classifier: Programming Language :: C++
|
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE
|
|
18
|
-
Requires-Dist: numpy>=2.2.6
|
|
19
|
-
Provides-Extra: dev
|
|
20
|
-
Requires-Dist: pytest>=8.4.2; extra == "dev"
|
|
21
|
-
Requires-Dist: ruff>=0.13.1; extra == "dev"
|
|
22
|
-
Dynamic: license-file
|
|
23
17
|
|
|
24
18
|
# `sharedbox`
|
|
25
19
|
|
|
26
20
|
> [!WARNING]
|
|
27
21
|
> This project is a work in progress; be patient or feel free to contribute.
|
|
28
22
|
|
|
29
|
-
Python inter-process shared containers leveraging `boost::interprocess
|
|
23
|
+
Python inter-process shared containers leveraging the [`boost::interprocess`](https://www.boost.org/doc/libs/latest/doc/html/interprocess.html) library.
|
|
30
24
|
|
|
31
25
|
## Installation
|
|
32
26
|
|
|
@@ -110,42 +104,66 @@ shared_config.unlink()
|
|
|
110
104
|
The `examples/` folder contains some code examples on how to use the package.
|
|
111
105
|
|
|
112
106
|
## Building locally
|
|
107
|
+
|
|
113
108
|
### Requirements
|
|
114
109
|
|
|
115
110
|
- [`git`](https://git-scm.com/downloads)
|
|
116
111
|
- [`uv`](https://docs.astral.sh/uv/getting-started/installation/)
|
|
117
112
|
- Python >= 3.10
|
|
118
113
|
- [`vcpkg`](https://vcpkg.io/en/)
|
|
119
|
-
- `
|
|
120
|
-
- A C++17 compatible compiler
|
|
114
|
+
- [`CMake`](https://cmake.org/download/) >= 3.15
|
|
115
|
+
- A C++17 compatible compiler (MSVC on Windows, GCC on Linux)
|
|
121
116
|
|
|
122
|
-
|
|
117
|
+
> [!NOTE]
|
|
118
|
+
> The build system automatically detects `vcpkg` and installed libraries through the `VCPKG_ROOT` environment variable.
|
|
119
|
+
> Make sure it's set before building.
|
|
123
120
|
|
|
124
|
-
|
|
125
|
-
# for Windows it is reccomended to install it in C:\
|
|
126
|
-
cd C:\
|
|
121
|
+
### Install and configure vcpkg
|
|
127
122
|
|
|
128
|
-
|
|
129
|
-
cd vcpkg && bootstrap-vcpkg.bat
|
|
130
|
-
```
|
|
123
|
+
First, [install and bootstrap vcpkg](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-cmd) somewhere in your system.
|
|
131
124
|
|
|
132
|
-
|
|
125
|
+
#### Windows
|
|
126
|
+
```cmd
|
|
127
|
+
# It is recommended to install in C:\
|
|
128
|
+
cd C:\
|
|
129
|
+
git clone https://github.com/microsoft/vcpkg.git
|
|
130
|
+
cd vcpkg
|
|
131
|
+
bootstrap-vcpkg.bat
|
|
133
132
|
|
|
134
|
-
|
|
133
|
+
# Set the VCPKG_ROOT environment variable (permanently)
|
|
134
|
+
setx VCPKG_ROOT "C:\vcpkg"
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
# Add vcpkg to your PATH (permanently)
|
|
137
|
+
setx PATH "%PATH%;C:\vcpkg"
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
#### Linux
|
|
141
|
+
You can use the `install-vcpkg.sh` script which will
|
|
142
|
+
automatically install `vcpkg` in the `/opt` folder
|
|
143
|
+
and set the `VCPKG_ROOT` environment variable.
|
|
144
|
+
The script must be run with super user priviledges:
|
|
141
145
|
|
|
146
|
+
```bash
|
|
147
|
+
sudo bash install-vcpkg.sh
|
|
142
148
|
```
|
|
149
|
+
|
|
150
|
+
### Install `boost-interprocess`
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# From anywhere (vcpkg should be in PATH)
|
|
143
154
|
vcpkg install boost-interprocess
|
|
144
155
|
```
|
|
145
156
|
|
|
146
|
-
|
|
157
|
+
### Build the package
|
|
147
158
|
|
|
148
|
-
|
|
159
|
+
Clone this repository and install using `uv`:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Clone the repository
|
|
163
|
+
git clone https://github.com/jacopoabramo/sharedbox.git
|
|
164
|
+
cd sharedbox
|
|
165
|
+
|
|
166
|
+
# Create virtual environment and install in development mode
|
|
149
167
|
uv venv --python 3.10
|
|
150
168
|
uv pip install -e .[dev]
|
|
151
169
|
```
|
|
@@ -153,3 +171,5 @@ uv pip install -e .[dev]
|
|
|
153
171
|
## License
|
|
154
172
|
|
|
155
173
|
Licensed under [Apache 2.0](./LICENSE)
|
|
174
|
+
|
|
175
|
+
`sharedbox` is built using the Boost C++ library, which is licensed under the [Boost Software License](https://boost.org.cpp.al/LICENSE_1_0.txt).
|
|
@@ -1,32 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: sharedbox
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Python containers using shared memory.
|
|
5
|
-
Author-email: Jacopo Abramo <jacopo.abramo@gmail.com>
|
|
6
|
-
License-Expression: Apache-2.0
|
|
7
|
-
Classifier: Development Status :: 3 - Alpha
|
|
8
|
-
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
-
Classifier: Programming Language :: C++
|
|
14
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
Requires-Python: >=3.10
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE
|
|
18
|
-
Requires-Dist: numpy>=2.2.6
|
|
19
|
-
Provides-Extra: dev
|
|
20
|
-
Requires-Dist: pytest>=8.4.2; extra == "dev"
|
|
21
|
-
Requires-Dist: ruff>=0.13.1; extra == "dev"
|
|
22
|
-
Dynamic: license-file
|
|
23
|
-
|
|
24
1
|
# `sharedbox`
|
|
25
2
|
|
|
26
3
|
> [!WARNING]
|
|
27
4
|
> This project is a work in progress; be patient or feel free to contribute.
|
|
28
5
|
|
|
29
|
-
Python inter-process shared containers leveraging `boost::interprocess
|
|
6
|
+
Python inter-process shared containers leveraging the [`boost::interprocess`](https://www.boost.org/doc/libs/latest/doc/html/interprocess.html) library.
|
|
30
7
|
|
|
31
8
|
## Installation
|
|
32
9
|
|
|
@@ -110,42 +87,66 @@ shared_config.unlink()
|
|
|
110
87
|
The `examples/` folder contains some code examples on how to use the package.
|
|
111
88
|
|
|
112
89
|
## Building locally
|
|
90
|
+
|
|
113
91
|
### Requirements
|
|
114
92
|
|
|
115
93
|
- [`git`](https://git-scm.com/downloads)
|
|
116
94
|
- [`uv`](https://docs.astral.sh/uv/getting-started/installation/)
|
|
117
95
|
- Python >= 3.10
|
|
118
96
|
- [`vcpkg`](https://vcpkg.io/en/)
|
|
119
|
-
- `
|
|
120
|
-
- A C++17 compatible compiler
|
|
97
|
+
- [`CMake`](https://cmake.org/download/) >= 3.15
|
|
98
|
+
- A C++17 compatible compiler (MSVC on Windows, GCC on Linux)
|
|
121
99
|
|
|
122
|
-
|
|
100
|
+
> [!NOTE]
|
|
101
|
+
> The build system automatically detects `vcpkg` and installed libraries through the `VCPKG_ROOT` environment variable.
|
|
102
|
+
> Make sure it's set before building.
|
|
123
103
|
|
|
124
|
-
|
|
125
|
-
# for Windows it is reccomended to install it in C:\
|
|
126
|
-
cd C:\
|
|
104
|
+
### Install and configure vcpkg
|
|
127
105
|
|
|
128
|
-
|
|
129
|
-
cd vcpkg && bootstrap-vcpkg.bat
|
|
130
|
-
```
|
|
106
|
+
First, [install and bootstrap vcpkg](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-cmd) somewhere in your system.
|
|
131
107
|
|
|
132
|
-
|
|
108
|
+
#### Windows
|
|
109
|
+
```cmd
|
|
110
|
+
# It is recommended to install in C:\
|
|
111
|
+
cd C:\
|
|
112
|
+
git clone https://github.com/microsoft/vcpkg.git
|
|
113
|
+
cd vcpkg
|
|
114
|
+
bootstrap-vcpkg.bat
|
|
133
115
|
|
|
134
|
-
|
|
116
|
+
# Set the VCPKG_ROOT environment variable (permanently)
|
|
117
|
+
setx VCPKG_ROOT "C:\vcpkg"
|
|
135
118
|
|
|
136
|
-
|
|
137
|
-
|
|
119
|
+
# Add vcpkg to your PATH (permanently)
|
|
120
|
+
setx PATH "%PATH%;C:\vcpkg"
|
|
138
121
|
```
|
|
139
122
|
|
|
140
|
-
|
|
123
|
+
#### Linux
|
|
124
|
+
You can use the `install-vcpkg.sh` script which will
|
|
125
|
+
automatically install `vcpkg` in the `/opt` folder
|
|
126
|
+
and set the `VCPKG_ROOT` environment variable.
|
|
127
|
+
The script must be run with super user priviledges:
|
|
141
128
|
|
|
129
|
+
```bash
|
|
130
|
+
sudo bash install-vcpkg.sh
|
|
142
131
|
```
|
|
132
|
+
|
|
133
|
+
### Install `boost-interprocess`
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# From anywhere (vcpkg should be in PATH)
|
|
143
137
|
vcpkg install boost-interprocess
|
|
144
138
|
```
|
|
145
139
|
|
|
146
|
-
|
|
140
|
+
### Build the package
|
|
147
141
|
|
|
148
|
-
|
|
142
|
+
Clone this repository and install using `uv`:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Clone the repository
|
|
146
|
+
git clone https://github.com/jacopoabramo/sharedbox.git
|
|
147
|
+
cd sharedbox
|
|
148
|
+
|
|
149
|
+
# Create virtual environment and install in development mode
|
|
149
150
|
uv venv --python 3.10
|
|
150
151
|
uv pip install -e .[dev]
|
|
151
152
|
```
|
|
@@ -153,3 +154,5 @@ uv pip install -e .[dev]
|
|
|
153
154
|
## License
|
|
154
155
|
|
|
155
156
|
Licensed under [Apache 2.0](./LICENSE)
|
|
157
|
+
|
|
158
|
+
`sharedbox` is built using the Boost C++ library, which is licensed under the [Boost Software License](https://boost.org.cpp.al/LICENSE_1_0.txt).
|