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.12+
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!
Release files for python-jira-plus 3.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_jira_plus-3.2.0.tar.gz | 13.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_jira_plus-3.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.5 kB
Release files / python_jira_plus-3.2.0.tar.gz
| Download URL | python_jira_plus-3.2.0.tar.gz |
|---|---|
| Size | 13.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ed9c9770cc834abc273ad15ed2e4cfdf53c79614786c3254846b6d85498a98b9
|
|
BLAKE2b-256 checksum How to use checksums |
c635a1b912124e0645c3d7f6fdd6683533cb7e3592b4e3e8739c0e6ef258e1f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / python_jira_plus-3.2.0-py3-none-any.whl
| Download URL | python_jira_plus-3.2.0-py3-none-any.whl |
|---|---|
| Size | 10.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c6be70fb143b5cae45e817078c2b67422ce1b22361fbaf02b0d7d654da28e1f
|
|
BLAKE2b-256 checksum How to use checksums |
27d833655579624a1807e87e5a0efb774cc70a4c0b612333cd0abbc07753e713
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|