Contributions are welcome, and they are greatly appreciated!. You can contribute code, documentation, tests, bug reports. Every little bit helps, and credit will always be given. If you plan to make a significant contribution it would be great if you first announce that in the Discussions.
You can contribute in many ways:
Report bugs at https://github.com/textX/textX/issues.
If you are reporting a bug, please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
Look through the GitHub issues for bugs. Anything tagged with "bug" and "help wanted" is open to whoever wants to implement it.
Look through the GitHub issues for features. Anything tagged with "enhancement/feature" and "help wanted" is open to whoever wants to implement it.
textX could always use more documentation, whether as part of the official textX docs, in docstrings, or even on the web in blog posts, articles, and such.
textX is currently using mkdocs
, a documentation generator, to generate the
docs into html files.
To test the docs locally, you need to follow the first 3 instructions at the Get Started! section
- Fork the repo (one-time effort)
- Clone your fork locally (one-time effort)
- Create a virtualenv for the fork and install the relevant libraries (one-time effort)
Once you complete the above 3 instructions, you can now:
- Activate the virtualenv
- Run
mkdocs serve
at the root folder
mkdocs
will run a webserver that serves the documentation at 127.0.0.1:8000
To make changes to the configurations, you can look at mkdocs.yml
. For more
information on how to use mkdocs, visit this site.
The best way to send feedback is to open a discussion at https://github.com/textX/textX/discussions
If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome :)
Ready to contribute? Here's how to set up textX
for local development.
-
Fork the
textX
repo on GitHub. -
Clone your fork locally:
$ git clone [email protected]:your_name_here/textX.git
-
Install your local copy into a virtualenv. This is how you set up your fork for local development:
$ cd textX/ $ python -m venv venv $ source venv/bin/activate $ ./install-dev.sh
Previous stuff is needed only the first time. To continue working on textX later you just do:
$ cd textX/ $ source venv/bin/activate
Note that on Windows sourcing syntax is a bit different. Check the docs for virtualenv.
An excellent overview of available tools for Python environments management can be found here
To verify that everything is setup properly run tests:
$ flake8 $ py.test tests/functional/
-
Create a branch for local development::
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
-
When you're done making changes, check that your changes pass flake8, the tests, and have a look at the coverage:
$ flake8 $ py.test tests/functional/ $ coverage run --source textx -m py.test tests/functional $ coverage report
You can run all this at once with provided script
runtests.sh
$ ./runtests.sh
In case you have doubts, have also a look at the html rendered version of the coverage results:
$ coverage html
-
Commit your changes and push your branch to GitHub:
$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature
-
Submit a pull request through the GitHub website.
Before you submit a pull request, check that it meets these guidelines:
- The pull request should include tests.
- If the pull request adds/changes functionality, the docs should be updated.
- The pull request should work for Python 3.6+. Check https://github.com/textX/textX/actions and make sure that the tests pass for all supported Python versions.
To run a subset of tests:
$ py.test tests/functional/mytest.py
or a single test:
$ py.test tests/functional/mytest.py::some_test
This guide is based on the guide generated by Cookiecutter and cookiecutter-pypackage project template.