Cross-platform service management library for Linux, macOS, and Windows
Project description
Service Manager
A cross-platform library for installing and managing services on Windows, macOS, and Linux.
Overview
The Service Manager library provides a unified interface for managing system services across different operating systems. It follows standard service management conventions, allowing you to:
- Install/uninstall services
- Enable/disable services at boot time
- Start/stop running services
- Query service status
It creates user-level services (not system-wide root services), which means:
- Linux: User systemd services (
systemctl --user) - macOS: LaunchAgents (
~/Library/LaunchAgents) - Windows: Scheduled Tasks (running on user login)
Installation
pip install etiket-service-manager
Pre-configured Services
This library includes pre-configured service definitions for the QHarbor application suite. These helper functions automatically set up the correct paths, executable locations, and naming conventions for QHarbor's sync components.
from etiket_service_manager.services import sync_agent, sync_api
from packaging.version import Version
# Get the manager for the Sync Agent
agent_manager = sync_agent.get_service()
agent_manager.status # Check status
# Install — no need to pass program_arguments, the config carries them
agent_manager.install(version=Version("1.0.0"))
# Get the manager for the Sync API
api_manager = sync_api.get_service()
api_manager.install(version=Version("1.0.0"))
The pre-configured services resolve their executable via default_runner_install_location(), which knows the canonical location of the runner on each OS:
| Platform | Data directory (app_dir) |
Runner executable |
|---|---|---|
| macOS | ~/Library/Application Support/qharbor |
~/Applications/qharbor/eTiKeT Service.app/Contents/MacOS/etiket_service_runner |
| Linux | ~/.local/share/qharbor (or $XDG_DATA_HOME/qharbor) |
<app_dir>/etiket_service_runner |
| Windows | %LOCALAPPDATA%\qharbor |
<app_dir>\etiket_service_runner.exe |
On macOS the runner ships as a code-signed .app bundle so it's identifiable to Gatekeeper, TCC, and System Settings (Privacy & Security → Full Disk Access). On Linux and Windows the bare binary lives in the per-user data directory.
Actions and Behaviors
The following table describes each action, its expected behavior, possible errors, and resulting service states:
| Action | Description | Possible Errors | Expected Status After Action |
|---|---|---|---|
| install | Installs, enables, and starts the service | ServiceAlreadyInstalled, ServiceOperationError |
installed=True, enabled=True, running=True |
| enable | Enables the service to start automatically at boot | ServiceAlreadyEnabled, ServiceOperationError |
installed=True, enabled=True, running=unchanged |
| start | Starts the service | ServiceAlreadyStarted, ServiceOperationError |
installed=True, enabled=unchanged, running=True |
| stop | Stops the service | ServiceAlreadyStopped, ServiceOperationError |
installed=True, enabled=unchanged, running=False |
| disable | Disables the service (prevents starting at boot) | ServiceAlreadyDisabled, ServiceOperationError |
installed=True, enabled=False, running=False |
| uninstall | Uninstalls the service | ServiceAlreadyUnInstalled, ServiceOperationError |
installed=False, enabled=False, running=False |
Configuring the Service Manager
To use the Service Manager for your own applications, you need to create a ServiceConfig object. exe_install_location is required and uses a PlatformPath so the same config works across OSes — the entry matching the running OS is selected at install time.
from pathlib import Path
from etiket_service_manager import PlatformPath, ServiceConfig, ServiceManager
config = ServiceConfig(
service_name="my_service",
app_dir=Path.home() / ".my_service", # Runtime data: logs, state
exe_install_location=PlatformPath(
darwin=Path("/Applications/MyService.app/Contents/MacOS/my_service"),
linux=Path.home() / ".local/bin/my_service",
windows=Path.home() / "AppData/Local/MyService/my_service.exe",
),
default_args=["--serve"], # Optional: appended to the executable
)
manager = ServiceManager(config)
ServiceConfig fields
| Field | Type | Required | Purpose |
|---|---|---|---|
service_name |
str |
yes | Service identifier (used in plist label, systemd unit name, scheduled task name). |
app_dir |
Path |
yes | Per-service runtime directory for logs and state. Created if missing. |
exe_install_location |
PlatformPath |
yes | Per-OS absolute path to the installed executable. Resolved to a single path at install time. |
default_args |
list[str] | None |
no | Arguments appended after the resolved executable when manager.install() is called without program_arguments. |
PlatformPath
A dataclass that holds one path per OS and resolves to the correct one based on platform.system():
from etiket_service_manager import PlatformPath
p = PlatformPath(
darwin=Path("/usr/local/bin/foo"),
linux=Path("/usr/bin/foo"),
windows=Path(r"C:\Program Files\foo\foo.exe"),
)
p.resolve() # → the path matching the running OS
Example Usage
from pathlib import Path
from packaging.version import Version
from etiket_service_manager import PlatformPath, ServiceConfig, ServiceManager
def main():
# 1. Configure: declare where the executable lives on each OS and the
# default invocation. The same config works across all three OSes.
config = ServiceConfig(
service_name="my_service",
app_dir=Path.home() / ".my_service",
exe_install_location=PlatformPath(
darwin=Path("/Applications/MyService.app/Contents/MacOS/my_service"),
linux=Path.home() / ".local/bin/my_service",
windows=Path.home() / "AppData/Local/MyService/my_service.exe",
),
default_args=["--serve"],
)
manager = ServiceManager(config)
# 2. Install. With exe_install_location + default_args set on the config,
# program_arguments is inferred — no need to pass it.
manager.install(
version=Version("1.0.0"),
raise_if_already_installed=True,
)
# If you need a one-off override, pass program_arguments explicitly:
# manager.install(version=Version("1.0.0"),
# program_arguments=["/custom/path", "--debug"])
# 3. Check status
print(f"Service status: {manager.status}")
# 4. Stop / disable / uninstall as needed
manager.stop()
manager.disable()
manager.uninstall()
if __name__ == "__main__":
main()
Platform Specific Details
Windows Services
This application is implemented as a Scheduled Task rather than a Windows service. A scheduled task can run without administrator permissions, unlike Windows services.
The scheduled task:
- Runs as a background process with
wscript(hidden window). - Starts automatically when the user logs in.
- Provides support for process recovery when it terminates unexpectedly.
Requirements
- The service name is used as the Task Name.
- Tasks are created with "LeastPrivilege" run level, so no UAC prompt is needed.
Logging
- Behavior: Unlike Linux/macOS, Windows Task Scheduler does not capture or redirect Standard Output (
stdout) or Error (stderr). Any output printed to the console is lost. - Requirement: Your application must internally handle logging to files.
- Do not rely on
print(). - Use a logging library (e.g., Python's
loggingmodule) to write directly to a file.
- Do not rely on
- Suggested Location:
{app_dir}/logs/to match other platforms.
macOS Services
This document outlines the process for creating and managing macOS services using launchctl. These services run in the GUI session of the logged-in user (LaunchAgents).
Installation Locations
- Service configuration file:
~/Library/LaunchAgents/com.quantum-machines.{service_name}.plist - Executable: ship as a code-signed
.appbundle in~/Applications/{company}/{app_name}.app(per-user, no admin required, Finder-discoverable for Privacy & Security grants) or/Applications/{app_name}.app(system-wide). For QHarbor'setiket_service_runnerthe canonical path is~/Applications/qharbor/eTiKeT Service.app/Contents/MacOS/etiket_service_runner. - Runtime data (
app_dir): kept separate from the executable, in~/Library/Application Support/{company}/. - Logs:
{app_dir}/{service_name}_logs/
[!IMPORTANT] Ship the executable as a
.appbundle (withCFBundleIdentifier,CFBundleExecutable,LSUIElement=truefor background services, and anyNSXxxUsageDescriptionkeys the agent needs). Bare Mach-O binaries cannot be cleanly granted permissions in System Settings → Privacy & Security and don't trigger TCC prompts with usable descriptions. The bundle ID + signing identity are what TCC keys grants on, so keep them stable across releases.
[!IMPORTANT] The service is configured with
WorkingDirectoryset to theapp_dir. If your application uses relative paths for resources or imports, the executable still belongs in the.appbundle —app_diris for runtime data only.
The service definition (plist) includes:
KeepAlive: True (system attempts to restart it if it crashes)RunAtLoad: True (starts immediately upon load/login)ThrottleInterval: 60 seconds
Linux Services
Service in Linux are implemented using systemd user services. This is a robust system that works very well for user-level background processes.
Locations
- Configuration: The systemd user unit file (
{service_name}.service) is created in~/.config/systemd/user/. - Logs: Managed by systemd. View logs using:
journalctl --user -u {service_name}
- Use
-fto follow logs in real-time. - Use
-eto jump to the end.
- Use
- Application Binary: The application executable should be in a stable, user-accessible location.
- Recommended:
~/.local/bin/for standalone binaries. - Note: Self-contained application directories often reside in
~/.local/share/. - Important: Always provide the absolute path to the executable when installing the service.
- Recommended:
Behavior
- Uses
systemctl --usercommands to manage the service. - defined as
Type=simple. - Configured with
Restart=alwaysand a 5-second delay to ensure reliability.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file etiket_service_manager-0.3.0b2-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 677.0 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
133eb660ce983f2f9c3d050c16f06b6ff570e755d23f09f4ea6a07500242768c
|
|
| MD5 |
eb876249852ee5d7d792896815f32ca4
|
|
| BLAKE2b-256 |
34665b8660ee4f64dc21ff78612493fa931c13a3bee98654adc02941b74b0a50
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
665f53c5bf19e1bfb3dac1a029b0289b83f8002e36d0483f68102e6762d0143e
|
|
| MD5 |
9083260f71fd5c7090fbead25ce8f7a4
|
|
| BLAKE2b-256 |
992259d2ad6ea021e9acc799cff312ba7da0b1f363e912845b2a60af8ab00a20
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp314-cp314-macosx_11_0_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp314-cp314-macosx_11_0_x86_64.whl
- Upload date:
- Size: 746.1 kB
- Tags: CPython 3.14, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46456b72a89b541d04579f1ca4e3bfc59d3ef67958b04c9bcd794840b54a6583
|
|
| MD5 |
39a7f449dafc2b11bde5c793edd0b4b3
|
|
| BLAKE2b-256 |
670cd42636a73b817849591410e1b0a816d989734ea056b3e8479a6402056956
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 691.0 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39b7d22f1bca681d8866b61ff50d5fa1099b998c0179ddc2d993cb081cf95480
|
|
| MD5 |
6038afb461d74481b6a98a6b9d806663
|
|
| BLAKE2b-256 |
f1137a8ea3ef3800e19ae5de3ed0862f9438b47932a330a3838189b021c9d24c
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 660.6 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5f375fc7c8f22066de5499d3a579775f28a2f9153ecaa148d3290ff646e739b
|
|
| MD5 |
e69090a1f228757c43fa32b2c4e4d3e2
|
|
| BLAKE2b-256 |
5389013a7d724f6e0e1fb61f211026908308735becd46ab39c0259c2068601f3
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c693b1cdb70fef5fbf08b6bd9197deb181ffb01e45f3f51e74280f369bb22852
|
|
| MD5 |
7f181c3e36f1b044869ed2fa241794f9
|
|
| BLAKE2b-256 |
9ed57020502f2db10ab4c2befef33d74d53e84ed67f22e35213163da26a8eaf1
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp313-cp313-macosx_11_0_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp313-cp313-macosx_11_0_x86_64.whl
- Upload date:
- Size: 745.8 kB
- Tags: CPython 3.13, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
854fdb5f668d0ae7010b1d05a673dace00559164988dd5bb704b19aa1706205b
|
|
| MD5 |
e359c2dab683456063ee40fb26d87458
|
|
| BLAKE2b-256 |
bdcf2b8a2b204207d6e49697f88a21d9c99b785fa60719240648a635b95ed5df
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 686.6 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63ccdd072c405199ee35c4433f10eee3bc429045022d5eef366851d710163896
|
|
| MD5 |
e694c25f4db949d846e711744613cbd9
|
|
| BLAKE2b-256 |
2b17d5184294c284d34b45e4477a5a08513aeb6115135df6fc4977f1873f0b13
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 674.8 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
681dd0cd93ecde9dd42631cf88f2a5b4968f10b8bb62cebc6032c7d8a86c6a0b
|
|
| MD5 |
976a03ba42eece0ce9b6b69c2696429a
|
|
| BLAKE2b-256 |
d5b88702960ed94ecfbea42c4fbbb5de8b79731142e165074192bbb306d49a78
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9537e63fe9fb012a99917e1eb580082f1a696771dce7170771930c3394bc8672
|
|
| MD5 |
21b39ba897fab8da785138d247cdaac8
|
|
| BLAKE2b-256 |
9029b013153631cc7090a2b018651bc8a58c689d6432868b3d3ed255c604a13d
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp312-cp312-macosx_11_0_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp312-cp312-macosx_11_0_x86_64.whl
- Upload date:
- Size: 753.3 kB
- Tags: CPython 3.12, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
657baf36450881d150a3d6b2eb547bbdeb27cbdcbfa64fe1d4b24becc0a1d6bd
|
|
| MD5 |
d3f8e6e57e66b4c09d6abcb7e558ff53
|
|
| BLAKE2b-256 |
3c1b8f69775ece035b0c7a3129b88cb90cae4611c261356e14f2447d238669fa
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 697.3 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
225d8d255f9d9750d068da1ff47d84def528afd8f44285d8e7f09b1f70594bd9
|
|
| MD5 |
d87778fad4020ed3dcf830777c6bfced
|
|
| BLAKE2b-256 |
8ae4289cbfeb524fa9df8a64c569a3bde08fa1db0298edc3cfb57a0e44a52775
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 689.8 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb8be999a110e371c9e85284a1b47571228fa31b2d12dfea3144c65a1bf35490
|
|
| MD5 |
e31962687688c0e2277a732233947780
|
|
| BLAKE2b-256 |
9bc57633e93a28ace04c726634746ef580f02ee3267400295289bbd3ab9041aa
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e85d1d13096faec4529487693d8b8a5676006634d7fee3553ed607287472a7d3
|
|
| MD5 |
58a175a8ac8b3bf1059b0f4f692a25e3
|
|
| BLAKE2b-256 |
f72075d9cfd5b56e6941c0ed58483b0a1dd8aab01896600de76b654549ade3f2
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp311-cp311-macosx_11_0_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp311-cp311-macosx_11_0_x86_64.whl
- Upload date:
- Size: 765.3 kB
- Tags: CPython 3.11, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2380b91d16fb6d68ee089f468fe2fa9c8789320aebcfc437563798beb58b851a
|
|
| MD5 |
437d8302c4d6eb908797a9f3721a45a4
|
|
| BLAKE2b-256 |
3c7353164460794bb3e0090e2753ac71e478f253d778b36f3e197aaa3f2d5201
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 711.0 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d87e21c73f42e45f1327bf005443842a4d5e8935fc1ae124fe19e4f53420665e
|
|
| MD5 |
6e1294c42be90931a743507ae8ff49f3
|
|
| BLAKE2b-256 |
cad77460ad8fe37306b22cf45f28ed7c67e18374c24dbdd6e010a7f08718c900
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 687.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e18b33462224314d49e2b851ab85782d13c4776c3be274ed8360b6cb98c26fe0
|
|
| MD5 |
ffd8eda7623330ae7bcb35cb703eae7d
|
|
| BLAKE2b-256 |
10d1fc4622e1f3b20050158d4514eac126f62b304c7d89a0df997d59a8c96cb0
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09c95778ed0abbdb68ad7713bb5d23379e1b9b330edbbed600ae28979c434f50
|
|
| MD5 |
eb6967e0a8c95f2f0faebc098e24aa2f
|
|
| BLAKE2b-256 |
70aeb3086940baa520ba112d345a783b2767931a7dab03ad33f7c5a2d64d43d1
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp310-cp310-macosx_11_0_x86_64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp310-cp310-macosx_11_0_x86_64.whl
- Upload date:
- Size: 772.5 kB
- Tags: CPython 3.10, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c70c058396850bd73e004ceedff47cb5be010bced76feb85cadb91aab76f7d4b
|
|
| MD5 |
9883b2d55d069c8a567845c994b59b70
|
|
| BLAKE2b-256 |
a5e713689c4497a7f51eb2f93bbe222c0b9ff570321c683c519d9913bf5ab5a9
|
File details
Details for the file etiket_service_manager-0.3.0b2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: etiket_service_manager-0.3.0b2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 718.2 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04b42cf846ecdf5a18f9dee8bb6bf385d06bcad4a44b2ab97215f6688d507c2b
|
|
| MD5 |
f45c8b9be41fc4f8fd3eb6f2d7ab07f0
|
|
| BLAKE2b-256 |
1628c07fd4068ce7a412a18dd60cee212a3831c88100b2f9d3d56bed9ca53b85
|