Documentation | Source Code | PyPI
Tool for synchronizing issues between different services (e.g. GitHub, Gitlab Jira, etc.)
Please note that issx is currently in the early stages of development. As such,
it may be subject to significant changes and improvements.
The links to PyPI and documentation provided above are placeholders and may not be operational yet.
Users are encouraged to consult the GitHub repository for the latest updates and information on this project.
We appreciate your interest and patience as we work to enhance issx.
pip install issxpipx install issxThe basic functionality of issx is provided through the issx command-line interface (CLI).
For a full list of available commands and options, please refer to the CLI reference.
!!! warning
The issx CLI requires a configuration file to be present in the working directory (issx.toml) or in ~/.config/issx.toml.
Refer to the Configuration file section for more information.
There is a set of dedicated commands to initialize the configuration file and add instances and projects to it.
> issx config generate-instance --instance gitlab-cloud
Enter backend [gitlab/redmine]: gitlab
Enter url: https://gitlab.com
Enter token: token
[instances.gitlab-cloud]
backend = 'gitlab'
url = 'https://gitlab.com'
token = 'token'The output should be then copied to the Configuration file.
> issx config generate-project --project my-personal-project
Enter instance: gitlab-cloud # The name of the instance that is already configured
Enter project: 11111111 # Identifier of the project characteristic for the instance's backend
Enter issue_title_template ({title}): # Optional template for issue title (default: {title})
[projects.my-personal-project]
instance = 'gitlab-cloud'
project = '11111111'
issue_title_template = '{title}'The output should be then copied to the Configuration file.
It allows to copy issues from one configured project to another.
issx copy --source=<project_name> --target=<project_name> <issue-id>where source and target are the names of the projects configured in the configuration file.
Optionally you can customize the issue title and description by providing --title-format/-T and --description-format/-D flags.
The format should be a string with placeholders for the issue fields (e.g. {title}, {description}, {id} etc.).
Assigning the issue to the current user is also possible by providing --assign-to-me/-M flag.
issx copy --source=<project_name> --target=<project_name> -T "[copied] {title}" -D "Description: {description}" -M <issue-id>To validate the authentication with a newly configured instance, you can use command issx auth-verify:
issx auth-verify --instance=<instance_name>The configuration file can be either in the working directory (issx.toml) or in ~/.config/issx.toml.
It should have the following structure:
[instances.INSTANCE_NAME]
backend = "gitlab" / "redmine"
url = "<absolute url to the instance>"
token = "<API token used for authentication>"
[projects.PROJECT_NAME]
instance = "INSTANCE_NAME"
project = "<project_id>"Instances section is used to configure the instances of the services (e.g. Gitlab, Redmine)
that issx will interact with.
Projects section is used to configure the projects that issx will work with. Each project should be associated with
an instance.
project field should contain the project id available in the chosen instance (usually it is a number).
- Clone this repository
- Requirements:
- Poetry
- Python 3.11+
- Create a virtual environment and install the dependencies
poetry install- Activate the virtual environment
poetry shellpytestThe documentation is automatically generated from the content of the docs directory and from the docstrings of the public signatures of the source code. The documentation is updated and published as a Github Pages page automatically as part each release.
Trigger the Draft release workflow (press Run workflow). This will update the changelog & version and create a GitHub release which is in Draft state.
Find the draft release from the GitHub releases and publish it. When a release is published, it'll trigger release workflow which creates PyPI release and deploys updated documentation.
Pre-commit hooks run all the auto-formatting (ruff format), linters (e.g. ruff and mypy), and other quality
checks to make sure the changeset is in good shape before a commit/push happens.
You can install the hooks with (runs for each commit):
pre-commit installOr if you want them to run only for each push:
pre-commit install -t pre-pushOr if you want e.g. want to run all checks manually for all files:
pre-commit run --all-filesThis project was generated using the nekeal-python-package-cookiecutter template.