PyPlayKit - Enterprise Test Automation Framework
Tagline: A modular, scalable, and CI/CD-ready Python + Playwright framework for enterprise automation supporting multiple projects and 50+ QE engineers.
Overview
PyPlayKit is a multi-project enterprise test automation framework built with Python, Playwright, and Pytest. It supports multiple independent projects with UI, API, Database, and Integration testing capabilities.
Key Features:
- ๐ข Multi-Project Support: Separate test organization for multiple applications
- ๐ฅ Scalable: Designed for 50-100 QE engineers working simultaneously
- ๐ฏ Zero Merge Conflicts: Project-first organization eliminates conflicts
- ๐ Data Comparison: File-to-File, File-to-DB, DB-to-File validation (Excel, CSV, JSON)
- ๐ Interactive HTML Reports: Filterable validation reports with KPIs โญ NEW
- ๐ Comprehensive Documentation: 8,700+ lines across 15+ guides
- ๐ง Extensible: Plugin architecture with orchestration support
- ๐ Self-Healing: Locator recovery with fallback chains
- ๐ญ Observable: Comprehensive metrics and reporting
Quick Start
Prerequisites
- Python 3.11 or higher
- pip
Setup (5 minutes)
# Windows PowerShell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
playwright install
pip install -r requirements-dev.txt
Set Environment Variables
# Required for tests
$env:PYPLAYKIT_TEST_USERNAME="standard_user"
$env:PYPLAYKIT_TEST_PASSWORD="secret_sauce"
Run Tests
# Run all smoke tests
pytest -m smoke
# Run specific project tests
pytest tests/projects/timelyquote/
pytest tests/projects/dispatcho/
pytest tests/projects/customs_modernization/
# Run by marker
pytest -m timelyquote
pytest -m dispatcho
pytest -m customs_modernization
Architecture
Multi-Project Structure
PyPlayKit supports multiple independent projects with separate test suites:
tests/
โโโ projects/ # Multi-project organization
โ โโโ timelyquote/ # Project 1: Quote management
โ โ โโโ functional/
โ โ โ โโโ ui/ # UI tests
โ โ โ โโโ api/ # API tests
โ โ โ โโโ database/ # Database tests
โ โ โโโ integration/ # Integration tests
โ โ
โ โโโ dispatcho/ # Project 2: Dispatch & logistics
โ โ โโโ functional/
โ โ โ โโโ ui/
โ โ โ โโโ api/
โ โ โ โโโ database/
โ โ โโโ integration/
โ โ
โ โโโ customs_modernization/ # Project 3: Customs management
โ โโโ functional/
โ โ โโโ ui/
โ โ โโโ api/
โ โ โโโ database/
โ โโโ integration/
โ
โโโ unit/ # Framework unit tests
Layered Architecture
- Test Layer (
tests/) - Multi-project organization with Pytest - Page Object Layer (
pages/) - Encapsulated locators per project - Core Engine Layer (
core/) - Playwright lifecycle and browser management - Utilities Layer (
utils/) - Logging, data loading, assertions, API clients - Configuration Layer (
config/) - Framework + project-specific configs - Plugin Layer (
plugins/) - Extensible plugin architecture - Orchestration Layer (
orchestration/) - Dependency-aware execution - Resilience Layer (
resilience/) - Self-healing locator resolution - Integration Layer (
integrations/) - Jira and test management adapters
Project Structure
pyplaykit/
โโโ config/
โ โโโ config.yaml # Framework configuration
โ โโโ environments.yaml # Global environments
โ โโโ projects/ # Project-specific configs
โ โโโ timelyquote.yaml
โ โโโ dispatcho.yaml
โ โโโ customs_modernization.yaml
โ
โโโ core/
โ โโโ base_page.py
โ โโโ base_test.py
โ โโโ browser_factory.py
โ โโโ playwright_manager.py
โ
โโโ integrations/
โ โโโ adapters.py
โ
โโโ orchestration/
โ โโโ planner.py
โ
โโโ plugins/
โ โโโ base.py
โ โโโ registry.py
โ โโโ api_plugin.py
โ โโโ data_plugin.py
โ โโโ security_plugin.py
โ
โโโ resilience/
โ โโโ locator_recovery.py
โ
โโโ pages/ # Page objects per project
โ โโโ timelyquote/
โ โโโ dispatcho/
โ โโโ customs_modernization/
โ
โโโ tests/
โ โโโ projects/ # All project tests
โ โ โโโ timelyquote/
โ โ โโโ dispatcho/
โ โ โโโ customs_modernization/
โ โโโ unit/ # Framework unit tests
โ
โโโ utils/
โ โโโ logger.py
โ โโโ data_loader.py
โ โโโ assertion_helper.py
โ โโโ api_client.py
โ โโโ response_validator.py
โ โโโ data_validator.py
โ โโโ config_reader.py
โ โโโ observability.py
โ โโโ environment_validator.py
โ โโโ tdm.py
โ
โโโ test_data/ # Test data per project
โ โโโ timelyquote/
โ โโโ dispatcho/
โ โโโ customs_modernization/
โ
โโโ reports/ # Test reports and artifacts
โ
โโโ conftest.py # Pytest configuration
โโโ pytest.ini # Pytest settings
โโโ pyproject.toml # Package metadata
โโโ requirements.txt # Dependencies
โโโ README.md # This file
Current Projects
1. TimelyQuote
Description: Quote management and generation system
Tests: tests/projects/timelyquote/
Config: config/projects/timelyquote.yaml
Marker: @pytest.mark.timelyquote
Run tests:
pytest tests/projects/timelyquote/
pytest -m timelyquote
2. Dispatcho
Description: Dispatch and logistics management system
Tests: tests/projects/dispatcho/
Config: config/projects/dispatcho.yaml
Marker: @pytest.mark.dispatcho
Run tests:
pytest tests/projects/dispatcho/
pytest -m dispatcho
3. Customs Modernization
Description: Customs management system modernization
Tests: tests/projects/customs_modernization/
Config: config/projects/customs_modernization.yaml
Marker: @pytest.mark.customs_modernization
Run tests:
pytest tests/projects/customs_modernization/
pytest -m customs_modernization
Running Tests
By Project
# TimelyQuote
pytest tests/projects/timelyquote/
pytest tests/projects/timelyquote/ -m smoke
# Dispatcho
pytest tests/projects/dispatcho/
pytest tests/projects/dispatcho/ -m smoke
# Customs Modernization
pytest tests/projects/customs_modernization/
pytest tests/projects/customs_modernization/ -m smoke
By Test Type
# UI tests only
pytest tests/projects/timelyquote/functional/ui/
# API tests only
pytest tests/projects/dispatcho/functional/api/
# Database tests only
pytest tests/projects/customs_modernization/functional/database/
# Integration tests only
pytest tests/projects/timelyquote/integration/
By Marker
# Project markers
pytest -m timelyquote
pytest -m dispatcho
pytest -m customs_modernization
# Test type markers
pytest -m api
pytest -m ui
pytest -m database
pytest -m integration
# Combined markers
pytest -m "timelyquote and smoke"
pytest -m "dispatcho and api"
All Projects
# Run smoke tests for all projects
pytest tests/projects/ -m smoke
# Run all tests for all projects
pytest tests/projects/
# Run specific test type across all projects
pytest tests/projects/ -m api
pytest tests/projects/ -m ui
With Options
# Different environment
pytest tests/projects/timelyquote/ --pyplaykit-env qa
pytest tests/projects/dispatcho/ --pyplaykit-env uat
# Different browser
pytest tests/projects/timelyquote/ --pyplaykit-browser firefox --pyplaykit-headed
# Parallel execution
pytest tests/projects/timelyquote/ -n 4
# With readiness checks
pytest tests/projects/timelyquote/ --pyplaykit-readiness-check
Available pytest CLI Options
Registered in conftest.py:
--pyplaykit-envโ target environment (dev, qa, uat, prod)--pyplaykit-browserโ browser (chromium, firefox, webkit)--pyplaykit-headedโ disable headless mode--pyplaykit-base-urlโ override base URL--pyplaykit-readiness-checkโ enable environment readiness checks
Test Markers
Defined in pytest.ini:
Suite Markers
@pytest.mark.smoke- Critical path tests@pytest.mark.sanity- Quick validation tests@pytest.mark.regression- Full regression suite
Project Markers
@pytest.mark.timelyquote- TimelyQuote tests@pytest.mark.dispatcho- Dispatcho tests@pytest.mark.customs_modernization- Customs Modernization tests
Test Type Markers
@pytest.mark.ui- UI functional tests@pytest.mark.api- API functional tests@pytest.mark.database- Database validation tests@pytest.mark.integration- Integration tests
Feature Markers
@pytest.mark.login- Login functionality@pytest.mark.quotes- Quote management@pytest.mark.logistics- Logistics/dispatch@pytest.mark.customs_mgmt- Customs management
Adding Tests
Where to Add Your Tests
| Test Type | Location | Example |
|---|---|---|
| TimelyQuote UI | tests/projects/timelyquote/functional/ui/<feature>/ |
test_create_quote.py |
| TimelyQuote API | tests/projects/timelyquote/functional/api/<domain>/ |
test_quotes_api.py |
| Dispatcho UI | tests/projects/dispatcho/functional/ui/<feature>/ |
test_dispatch_dashboard.py |
| Dispatcho API | tests/projects/dispatcho/functional/api/<domain>/ |
test_orders_api.py |
| Customs UI | tests/projects/customs_modernization/functional/ui/<feature>/ |
test_declarations.py |
| Customs API | tests/projects/customs_modernization/functional/api/<domain>/ |
test_customs_api.py |
| Database tests | tests/projects/<project>/functional/database/<category>/ |
test_data_integrity.py |
| Integration tests | tests/projects/<project>/integration/ |
test_workflow_e2e.py |
Example: Adding a New Test
1. Create page object (for UI tests):
# pages/timelyquote/quote_creation_page.py
from core.base_page import BasePage
class QuoteCreationPage(BasePage):
CUSTOMER_SELECT = "#customer"
SAVE_BUTTON = "#save"
def create_quote(self, customer: str):
self.click(self.CUSTOMER_SELECT)
self.click(f"option:has-text('{customer}')")
self.click(self.SAVE_BUTTON)
2. Create test:
# tests/projects/timelyquote/functional/ui/quotes/test_create_quote.py
import pytest
from pages.timelyquote.quote_creation_page import QuoteCreationPage
@pytest.mark.timelyquote
@pytest.mark.smoke
@pytest.mark.quotes
def test_create_quote_with_valid_customer(page, runtime_options):
quote_page = QuoteCreationPage(page, runtime_options["resilience_policy"])
quote_page.navigate(runtime_options["base_url"] + "/quotes/new")
quote_page.create_quote("ACME Corp")
assert quote_page.is_quote_saved()
3. Run your test:
pytest tests/projects/timelyquote/functional/ui/quotes/test_create_quote.py -v
Data Comparison Patterns
PyPlayKit provides comprehensive data comparison capabilities using the built-in DataValidator utility.
Prerequisites for Data Comparison
# Option 1: Install with optional dependencies
pip install pyplaykit[data-comparison]
# Option 2: Install dependencies separately
pip install pandas openpyxl
# Option 3: Use the examples requirements file
pip install -r examples/requirements.txt
Note: Data comparison features require pandas and openpyxl. The framework will work without them for UI/API/Database testing.
Supported Comparison Types
| Comparison Type | Use Case | Example |
|---|---|---|
| File-to-File | Compare Excel, CSV, JSON files | Validate data export/import |
| File-to-Database | Verify data loads into database | ETL validation |
| Database-to-File | Validate database exports | Report generation testing |
Quick Example: Excel-to-Excel Comparison
Simple One-Line API (Recommended for QE Engineers):
import pytest
from utils.data_comparison_utils import compare_excel_files
@pytest.mark.data
def test_compare_excel_files(logger):
# ONE function call - framework handles everything!
result = compare_excel_files(
source_file="report_baseline.xlsx",
target_file="report_current.xlsx",
float_tolerance=0.01
)
# Check results
logger.info(f"{result.summary}")
logger.info(f"HTML Report: {result.report_path}")
if not result.passed:
pytest.fail(f"Validation failed! {result.failed_count} discrepancies found.")
Manual Validation (For custom logic):
import pytest
import pandas as pd
from pyplaykit import DataValidator
@pytest.mark.data
def test_compare_with_custom_logic(logger):
df1 = pd.read_excel("baseline.xlsx")
df2 = pd.read_excel("current.xlsx")
records1 = df1.to_dict('records')
records2 = df2.to_dict('records')
for idx, (r1, r2) in enumerate(zip(records1, records2)):
DataValidator.assert_records_equal(r1, r2)
logger.info("โ Files match!")
DataValidator Methods
| Method | Purpose |
|---|---|
assert_records_equal() |
Compare two dictionaries exactly |
assert_floats_equal() |
Compare numeric values with tolerance |
assert_strings_equal_normalized() |
Compare strings with normalization |
assert_collection_contains_record() |
Check if record exists in collection |
assert_datetimes_equal() |
Compare datetime values |
Runnable Examples
See examples/data_comparison_examples.py for 8 complete examples:
# Run all data comparison examples
pytest examples/data_comparison_examples.py -v -s
# Run specific example
pytest examples/data_comparison_examples.py::test_excel_to_excel_basic -v -s
Interactive HTML Reports โญ NEW
Option 1: Automatic Report Generation (Recommended):
from utils.data_comparison_utils import compare_excel_files
# Framework automatically tracks ALL mismatches and generates HTML report
result = compare_excel_files(
source_file="baseline.xlsx",
target_file="current.xlsx",
float_tolerance=0.01
)
# Result includes:
print(f"Passed: {result.passed}")
print(f"Matched: {result.passed_count}")
print(f"Failed: {result.failed_count}")
print(f"Total Mismatches: {result.total_mismatches}")
print(f"Report: {result.report_path}")
Available Functions:
File-to-File:
compare_excel_files()- Excel to Excelcompare_csv_files()- CSV to CSV
File-to-Database:
compare_excel_to_db()- Excel to Databasecompare_csv_to_db()- CSV to Database
Database-to-File:
compare_db_to_excel()- Database to Excelcompare_db_to_csv()- Database to CSV
Database-to-Database:
compare_db_to_db()- Database to Database
Advanced:
compare_dataframes()- DataFrame to DataFrame (custom sources)
Option 2: Manual Report Building (Advanced):
from utils.data_comparison_report import DataComparisonReport
# For custom comparison logic
report = DataComparisonReport()
report.set_comparison_type("FILE_TO_FILE (Excel)")
report.set_source("baseline.xlsx", 100)
report.set_target("current.xlsx", 100)
# Your custom comparison logic here...
# report.add_mismatch(...) for each discrepancy
report.generate_report("reports/validation.html")
Report Features:
- ๐ KPI dashboard with pass/fail rates
- ๐ Column-level filtering and search
- ๐ Row-by-row mismatch details
- ๐จ Color-coded status indicators
- ๐ฑ Mobile-responsive design
- โก Zero manual mismatch tracking required!
Examples:
- Simple API: examples/simple_comparison_examples.py โญ Recommended
- Manual Building: examples/data_comparison_with_html_report.py
Full Documentation
- docs/PIP_INSTALL_GUIDE.md - Complete patterns guide
- examples/README.md - Examples documentation
- docs/DATA_VALIDATION_GUIDE.md - Advanced validation
Unit Testing and Coverage
# Windows
scripts\run_unit_tests_with_coverage.bat
# Linux/macOS
bash scripts/run_unit_tests_with_coverage.sh
# View coverage report
# Open reports/coverage-html/index.html in browser
Coverage target: 95% (configured in pytest.ini)
Security Scanning
# Windows
scripts\run_security_reports.bat
# Linux/macOS
bash scripts/run_security_reports.sh
# View reports
# Open reports/security_reports/html/security_consolidated_report.html
Building Internal Package
# Windows
scripts\build_internal_package.bat
# Linux/macOS
bash scripts/build_internal_package.sh
Configuration
Framework Configuration
config/config.yaml- Framework defaultsconfig/environments.yaml- Global environment settings
Project Configuration
config/projects/timelyquote.yaml- TimelyQuote settingsconfig/projects/dispatcho.yaml- Dispatcho settingsconfig/projects/customs_modernization.yaml- Customs settings
Each project config includes:
- Environment-specific URLs
- API endpoints
- Test users
- Feature flags
Documentation for QE Engineers
Quick Start
- QUICK_START_QE.md - Get started in 10 minutes
- TEST_LOCATION_CHEATSHEET.md - One-page reference
- COMMANDS_FOR_YOUR_PROJECTS.md - Command reference
- docs/PIP_INSTALL_GUIDE.md - Pip install guide with data comparison patterns
Implementation
- YOUR_PROJECTS_IMPLEMENTATION_GUIDE.md - Step-by-step guide
- CONTRIBUTING.md - Comprehensive contributor guide
- FINAL_PROJECT_SETUP.md - Complete setup overview
Architecture
- docs/MULTI_PROJECT_STRUCTURE.md - Multi-project architecture
- docs/TEST_ORGANIZATION.md - Organization strategy
- docs/QE_VISUAL_GUIDE.md - Visual guide with diagrams
Data Comparison & Validation
- examples/data_comparison_examples.py - Runnable examples for Excel, CSV, DB comparison
- examples/README.md - Examples documentation
- docs/DATA_VALIDATION_GUIDE.md - Advanced validation patterns
Project Guides
- tests/projects/timelyquote/README.md - TimelyQuote guide
- tests/projects/dispatcho/README.md - Dispatcho guide
- tests/projects/customs_modernization/README.md - Customs guide
Key Features
Multi-Project Support
- Separate test suites per project
- Independent configurations
- Project-specific page objects and test data
- No merge conflicts between projects
Scalability
- Designed for 50-100 QE engineers
- Clear ownership boundaries
- Parallel development across projects
- Independent CI/CD pipelines
Test Types
- UI Testing: Playwright-based with page objects
- API Testing: REST API validation with response validators
- Database Testing: Data integrity and migration validation
- Integration Testing: Cross-layer consistency validation
Observability
- Session-level metrics and KPIs
- Automatic failure classification
- Flaky test detection
- Multi-persona reports (engineering, QA, leadership)
Resilience
- Self-healing locators with fallback chains
- DOM retry mechanisms
- Confidence scoring
- Optional audit logging
Plugin Architecture
- Extensible hook system
- Built-in plugins: API, Data, Security
- Config-gated activation
- Session and test-level hooks
Wave Implementation Status
Wave 1 โ Complete:
- Observability tracker
- Environment readiness checks
- Session-level reporting
Wave 2 โ Complete:
- Test data management utilities
- Multi-level persona reports
- Integration adapters (file and API)
Wave 3 โ Complete:
- Plugin architecture with registry
- Orchestration planner with dependency graphs
Wave 4 โ Complete:
- Self-healing locators with fallback chains
- Distribution packaging baseline
- Multi-project organization structure
Reports and Artifacts
Test Reports
- HTML report:
reports/report.html - JUnit XML:
reports/junit.xml - Coverage:
reports/coverage-html/index.html
Observability
- Summary:
reports/observability/summary.json - KPI summary:
reports/observability/kpi_summary.json - Engineering report:
reports/observability/engineering_report.json - QA report:
reports/observability/qa_functional_report.json - Leadership report:
reports/observability/leadership_kpi_report.json
Integration Exports
- Jira export:
reports/integrations/jira_export.json - Test management:
reports/integrations/test_management_export.json
Resilience
- Audit log:
reports/resilience/recovery_audit.jsonl
Failure Artifacts
- Screenshots:
reports/screenshots/ - Videos:
reports/videos/ - Logs:
reports/framework.log
Environment Variables
Framework
export PYPLAYKIT_TEST_USERNAME="standard_user"
export PYPLAYKIT_TEST_PASSWORD="secret_sauce"
TimelyQuote
export TIMELYQUOTE_USERNAME="user"
export TIMELYQUOTE_PASSWORD="pass"
export TIMELYQUOTE_ADMIN_USERNAME="admin"
export TIMELYQUOTE_ADMIN_PASSWORD="admin_pass"
Dispatcho
export DISPATCHO_DISPATCHER_USERNAME="dispatcher"
export DISPATCHO_DISPATCHER_PASSWORD="pass"
export DISPATCHO_DRIVER_USERNAME="driver"
export DISPATCHO_DRIVER_PASSWORD="pass"
export DISPATCHO_ADMIN_USERNAME="admin"
export DISPATCHO_ADMIN_PASSWORD="admin_pass"
Customs Modernization
export CUSTOMS_USERNAME="customs_user"
export CUSTOMS_PASSWORD="pass"
export CUSTOMS_ADMIN_USERNAME="admin"
export CUSTOMS_ADMIN_PASSWORD="admin_pass"
export CUSTOMS_OFFICER_USERNAME="officer"
export CUSTOMS_OFFICER_PASSWORD="officer_pass"
CI/CD Integration
GitHub Actions Example
name: Multi-Project Tests
on: [push, pull_request]
jobs:
timelyquote-smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -r requirements.txt
playwright install
- name: Run TimelyQuote Smoke Tests
run: pytest tests/projects/timelyquote/ -m smoke -n 4
dispatcho-smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -r requirements.txt
playwright install
- name: Run Dispatcho Smoke Tests
run: pytest tests/projects/dispatcho/ -m smoke -n 4
customs-smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install -r requirements.txt
playwright install
- name: Run Customs Smoke Tests
run: pytest tests/projects/customs_modernization/ -m smoke -n 4
Team Organization
Recommended Structure (60 QE Engineers)
TimelyQuote Team (20 QE)
- UI Team (10):
tests/projects/timelyquote/functional/ui/ - API Team (6):
tests/projects/timelyquote/functional/api/ - Integration Team (4):
tests/projects/timelyquote/integration/
Dispatcho Team (20 QE)
- UI Team (10):
tests/projects/dispatcho/functional/ui/ - API Team (6):
tests/projects/dispatcho/functional/api/ - Integration Team (4):
tests/projects/dispatcho/integration/
Customs Modernization Team (20 QE)
- UI Team (8):
tests/projects/customs_modernization/functional/ui/ - API Team (5):
tests/projects/customs_modernization/functional/api/ - Database/Migration Team (5):
tests/projects/customs_modernization/functional/database/ - Integration Team (2):
tests/projects/customs_modernization/integration/
Contributing
See CONTRIBUTING.md for comprehensive guidelines on:
- Test development patterns
- Page object creation
- Test data management
- Code quality standards
- Common patterns and examples
Troubleshooting
Tests not discovered?
pytest tests/projects/<project>/ --collect-only
Import errors?
# Activate virtual environment
.\.venv\Scripts\Activate.ps1 # Windows
source .venv/bin/activate # Linux/Mac
Configuration issues?
pytest --markers | grep -E "timelyquote|dispatcho|customs"
Support
- Framework Issues: See Framework Documentation
- Project Setup: See Implementation Guide
- Quick Help: See Cheatsheet
License
[Your License Here]
Authors
- Framework Team
- QA Engineering Teams
PyPlayKit - Enterprise Test Automation at Scale ๐
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 pyplaykit-1.8.2.tar.gz.
File metadata
- Download URL: pyplaykit-1.8.2.tar.gz
- Upload date:
- Size: 114.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b873c5f82272af5152a7309461be2fa89c49df37a32b281fcfd8f90ef8ccf459
|
|
| MD5 |
d35ada56cd50455ab8b349885db396d7
|
|
| BLAKE2b-256 |
618e731d602494c4b65bfb3ddb4eb8102de2d1ddccfaddf6a37b6e742a931522
|
Provenance
The following attestation bundles were made for pyplaykit-1.8.2.tar.gz:
Publisher:
publish-pypi.yml on ShanKonduru/pyplaykit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyplaykit-1.8.2.tar.gz -
Subject digest:
b873c5f82272af5152a7309461be2fa89c49df37a32b281fcfd8f90ef8ccf459 - Sigstore transparency entry: 2084791330
- Sigstore integration time:
-
Permalink:
ShanKonduru/pyplaykit@477f765a1cbe3d081f29e21629e70c89844d088c -
Branch / Tag:
refs/tags/v1.8.2 - Owner: https://github.com/ShanKonduru
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@477f765a1cbe3d081f29e21629e70c89844d088c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyplaykit-1.8.2-py3-none-any.whl.
File metadata
- Download URL: pyplaykit-1.8.2-py3-none-any.whl
- Upload date:
- Size: 124.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3f816e0afa5ad5d1ddbd00b164c0e000727e5137a2eba45fbb8bab45f0ba402
|
|
| MD5 |
f37df2d2ab473c373d027f68327a161d
|
|
| BLAKE2b-256 |
0a50fd56d0758195358565d79234cf1c8cf5d4b0220d98f1f762c61297f8d78c
|
Provenance
The following attestation bundles were made for pyplaykit-1.8.2-py3-none-any.whl:
Publisher:
publish-pypi.yml on ShanKonduru/pyplaykit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyplaykit-1.8.2-py3-none-any.whl -
Subject digest:
f3f816e0afa5ad5d1ddbd00b164c0e000727e5137a2eba45fbb8bab45f0ba402 - Sigstore transparency entry: 2084791364
- Sigstore integration time:
-
Permalink:
ShanKonduru/pyplaykit@477f765a1cbe3d081f29e21629e70c89844d088c -
Branch / Tag:
refs/tags/v1.8.2 - Owner: https://github.com/ShanKonduru
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@477f765a1cbe3d081f29e21629e70c89844d088c -
Trigger Event:
push
-
Statement type: