Skip to main content

Cross-platform Password Manager with Web UI & Kubernetes Integration - Works everywhere! macOS Keychain, Linux Secret Service, Windows Credential Locker, or encrypted file storage. Native K8s secret sync, Helm integration, zero dependencies required.

Project description

kcpwd Logo

PyPI version Python Version License

kcpwd

Cross-platform Keychain Password Manager CLI, Library & Web UI with Kubernetes Integration - A powerful password manager for macOS, Linux, and Windows with native system keyring support, modern web interface, and native Kubernetes secret management.

Installation

Basic Installation

pip install kcpwd

With Web UI

pip install 'kcpwd[ui]'

Windows Enhanced (Recommended)

pip install 'kcpwd[ui]'
pip install pywin32  # For better clipboard support

From Source

git clone https://github.com/osmanuygar/kcpwd.git
cd kcpwd
pip install -e .[ui]  # Install with UI support

Quick Start

CLI Usage

# Check platform support and configuration
kcpwd info

# Store a password
kcpwd set github_token ghp_xxxxxxxxxxxx

# Retrieve password (copies to clipboard automatically)
kcpwd get github_token

# Generate strong password
kcpwd generate -l 20 -s myapp

# List all passwords
kcpwd list

๐ŸŒ Web UI Usage

# Start the web UI
kcpwd ui

# Custom port
kcpwd ui --port 8000

# With persistent secret
export KCPWD_UI_SECRET="your-secure-secret"
kcpwd ui

Then open your browser to http://localhost:8765 and enter the UI secret shown in the terminal.

Platform Support

macOS

  • โœ… Native macOS Keychain integration
  • โœ… Automatic clipboard copying with pbcopy
  • โœ… Full feature support
  • โœ… Web UI support
  • โœ… Kubernetes integration

Linux

  • โœ… Works immediately - no setup required!
  • โœ… Auto-detects system keyring (gnome-keyring, KWallet, etc.)
  • โœ… Falls back to encrypted file storage if no keyring
  • โœ… Optional clipboard support via xclip, xsel, or wl-copy (auto-detected)
  • โœ… Perfect for Docker, CI/CD, headless servers
  • โœ… Web UI support
  • โœ… Kubernetes integration
  • ๐Ÿ“ฆ Zero required dependencies (secretstorage optional for system keyring)

Windows

  • โœ… Native Windows Credential Locker integration
  • โœ… Automatic clipboard copying via clip.exe or pywin32
  • โœ… Full feature support
  • โœ… Web UI support
  • โœ… Kubernetes integration
  • โœ… Works on Windows 10, 11, and Server editions
  • ๐Ÿ“ฆ Optional pywin32 for enhanced clipboard support

Platform-Specific Requirements

Linux (Optional)

kcpwd works out of the box on Linux! For enhanced security with system keyring:

Ubuntu/Debian:

# Optional: System keyring (more secure)
sudo apt install gnome-keyring

# Optional: Clipboard support
sudo apt install xclip  # or xsel or wl-clipboard

Fedora:

# Optional: System keyring
sudo dnf install gnome-keyring

# Optional: Clipboard support
sudo dnf install xclip  # or xsel

Arch:

# Optional: System keyring
sudo pacman -S gnome-keyring

# Optional: Clipboard support
sudo pacman -S xclip  # or xsel

Wayland users:

# Use wl-clipboard for clipboard support
sudo apt install wl-clipboard  # Debian/Ubuntu
sudo dnf install wl-clipboard  # Fedora
sudo pacman -S wl-clipboard   # Arch

Windows (Optional)

For enhanced clipboard support:

pip install pywin32

Note: Windows Credential Locker is built into Windows 10/11, no additional setup needed!

โŽˆ Kubernetes Usage

# Sync a password to K8s
kcpwd k8s sync prod_db --namespace production

# Sync all passwords
kcpwd k8s sync-all --namespace production

# Import from K8s
kcpwd k8s import db-credentials --namespace production

# Watch mode (auto-sync)
kcpwd k8s watch --namespace production

# List K8s secrets
kcpwd k8s list --namespace production

Kubernetes Integration Deep Dive

Common Commands

Sync Single Password

# Basic sync
kcpwd k8s sync prod_db --namespace production

# Custom secret name
kcpwd k8s sync api_key --secret-name my-api-secret --namespace myapp

# Master-protected password
kcpwd k8s sync secure_db --master-password MY_MASTER_PASS --namespace prod

# With custom labels
kcpwd k8s sync db_pass --label app=myapp --label tier=backend

Sync All Passwords

# Sync all passwords to a namespace
kcpwd k8s sync-all --namespace production

# Sync only passwords with prefix
kcpwd k8s sync-all --prefix prod_ --namespace production

# Skip master-protected passwords
kcpwd k8s sync-all --skip-master --namespace dev

Import from Kubernetes

# Import a secret to kcpwd
kcpwd k8s import db-credentials --namespace production

# Import with custom kcpwd key name
kcpwd k8s import api-secret --key my_api_key

# Import and protect with master password
kcpwd k8s import prod-db --master-password

Watch Mode (Auto-sync)

# Auto-sync every 60 seconds
kcpwd k8s watch --namespace production

# Custom interval
kcpwd k8s watch --namespace myapp --interval 120

# With prefix filter
kcpwd k8s watch --prefix prod_ --namespace production

Use Cases Overview

Common Scenarios:

  • โœ… CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins)
  • โœ… GitOps workflows (ArgoCD, Flux)
  • โœ… Local development (Minikube, Kind)
  • โœ… Multi-environment deployments
  • โœ… Blue-green and canary deployments
  • โœ… Secret rotation automation
  • โœ… Disaster recovery and backups

๐Ÿ“š Complete Usage Examples โ†’

Quick example - CI/CD Pipeline:

# GitHub Actions
- name: Sync secrets
  run: |
    pip install kcpwd
    kcpwd set db_password "${{ secrets.DB_PASSWORD }}"
    kcpwd k8s sync-all --namespace production

Helm Integration

Use kcpwd passwords directly in Helm values:

# values.yaml
database:
  password: "{{ kcpwd('db_password') }}"
api:
  key: "{{ kcpwd('api_key') }}"
production:
  secret: "{{ kcpwd('prod_secret', master=true) }}"
# Process and deploy
kcpwd helm template values.yaml -o values-processed.yaml
helm install myapp ./chart -f values-processed.yaml

๐Ÿ“š Helm Integration Examples โ†’

Usage

Platform Information

# Check your platform configuration
kcpwd info

# Output example (macOS):
# ๐Ÿ”ง Platform Information
# ========================================
# Platform: macOS
# Supported: โœ“ Yes
# 
# ๐Ÿ” Storage Backend
# ========================================
# Type: System Keyring
# Backend: Keyring
# Status: โœ“ Active (OS-native secure storage)
# 
# ๐Ÿ“‹ Clipboard
# ========================================
# Status: โœ“ Available
# 
# ๐Ÿ’ก macOS Notes:
#   โ€ข Using macOS Keychain (native integration)
#   โ€ข View passwords: Keychain Access app
#   โ€ข Command line: security find-generic-password -s kcpwd

CLI Commands

Store a password

# Regular password
kcpwd set dbadmin asd123

# With master password protection
kcpwd set prod_db secret --master-password

# Or shorthand:
kcpwd set-master prod_db secret123

# Check password strength before saving
kcpwd set myapi weak123 --check-strength

Retrieve a password

All platforms (automatic clipboard):

kcpwd get dbadmin
# Output: โœ“ Password for 'dbadmin' copied to clipboard

Print to stdout (all platforms):

kcpwd get dbadmin --print

Linux - pipe to clipboard:

# For X11 (if xclip installed):
kcpwd get dbadmin | xclip -selection clipboard

# For Wayland (wl-clipboard):
kcpwd get dbadmin | wl-copy

Generate passwords

# Generate with automatic strength check
kcpwd generate

# Generate and save
kcpwd generate -s myapi

# Generate 20-character password
kcpwd generate -l 20

# Generate without symbols
kcpwd generate --no-symbols

# Generate 6-digit PIN
kcpwd generate -l 6 --no-uppercase --no-lowercase --no-symbols

Password Sharing

# Share a password temporarily (Web UI feature)
# 1. Start Web UI: kcpwd ui
# 2. Go to "Share" tab
# 3. Select password and duration
# 4. Get secure link: http://localhost:8765/s/ABC123

๐Ÿ“š Complete Usage Examples โ†’

Web UI

# Start web UI (default: http://127.0.0.1:8765)
kcpwd ui

# Custom host and port
kcpwd ui --host 0.0.0.0 --port 8000

# Set persistent secret
export KCPWD_UI_SECRET="my-secure-secret-key"
kcpwd ui

# Open browser automatically (default: yes)
kcpwd ui --no-open-browser  # Don't open browser

Exporting Passwords

# Export environment variables
kcpwd export-env [OPTIONS]
  -k, --keys TEXT         Specific keys to export
  -p, --prefix TEXT       Variable name prefix
  --uppercase/--no-uppercase  Convert to uppercase (default: yes)
  -f, --format [export|set|plain]  Output format

# Generate .env file
kcpwd generate-env [OUTPUT_PATH] [OPTIONS]
  -k, --keys TEXT         Specific keys to include
  -p, --prefix TEXT       Variable name prefix
  --uppercase/--no-uppercase  Convert to uppercase
  --no-comments          Skip header comments
  -f, --force            Overwrite without confirmation
# Store credentials
kcpwd set aws_key AKIAIOSFODNN7EXAMPLE
kcpwd set aws_secret wJalrXUtnFEMI/K7MDENG

# Export and use
eval $(kcpwd export-env --prefix "SPARK_")
pyspark --conf "spark.hadoop.fs.s3a.access.key=$SPARK_AWS_KEY"

Library Usage

Basic Operations

from kcpwd import set_password, get_password, delete_password

# Store password
set_password("my_database", "secret123")

# Retrieve password
password = get_password("my_database")
print(password)  # Output: secret123

# Delete password
delete_password("my_database")

Platform Detection

from kcpwd import get_platform, get_platform_name, check_platform_requirements

# Get current platform
platform = get_platform()  # 'macos', 'linux', or 'windows'
print(f"Running on: {get_platform_name()}")

# Check platform requirements
status = check_platform_requirements()
print(f"Supported: {status['supported']}")
print(f"Keyring: {status['keyring_backend']}")
print(f"Clipboard: {status['clipboard_available']}")

Master Password Protection

from kcpwd.master_protection import (
    set_master_password,
    get_master_password,
    has_master_password,
    list_master_keys
)

# Store with master password
set_master_password("prod_db", "super_secret", "MyMasterPass123!")

# Retrieve
password = get_master_password("prod_db", "MyMasterPass123!")

# Check if master-protected
if has_master_password("prod_db"):
    print("This password needs master password")

# List all master-protected keys
keys = list_master_keys()

Kubernetes Integration

from kcpwd.k8s import sync_to_k8s, sync_all_to_k8s, import_from_k8s

# Sync single password
result = sync_to_k8s(
    key="prod_db",
    namespace="production",
    secret_name="database-credentials",
    labels={"app": "myapp"}
)

# Sync all passwords
results = sync_all_to_k8s(
    namespace="production",
    prefix="prod_"
)

# Import from K8s
result = import_from_k8s(
    secret_name="existing-secret",
    namespace="production",
    kcpwd_key="imported_password"
)

Decorators

from kcpwd import require_password, require_master_password

# Regular password decorator
@require_password('my_db')
def connect_to_db(host, password=None):
    print(f"Connecting with: {password}")

connect_to_db("localhost")  # Password auto-injected

# Master password decorator (will prompt)
@require_master_password('prod_db')
def connect_to_prod(host, password=None):
    print(f"Connecting to prod: {password}")

connect_to_prod("prod.example.com")  # Prompts for master password

๐ŸŒ Web UI API (Programmatic Access)

The Web UI also exposes a REST API that you can use programmatically:

import requests

# Authenticate
response = requests.post("http://localhost:8765/api/auth", 
    json={"secret": "your-ui-secret"})
token = response.json()["token"]

headers = {"Authorization": f"Bearer {token}"}

# List passwords
response = requests.get("http://localhost:8765/api/passwords", headers=headers)
passwords = response.json()

# Get a password
response = requests.post("http://localhost:8765/api/passwords/retrieve",
    headers=headers,
    json={"key": "my_password", "use_master": False})
password = response.json()["password"]

# Generate password
response = requests.post("http://localhost:8765/api/generate",
    headers=headers,
    json={"length": 20, "use_symbols": True})
new_password = response.json()["password"]

Security Details

  • Encryption: AES-256-GCM (authenticated encryption)
  • Key Derivation: PBKDF2-SHA256 with 600,000 iterations (OWASP 2023)
  • Storage:
    • macOS: Native Keychain
    • Linux: D-Bus Secret Service (gnome-keyring, KWallet)
    • Windows: Windows Credential Locker
    • Fallback: Encrypted file (AES-256-GCM)
  • Master Password: Not stored anywhere (must be remembered)
  • Web UI: Session-based authentication with secure tokens
  • API: Bearer token authentication
  • Kubernetes: Uses native K8s RBAC and secret encryption at rest

Platform-Specific Notes

macOS

  • Uses native Keychain Access
  • Passwords accessible via: security find-generic-password -s kcpwd -a <key> -w
  • Clipboard integration works automatically
  • Web UI runs on localhost by default
  • Kubernetes integration requires kubectl

Linux

  • Requires D-Bus Secret Service daemon (gnome-keyring, KWallet, etc.)
  • Falls back to encrypted file if no keyring available
  • Clipboard is disabled by default (security/dependency choice)
  • Use shell pipes for clipboard: kcpwd get key | xclip -selection clipboard
  • Works in both X11 and Wayland (with appropriate clipboard tools)
  • Web UI works perfectly on all Linux distributions
  • Kubernetes integration requires kubectl

Windows

  • Uses Windows Credential Locker (built into Windows 10/11)
  • Passwords stored securely in Windows Credential Manager
  • Access via: Control Panel โ†’ Credential Manager โ†’ Windows Credentials
  • Clipboard integration via clip.exe (built-in) or pywin32 (optional, better)
  • Web UI works on all Windows versions
  • Compatible with Windows Server editions
  • Kubernetes integration requires kubectl

Requirements

  • Python 3.8+
  • macOS: Built-in (no extra dependencies)
  • Linux:
    • D-Bus Secret Service daemon (gnome-keyring, KWallet, etc.)
    • secretstorage>=3.3.0 (auto-installed)
  • Windows:
    • Windows 10/11 or Server 2016+
    • pywin32 (optional, for better clipboard support)
  • cryptography>=41.0.0 (for master password protection)
  • click>=8.0.0 (for CLI)
  • keyring>=23.0.0 (for keyring abstraction)
  • pyyaml>=6.0.0 (for Helm integration)
  • Web UI (optional):
    • fastapi>=0.104.0
    • uvicorn[standard]>=0.24.0
    • pydantic>=2.0.0
  • Kubernetes (optional):
    • kubectl CLI tool

Troubleshooting

Web UI Issues

"UI files not found"

  • Make sure you installed with [ui] extra: pip install kcpwd[ui]
  • Check if files exist: ls ~/.local/lib/python*/site-packages/kcpwd/ui/static/

"Cannot connect to UI"

  • Check if port is available:
    • Linux/Mac: lsof -i :8765
    • Windows: netstat -ano | findstr :8765
  • Try different port: kcpwd ui --port 8000
  • Check firewall settings

"Session expired"

  • Sessions expire after 1 hour by default
  • Just re-authenticate with your UI secret

Linux Issues

"No secret service available"

  • Install gnome-keyring: sudo apt install gnome-keyring
  • Make sure it's running: gnome-keyring-daemon --start
  • For KDE: KWallet should work automatically

"D-Bus error"

  • Check D-Bus is running: ps aux | grep dbus
  • Set DBUS_SESSION_BUS_ADDRESS if needed

Clipboard not working

  • Linux clipboard is disabled by design
  • Use shell pipes: kcpwd get key | xclip -selection clipboard
  • Install xclip: sudo apt install xclip

macOS Issues

"No passwords found" but they exist

  • Keychain might be locked
  • Use Keychain Access app to verify
  • Command: security find-generic-password -s kcpwd

Windows Issues

"Backend not available"

  • Windows Credential Locker is built into Windows 10/11
  • Make sure you're running Windows 10 1703 or later
  • Check: Control Panel โ†’ Credential Manager

"Clipboard not working"

  • Install pywin32: pip install pywin32
  • Or use built-in clip.exe (should work automatically)

"Access denied" errors

  • Run as Administrator if needed
  • Check Windows Credential Manager permissions

Web UI on Windows

  • May need to allow through Windows Firewall
  • Use kcpwd ui --host 127.0.0.1 for localhost only

Kubernetes Issues

"kubectl not found"

# Install kubectl
# macOS
brew install kubectl

# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# Windows (Chocolatey)
choco install kubernetes-cli

"Permission denied" (K8s)

# Check RBAC permissions
kubectl auth can-i create secrets -n production

# If denied, ask your cluster admin for permissions

"Secret already exists"

# kcpwd will update it automatically, or manually:
kubectl delete secret prod-db -n production
kcpwd k8s sync prod_db --namespace production

๐Ÿš€ Kubernetes Integration (NEW in v0.8.0)

kcpwd now includes native Kubernetes support! Sync passwords to/from Kubernetes secrets with zero additional infrastructure.

Why kcpwd for Kubernetes?

Feature kcpwd Vault Sealed Secrets External Secrets
Setup Time 0 minutes Hours 30+ minutes 1+ hour
Infrastructure None Servers + DB Controller Operators
Learning Curve Minimal Steep Moderate Moderate
Local Dev โœ… Perfect โš ๏ธ Complex โŒ No โš ๏ธ Limited
CI/CD โœ… Simple โœ… Yes โœ… Yes โœ… Yes
GitOps โœ… Yes โœ… Yes โœ… Yes โœ… Yes
Master Password โœ… Yes โŒ No โŒ No โŒ No
Cost Free $$$ Free Free

Quick Start

# 1. Store password locally
kcpwd set prod_db "my_secure_password"

# 2. Sync to Kubernetes
kcpwd k8s sync prod_db --namespace production

# 3. Use in your deployment
kubectl get secret prod-db -n production

That's it! Your password is now a Kubernetes secret.

Key K8s Features

  • โœ… Bi-directional sync - kcpwd โ†” Kubernetes secrets
  • โœ… Watch mode - Auto-sync with configurable intervals
  • โœ… Master password support - Extra security layer for sensitive passwords
  • โœ… GitOps friendly - Works with ArgoCD, Flux, etc.
  • โœ… CI/CD ready - Perfect for deployment pipelines
  • โœ… Helm integration - Use {{ kcpwd('key') }} in values.yaml
  • โœ… Zero infrastructure - Just needs kubectl
  • โœ… Multi-namespace - Sync to different namespaces
  • โœ… Label management - Add custom labels to secrets

Changelog

v0.8.0 (LATEST) - Kubernetes & Helm Integration ๐Ÿš€

  • ๐ŸŽฏ Native Kubernetes support - Sync passwords to/from K8s secrets
  • โŽˆ Helm integration - Use {{ kcpwd('key') }} in values.yaml
  • ๐Ÿ”„ Bi-directional sync - Import secrets from K8s to kcpwd
  • ๐Ÿ‘€ Watch mode - Auto-sync with configurable intervals
  • ๐Ÿท๏ธ Label management - Add custom labels to K8s secrets
  • ๐Ÿ” Master password in K8s - Extra security for production
  • ๐Ÿš€ CI/CD ready - Perfect for GitHub Actions, GitLab CI, etc.
  • ๐Ÿ“ฆ Zero infrastructure - Just needs kubectl
  • ๐ŸŽจ GitOps friendly - Works with ArgoCD, Flux

v0.7.0 - Windows Support & Password Sharing

  • ๐ŸชŸ Full Windows support with Windows Credential Locker
  • โœ… Windows clipboard integration (clip.exe + pywin32)
  • ๐Ÿ”— Password sharing - Secure temporary links with expiration
  • โฑ๏ธ Time-based expiration (5m - 3h)
  • ๐Ÿ”’ Multiple security options (anyone/once/password)
  • ๐Ÿ“Š Access logging and statistics
  • ๐ŸŽจ Beautiful share access pages
  • ๐Ÿงน Automatic cleanup
  • โœ… Platform detection for Windows
  • โœ… Tested on Windows 10/11 & Server editions

v0.6.4 - Enhanced Web UI

  • ๐ŸŒ Modern Web UI with FastAPI backend
  • ๐ŸŽจ Beautiful, responsive interface for password management
  • ๐Ÿ“Š Real-time password strength visualization
  • ๐ŸŽฒ Interactive password generator with live preview
  • ๐Ÿ“ค Import/Export via Web UI
  • ๐Ÿ” Session-based authentication
  • ๐ŸŽญ Enhanced UI with logo and dark mode
  • ๐Ÿ”Œ REST API for programmatic access

v0.5.0 - Linux Support and Universal Compatibility

  • ๐Ÿง Full Linux support via D-Bus Secret Service
  • ๐Ÿ“‹ Platform detection and info command (kcpwd info)
  • ๐Ÿ“Ž Optional clipboard support on Linux
  • ๐Ÿ’พ Encrypted file backend for universal compatibility
  • ๐Ÿ” Automatic backend detection
  • ๐Ÿ› ๏ธ get_backend_info() API function

v0.4.1 - Master Password & Strength Checking

  • ๐Ÿ” @require_master_password decorator
  • ๐Ÿ’ช Password strength checker with visual feedback
  • ๐Ÿ“Š CLI check-strength command

v0.4.0 - Security Enhancements

  • ๐Ÿ”’ Per-password master password protection
  • ๐Ÿ” AES-256-GCM encryption
  • ๐Ÿ”‘ PBKDF2-SHA256 key derivation (600k iterations)

v0.3.0 - Import/Export

  • ๐Ÿ“ค Import/export functionality
  • ๐Ÿ“‹ list command for viewing all passwords

v0.2.1 - Password Generation

  • ๐ŸŽฒ Cryptographically secure password generation
  • โš™๏ธ Customizable generation options

v0.2.0 - Python Library

  • ๐Ÿ“ฆ Python library support
  • ๐ŸŽฏ @require_password decorator
  • ๐Ÿ”Œ Programmatic API access

v0.1.0 - Initial Release

  • ๐ŸŽ‰ macOS Keychain integration
  • ๐Ÿ’ป CLI interface
  • ๐Ÿ“‹ Basic password management
  • ๐Ÿ” Secure storage

License

MIT License - See LICENSE file for details

Contributing

Contributions welcome! Platform-specific improvements, Kubernetes enhancements, and Web UI improvements especially appreciated.

Development Setup

# Clone repository
git clone https://github.com/osmanuygar/kcpwd.git
cd kcpwd

# Install development dependencies
pip install -e .[dev,ui]

# Run tests
pytest

# Code formatting
black kcpwd/
ruff check kcpwd/

# Type checking
mypy kcpwd/

Roadmap

  • macOS support
  • Linux support
  • Password strength checker
  • Master password protection
  • Web UI with FastAPI
  • Password sharing
  • Windows support
  • Kubernetes integration
  • Helm integration
  • Password history tracking
  • Browser extensions
  • Multi-user support
  • Cloud sync options
  • 2FA/OTP support
  • Mobile apps
  • Multi-node sync
  • Advanced reporting and analytics
  • Kubernetes Operator
  • Terraform Provider

Screenshots

CLI

$ kcpwd info
๐Ÿ”ง Platform Information
========================================
Platform: Windows
Supported: โœ“ Yes

๐Ÿ” Storage Backend
========================================
Type: System Keyring
Backend: Windows Credential Locker
Status: โœ“ Active (OS-native secure storage)

Web UI

Beautiful, modern interface for managing your passwords:

  • Dark theme
  • Responsive design
  • Real-time password strength
  • Interactive password generator
  • Secure session management
  • Password sharing

Support

Star History

If you find kcpwd useful, please โญ star the repository!


Made with โค๏ธ by osmanuygar

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kcpwd-0.8.1.tar.gz (120.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kcpwd-0.8.1-py3-none-any.whl (118.4 kB view details)

Uploaded Python 3

File details

Details for the file kcpwd-0.8.1.tar.gz.

File metadata

  • Download URL: kcpwd-0.8.1.tar.gz
  • Upload date:
  • Size: 120.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for kcpwd-0.8.1.tar.gz
Algorithm Hash digest
SHA256 e1a35309e23cdd19318ec42535461167526a4bd8f79d081f49627899350f9703
MD5 f33b5e73d7c6f7a55a8131d895a79189
BLAKE2b-256 b0018a8a69a9ff582526330439e78862cbabb982bd253b224170f45a7a191500

See more details on using hashes here.

File details

Details for the file kcpwd-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: kcpwd-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 118.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for kcpwd-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a63af2a6435409b6726105467b88f2bd2f7af915a787b530b720d9f1e7012905
MD5 07a894cbc09e9e55607b47ece0b7a080
BLAKE2b-256 ee47b1c76e8e4268749633fa3f1b55ebaa4477699b6e62c43d07fc645989b495

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page