Bug reports and code and documentation patches are welcome. You can help this project also by using the development version of HTTPie and by reporting any bugs you might encounter.
It's important that you provide the full command argument list
as well as the output of the failing command.
Use the --debug
flag and copy&paste both the command and its output
to your bug report, e.g.:
$ http --debug <COMPLETE ARGUMENT LIST THAT TRIGGERS THE ERROR>
<COMPLETE OUTPUT>
Before working on a new feature or a bug, please browse existing issues to see whether it has previously been discussed.
If your change alters HTTPie’s behaviour or interface, it's a good idea to discuss it before you start working on it.
If you are fixing an issue, the first step should be to create a test case that reproduces the incorrect behaviour. That will also help you to build an understanding of the issue at hand.
Pull requests introducing code changes without tests will generally not get merged. The same goes for PRs changing HTTPie’s behaviour and not providing documentation.
Conversely, PRs consisting of documentation improvements or tests for existing-yet-previously-untested behavior will very likely be merged. Therefore, docs and tests improvements are a great candidate for your first contribution.
Consider also adding a CHANGELOG
entry for your changes.
Go to https://github.com/jakubroztocil/httpie and fork the project repository.
# Clone your fork
git clone [email protected]:<YOU>/httpie.git
# Enter the project directory
cd httpie
# Create a branch for your changes
git checkout -b my_topical_branch
The Makefile contains a bunch of tasks to get you started. Just run the following command, which:
- Creates an isolated Python virtual environment inside
./venv
(via the standard library venv tool); - installs all dependencies and also installs HTTPie
(in editable mode so that the
http
command will point to your working copy). - and runs tests (It is the same as running
make install test
).
make
Activate the Python virtual environment—created via the make install
task during setup—for your active shell session using the following command:
source venv/bin/activate
(If you use virtualenvwrapper
, you can also use workon httpie
to
activate the environment — we have created a symlink for you. It’s a bit of
a hack but it works™.)
You should now see (httpie)
next to your shell prompt, and
the http
command should point to your development copy:
(httpie) ~/Code/httpie $ which http /Users/jakub/Code/httpie/venv/bin/http (httpie) ~/Code/httpie $ http --version 2.0.0-dev
(Btw, you don’t need to activate the virtual environment if you just want
run some of the make
tasks. You can also invoke the development
version of HTTPie directly with ./venv/bin/http
without having to activate
the environment first. The same goes for ./venv/bin/py.test
, etc.).
Please make sure your changes conform to Style Guide for Python Code (PEP8)
and that make pycodestyle
passes.
Please add tests for any new features and bug fixes.
When you open a pull request, GitHub Actions will automatically run HTTPie’s test suite against your code so please make sure all checks pass.
HTTPie uses the pytest runner.
# Run tests on the current Python interpreter with coverage.
make test
# Run tests with coverage
make test-cover
# Test PEP8 compliance
make pycodestyle
# Run extended tests — for code as well as .rst files syntax, packaging, etc.
make test-all
After you have activated your virtual environment (see setup), you can run specific tests from the terminal:
# Run specific tests on the current Python
py.test tests/test_uploads.py
py.test tests/test_uploads.py::TestMultipartFormDataFileUpload
py.test tests/test_uploads.py::TestMultipartFormDataFileUpload::test_upload_ok
See Makefile for additional development utilities.
If you are on a Windows machine and not able to run make
,
follow the next steps for a basic setup. As a prerequisite, you need to have
Python 3.6+ installed.
Create a virtual environment and activate it:
python -m venv --prompt httpie venv
venv\Scripts\activate
Install HTTPie in editable mode with all the dependencies:
pip install --upgrade -e . -r requirements-dev.txt
You should now see (httpie)
next to your shell prompt, and
the http
command should point to your development copy:
# In PowerShell:
(httpie) PS C:\Users\ovezovs\httpie> Get-Command http
CommandType Name Version Source
----------- ---- ------- ------
Application http.exe 0.0.0.0 C:\Users\ovezovs\httpie\venv\Scripts\http.exe
# In CMD:
(httpie) C:\Users\ovezovs\httpie> where http
C:\Users\ovezovs\httpie\venv\Scripts\http.exe
C:\Users\ovezovs\AppData\Local\Programs\Python\Python38-32\Scripts\http.exe
(httpie) C:\Users\ovezovs\httpie> http --version
2.3.0-dev
Use pytest
to run tests locally with an active virtual environment:
# Run all tests
py.test
Finally, feel free to add yourself to AUTHORS!