Enhanced Python client for JIRA with better error handling, pagination, and metadata validation
Project description
Python JIRA Plus
An enhanced Python client for JIRA that extends the functionality of the official jira package, providing better error handling, pagination, metadata validation, and more.
Features
- ✅ Simplified connection to JIRA Cloud and On-Premise instances
- ✅ Robust error handling with automatic retries
- ✅ Built-in pagination for large result sets
- ✅ Field validation against JIRA metadata
- ✅ Enhanced issue creation, retrieval, and updating
- ✅ Support for allowed values validation
Installation
pip install python-jira-plus
Requirements
- Python 3.9+
jirapackageretryingpackagecustom-python-loggerpackage
Configuration
The package uses environment variables for authentication and configuration:
# Required environment variables
JIRA_USER_NAME=your_jira_username
JIRA_TOKEN=your_jira_api_token
JIRA_BASE_URL=your-instance.atlassian.net # Only used if base_url is not provided to constructor
Examples
Creating an Issue with Custom Fields
from python_jira_plus.jira_plus import JiraPlus
jira_client = JiraPlus()
issue = jira_client.create_issue(
project_key="PROJ",
summary="Implement new feature",
description="This feature will improve performance",
issue_type="Task",
custom_fields={
"priority": "Critical", # Priority
"customfield_10003": {"name": "Sprint 1"} # Sprint
}
)
Searching for Issues
from python_jira_plus.jira_plus import JiraPlus
jira_client = JiraPlus()
issues = jira_client.get_objects_by_query(
query="project = PROJ AND status = 'In Progress' ORDER BY created DESC",
max_results=50,
specific_fields=["summary", "status", "assignee"],
json_result=False
)
for issue in issues:
print(f"{issue.key}: {issue.fields.summary} - {issue.fields.status.name}")
Updating an Issue
from python_jira_plus.jira_plus import JiraPlus
jira_client = JiraPlus()
issue = jira_client.get_issue_by_key(key="PROJ-123", json_result=False)
fields_to_update = {
"summary": "Updated summary",
"description": "Updated description",
"customfield_10003": {"name": "Sprint 2"}, # Update Sprint
}
_ = jira_client.update_issue(
issue_key=issue.key,
fields_to_update=fields_to_update
)
🤝 Contributing
If you have a helpful tool, pattern, or improvement to suggest:
Fork the repo
Create a new branch
Submit a pull request
I welcome additions that promote clean, productive, and maintainable development.
🙏 Thanks
Thanks for exploring this repository!
Happy coding!
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 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 python_jira_plus-0.2.1.tar.gz.
File metadata
- Download URL: python_jira_plus-0.2.1.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0b1be99342c7529c21409f66657cd33d1921cf4cbc9859ffdac7d989aabfd8c
|
|
| MD5 |
414bce3c21847d29756f1f2a729b0647
|
|
| BLAKE2b-256 |
e15efb53de3eab0a67d5386bf86c30b9af3cd60e87bccc6921844026cabba420
|
File details
Details for the file python_jira_plus-0.2.1-py3-none-any.whl.
File metadata
- Download URL: python_jira_plus-0.2.1-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e11d37f9f5b8048d136f57be608e6b5759440a318e006af8d8f1f3b0d036b65
|
|
| MD5 |
a61549fddfc0db3f78fd23f4ff646750
|
|
| BLAKE2b-256 |
c984c4fedbfdca3d5356485282652803d9ca3ff94b4504948215e3621b1644a7
|