A previous release had provenance metadata, but this release does not. View details.
JIRA Assistant Skills Library
A shared Python library for JIRA REST API automation, providing HTTP client, configuration management, error handling, and utilities for the JIRA Assistant Skills project.
Installation
pip install jira-assistant-skills-lib
With optional keyring support for secure credential storage:
pip install jira-assistant-skills-lib[keyring]
Features
- JiraClient: HTTP client with automatic retry logic and exponential backoff
- ConfigManager: Multi-source configuration merging (env vars > settings.local.json > settings.json > defaults)
- Error Handling: Exception hierarchy mapping HTTP status codes to domain exceptions
- Validators: Input validation for issue keys, project keys, JQL queries, URLs, and more
- Formatters: Output formatting for tables, JSON, CSV export
- ADF Helper: Atlassian Document Format conversion (markdown/text to ADF and back)
- Time Utils: JIRA time format parsing and formatting (e.g., '2h', '1d 4h 30m')
- Cache: SQLite-based caching with TTL support for API responses
- Credential Manager: Secure credential storage via system keychain or JSON fallback
Quick Start
from jira_assistant_skills_lib import get_jira_client, handle_errors, ValidationError
@handle_errors
def main():
# Get a configured JIRA client
client = get_jira_client()
# Fetch an issue
issue = client.get_issue('PROJ-123')
print(f"Summary: {issue['fields']['summary']}")
# Search issues with JQL
results = client.search_issues('project = PROJ AND status = Open')
for issue in results['issues']:
print(f"{issue['key']}: {issue['fields']['summary']}")
if __name__ == '__main__':
main()
Configuration
The library supports multiple configuration sources (in priority order):
- Environment variables:
JIRA_API_TOKEN,JIRA_EMAIL,JIRA_SITE_URL - Settings files:
.claude/settings.local.json(gitignored) and.claude/settings.json - Hardcoded defaults: Fallback values
Environment Variables
export JIRA_API_TOKEN="your-api-token"
export JIRA_EMAIL="your-email@company.com"
export JIRA_SITE_URL="https://your-company.atlassian.net"
Profile-based Configuration
# Use a specific profile
client = get_jira_client(profile='development')
Core Components
JiraClient
from jira_assistant_skills_lib import JiraClient
client = JiraClient(
base_url="https://your-company.atlassian.net",
email="your-email@company.com",
api_token="your-api-token"
)
# Make API calls
issue = client.get_issue('PROJ-123')
client.create_issue(project_key='PROJ', summary='New issue', issue_type='Task')
client.transition_issue('PROJ-123', 'Done')
Error Handling
from jira_assistant_skills_lib import (
JiraError,
AuthenticationError,
PermissionError,
NotFoundError,
handle_errors
)
@handle_errors
def main():
# Exceptions are caught and formatted nicely
pass
# Or handle manually
try:
client.get_issue('INVALID-999')
except NotFoundError as e:
print(f"Issue not found: {e}")
except AuthenticationError as e:
print(f"Auth failed: {e}")
except JiraError as e:
print(f"JIRA error: {e}")
Validators
from jira_assistant_skills_lib import (
validate_issue_key,
validate_project_key,
validate_jql,
validate_url,
ValidationError
)
try:
key = validate_issue_key('PROJ-123') # Returns 'PROJ-123'
key = validate_issue_key('invalid') # Raises ValidationError
except ValidationError as e:
print(f"Invalid input: {e}")
ADF Helper
from jira_assistant_skills_lib import (
markdown_to_adf,
text_to_adf,
adf_to_text
)
# Convert markdown to ADF for JIRA
adf = markdown_to_adf("**Bold** and *italic* text")
# Convert plain text to ADF
adf = text_to_adf("Simple text content")
# Extract text from ADF
text = adf_to_text(adf_document)
Time Utils
from jira_assistant_skills_lib import (
parse_time_string,
format_seconds,
parse_relative_date
)
# Parse JIRA time format to seconds
seconds = parse_time_string('2h 30m') # 9000
# Format seconds to JIRA time format
time_str = format_seconds(9000) # '2h 30m'
# Parse relative dates
dt = parse_relative_date('yesterday')
dt = parse_relative_date('2025-01-15')
Development
# Clone the repository
git clone https://github.com/grandcamel/jira-assistant-skills-lib.git
cd jira-assistant-skills-lib
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src tests
isort src tests
License
MIT License - see LICENSE for details.
Metadata
Release files for jira-assistant-skills-lib 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Loss of provenance
These files do not have provenance metadata, despite files in a prior release including this data.
We recommend further investigation before installing these files. View details.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jira_assistant_skills_lib-0.2.4.tar.gz | 112.3 kB | Without provenance | Details for jira_assistant_skills_lib-0.2.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jira_assistant_skills_lib-0.2.4-py3-none-any.whl | Python 3 | none | any | Details for jira_assistant_skills_lib-0.2.4-py3-none-any.whl |
Total release size: 244.1 kB
Release files / jira_assistant_skills_lib-0.2.4.tar.gz
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | jira_assistant_skills_lib-0.2.4.tar.gz |
|---|---|
| Size | 112.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5eeb168c311cb598c790bee8a7e01a30c83fcf7cae2768d18e4eca2e970d86e
|
|
BLAKE2b-256 checksum How to use checksums |
fc727415d29acf154d425ef0e4be883accf0d1ebe3db3fc95428102d7d37fe5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / jira_assistant_skills_lib-0.2.4-py3-none-any.whl
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | jira_assistant_skills_lib-0.2.4-py3-none-any.whl |
|---|---|
| Size | 131.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1ea4713d9f71e348dfa982e4ac2a206720b014bac14ff1c9d62e4dd0c37a8dcf
|
|
BLAKE2b-256 checksum How to use checksums |
bdd89c629219296c08374d5564c9333fabff3896f35267670ba097e070db43c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Security for jira-assistant-skills-lib 0.2.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Loss of provenance
A previous release of these files had provenance metadata, but this release does not.
While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.
Release comparison
- Removed 0.1.5 2 files With provenance
- Added 0.2.4 2 files Without provenance
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.