Giter Site home page Giter Site logo

python-http-client's Introduction

https://github.com/sendgrid/sendgrid-python/raw/HEAD/twilio_sendgrid_logo.png

Test and Deploy Badge Twitter Follow Codecov branch Code Climate Python Versions PyPI Version GitHub contributors MIT licensed

Quickly and easily access any RESTful or RESTful-like API.

If you are looking for the Twilio SendGrid API client library, please see this repo.

Table of Contents

Installation

Prerequisites

  • Python version 2.7 or 3.4+

Install Package

pip install python_http_client

or

easy_install python_http_client

API Key

Store your Twilio SendGrid API key in a .env file.

cp .env_sample .env

Edit the .env file and add your API key.

Quick Start

Here is a quick example:

GET /your/api/{param}/call

import python_http_client

global_headers = {"Authorization": "Bearer XXXXXXX"}
client = Client(host='base_url', request_headers=global_headers)
client.your.api._(param).call.get()
print(response.status_code)
print(response.headers)
print(response.body)

POST /your/api/{param}/call with headers, query parameters and a request body with versioning.

import python_http_client

global_headers = {"Authorization": "Bearer XXXXXXX"}
client = Client(host='base_url', request_headers=global_headers)
query_params = {"hello":0, "world":1}
request_headers = {"X-Test": "test"}
data = {"some": 1, "awesome": 2, "data": 3}
response = client.your.api._(param).call.post(request_body=data,
                                              query_params=query_params,
                                              request_headers=request_headers)
print(response.status_code)
print(response.headers)
print(response.body)

Usage

How to Contribute

We encourage contribution to our projects, please see our CONTRIBUTING guide for details.

Quick links:

Local Setup of the Project

The simplest local development workflow is by using docker.

  1. Install Docker
  2. Run docker-compose build (this builds the container)
  3. Run docker-compose up (this runs tests by default)

Troubleshooting

Please see our troubleshooting guide for any issues.

Announcements

All updates to this project is documented in our CHANGELOG.

Thanks

We were inspired by the work done on birdy and universalclient.

About

python-http-client is maintained and funded by Twilio SendGrid, Inc. The names and logos for python-http-client are trademarks of Twilio SendGrid, Inc.

License

The MIT License (MIT)

python-http-client's People

Contributors

0bsearch avatar arghyaiitb avatar chrishenry avatar chuck-sys avatar ciceropablo avatar delirious-lettuce avatar dibyadas avatar ely-alamillo avatar eshanholtz avatar frenzymadness avatar georgeyk avatar gugsrs avatar hugovk avatar jennifermah avatar jlindenger avatar mbernier avatar movanelli avatar mrlucascardoso avatar nathan78906 avatar ndagistanley avatar omerahmedkhan avatar prathamsharma92 avatar pushkyn avatar s0b0lev avatar stephenorjames avatar strikerrus avatar thinkingserious avatar twilio-ci avatar twilio-dx avatar vkmrishad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-http-client's Issues

Add our Developer Experience Engineer career opportunity to the README

Issue Summary

The role of Developer Experience Engineer just became available and we want to announce it in the README. Here is the copy:

If you're a software engineer who is passionate about #DeveloperExperience and/or #OpenSource, this is an incredible opportunity to join our #DX team as a Developer Experience Engineer and work with @thinkingserious and @aroach! Tell your friends :)

Acceptance Criteria

  • The above announcement is added to the Announcements section of this README

Getting ModuleNotFoundError for urllib2 for starter code given in sendgrid documentation

Issue Summary

A summary of the issue and the environment in which it occurs. If suitable, include the steps required to reproduce the bug. Please feel free to include screenshots, screencasts, code examples.

  • I am getting the ModuleNotFoundError for urllib2 for the starter code,

Steps to Reproduce

  1. https://app.sendgrid.com/guide/integrate/langs/python#settings/api_keys
  2. Run the code given there.
  3. Get the error

Any other information you want to share that is relevant to the issue being reported. Especially, why do you consider this to be a bug? What do you expect to happen instead?

Technical details:

  • python-http-client Version: 3.2.1
  • Python Version: 3.6

Update .md files for SEO-ness

We received an awesome PR for #hacktoberfest on our ruby library
We would love to see the same thing on the README in this repo as well.
Please replace the "-" with "_" in README, CONTRIBUTING, USE_CASES, USAGE files.

Thanks and happy Hacktoberfest!!

Add/Update Badges on README

Similar to what was done on the SendGrid node README:

  • put the logo at the top of the list
  • Add License like so
  • make sure the other badges are available like so:
![SendGrid Logo](https://uiux.s3.amazonaws.com/2016-logos/email-logo%402x.png)

For the following, make sure the correct repo is linked!
For email notifications, you can change the "nodejs" to the language of this repo (e.g. java, python, ruby, php, csharp, go, etc)

[![BuildStatus](https://travis-ci.org/sendgrid/sendgrid-nodejs.svg?branch=master)](https://travis-ci.org/sendgrid/sendgrid-nodejs)
[![Email Notifications Badge](https://dx.sendgrid.com/badge/nodejs)](https://dx.sendgrid.com/newsletter/nodejs)
[![npm](https://img.shields.io/npm/l/express.svg)]()
[![Twitter Follow](https://img.shields.io/twitter/follow/sendgrid.svg?style=social&label=Follow)](https://twitter.com/sendgrid)
[![GitHub contributors](https://img.shields.io/github/contributors/sendgrid/sendgrid-nodejs.svg)](https://github.com/sendgrid/sendgrid-nodejs/graphs/contributors)

Thank you and happy #Hacktoberfest!!

Hacktoberfest: SendGrid Current Status

SendGrid DX team current status:

  • Wow
  • OMG
  • THANK YOU

Hacktoberfest 2017 has completely blown us away. We have had over 900 pull requests from over 300 contributors all in the last 30 days. That is more PRs than we normally get in 2 years!
We are actively working to review, comment, and/or merge as many PRs as we possibly can as quickly as we can.

We are currently working on “intaking” all the PRs that have come in, oldest first (we have about 400 remaining to go through). We are making sure that each PR we review is one we have a chance of merging - there have been a couple spammy items that came through. Due to the massive influx of requests so far, @thinkingserious and @mbernier have been working nights and weekends all month just to keep up! We’re not even mad, this is amazing!

Hey, that’s great for you - but what about my shirt!

If you have signed the CLA before 11/1, but haven’t had a PR merged yet, do not despair! We know we are behind on even just commenting on every PR to show you that we received it (something we typically do). If you submitted a mergeable (non-spam, actually adds value to the project) PR during October 2017, we will grant access to this page to redeem your shirt, sticker, and hacker pin. Next year, we will be sure to communicate this information sooner. We are sorry for any confusion we have caused. We appreciate those of you who have reached out to find out what’s going on!

What can I do to help move things along?

Have you signed the CLA yet?
We can only merge items from contributors who signed the CLA

Can you help another contributor?
If you can identify potential problems, add suggestions, or even leave a comment with your review of another PR (Looks good to me! Or I approve this change), that would help us review those PRs much faster, making it easier to get to your PR.

Do you even write tests, friend?
If you see a place where we could have a test to validate a piece of functionality, add it in. We know We know! It’s just another PR we have to review and merge. You’re right, it is! However, the more tests we have, the earlier our CI tool can catch issues, saving us a review as well as back and forth time.

@cheukyin699, @delirious-lettuce, @dinosaurfiles, @gaurav0205, @georgeyk, @Kanav-7, @Madhur96, @NdagiStanley, @prabhakar267, @pushkyn, @rodxavier, @senthilkumar-e, @SidduH, @souri, @StephenOrJames

Implement auto-deploy to package manager

Issue Summary

When all tests on the master branch pass in Travis CI, we would like to auto-deploy the release to the package manager.

Before writing any code, we suggest you review our CONTRIBUTING.md file and propose your solution for discussion here in the comments. Thank you!

Aceptance Criteria

  • when Travis CI passes all tests on the master branch we auto-deploy to the package manager
  • the version is determined by the CHANGELOG.md

Support for Python 2.7.10 or Python 2.7.11

The CONTRIBUTING.md documentation suggests setting up Python 2.7.8, but you should also allow 2.7.10 and 2.7.11 since those are the newest releases for Mac/Linux environments.

Add a USAGE.md file

Usage files are really nice when they exist in a repo, because it makes it really obvious where to look for information about how to use this tool. It can be frustrating when you expect this file to be there and it's not.
Please add a USAGE.md file, you can see an example of this
here

Please make sure you modify the file for this repo (hint: Most of this information should be in the README file)

README Badges

Issue Summary

Please look at the badges we have on smtpapi-python and sendgrid-python, add the ones we're missing here, please!

Document new Git workflow in CHANGELOG.md

Issue Summary

We want to update our git workflow to function more like Gitflow. We need to update the CONTRIBUTING.md file and PULL_REQUEST_TEMPLATE to direct contributors to fork/branch off the development branch and to merge their PRs with the development branch. Once this issue is complete, we will be creating the development branch and making that branch the default. This is part of a larger strategy to execute releases for this SDK on a predictable cadence.

Acceptance Criteria

  • Update CONTRIBUTING.md documentation, explaining the process of forking and branching off the development branch and submitting PRs agains the development branch.
  • Update PULL_REQUEST_TEMPLATE with the same addition to the CONTRIBUTING.md documentation.

Add Category is Failed on Mail Class (mail.py)

Issue Summary

Failed Add Category on Mail Class (mail.py)

Steps to Reproduce

mail = Mail(m_from, subject, m_to, content)
mail.add_category(event_name)

I think the problem is on code:

 Line 75
        if self.categories is not None:
            mail["categories"] = [category.get() for category in
                                  self.categories]

Sould be:

 Line 75
        if self.categories is not None:
            mail["categories"] = self.categories

Note:
I want to make PR on that file but not find the file on this project...
Thanks

Technical details:

  • python-http-client Version (from pip): 3.0.0
  • Python Version: 3.6.3

Error converting Response.to_dict

Issue Summary

Response.to_dict fails to create dict.

Steps to Reproduce

  1. Make request (in my case, using the sendgrid lib response = sg.client.mail.send.post(request_body=mail.get())
  2. Call response.to_dict

The email successfully is sending and the response is the 202 variant - the error seems to be in deccoding the Response.body.

Stack Trace

Some of the stack has been omitted (things leading up to the response).

Traceback (most recent call last):

  ... stuff leading up to the call

  File "/Users/me/my_file.py", line 48, in general_request
    r = response.to_dict
  File "/Users/me/venv/lib/python3.6/site-packages/python_http_client/client.py", line 55, in to_dict
    return json.loads(self.body.decode('utf-8'))
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Create a Use Cases Directory

Due to the success we have seen from hacktoberfest, we are seeing more people create use cases. This is amazing!
We want to make sure that everyone can find them. Please help us to break up this file and make it easier to read and manage:

  • Create a Use Cases Directory
  • Put a README.md in this directory
  • Make a file in the new directory for each individual Use Case from USE_CASES.md, copy the content to this file
  • For each file you've created, link to it from the README you created
  • Organize the links in the README by type
  • Make sure the names of the files you created are related to the Use Case
    Thank you!

Create first time contributor documentation

Issue Summary

Our open sourced documentation has a great first time contributor page that we wish to duplicate here.

Acceptance Criteria

  • We have a file in the root directory called first-timers.md or similar that helps a first time contributor make their first PR (please use our CONTRIBUTOR.md file for inspiration as well as this page)
  • We provide a link to tasks with the labels "difficulty: easy" and "status: help wanted" (example query) to all the repos listed here, please scroll to the bottom.

Add a .env_sample file

Our preference is that users have an environment file when using the SendGrid API, because it is less likely that someone would commit their credentials to github.

Please make a couple changes:

  • make a .env_sample file that contains: export SENDGRID_API_KEY=''
  • make (or add) a .gitignore file and include .env
  • add instructions to the README file about how to copy .env_sample to .env and add the API Key

Build this repo in Docker so it can be developed locally

Issue Summary

It is really nice to be able to develop locally inside a docker container! Please dockerize this repo!

  • You can probably use the Dockerfile for sendgrid-python
  • Please setup docker-compose to use a local volume for the library files (this is currently different from sendgrid-python)
  • Please add information to the README and USAGE files about how to startup the container

Add a PEP8 check to travis.yml

Issue Summary

According to codeClimate, this repo is not conforming with PEP8 standards. Please add a PEP8 check to Travis that will cause the build to fail if the proper rules are not being met.

Steps to Reproduce

  1. Install the check
  2. Make obvious PEP8 standards violation in one of the files
  3. Make a PR
  4. Let the build run
  5. See a failure in the build
  6. Fix the issue and make a comment (so we know)
  7. Get a free Hacktoberfest shirt (so long as your first PR is in Oct)

Test of date range in license file

I would like to discuss whether is a good idea to have a test which is testing date range (Copyright (c) 2012 - 2019 SendGrid, Inc.). I understand the need described in the original issue (#57) but I don't think that it's a good idea to have a unit test for that.

HTTP client is packaged in various Linux distributions. Now imagine that you have packaged HTTP client version from 2018 and you want just a rebuild that package in 2019. It'll fail.
Also, when you create a first pull request after a new year with some bugfix or a new feature, the tests will fail and it's not your fault.

Some workaround might be to change the date range in license file as a first thing every year but you probably don't want to release a new version and without a new version, nobody will update until they have to.

There is a PR to fix the problem now (#120) but I'd rather remove that test entirely. If it's really necessary to test it, it might be possible to move it to Travis config so it'd tested only in CI and not with unit tests.

What do you think?

HTTP 400 on second mail send

Hi, I'm getting a 400 from this library when using sendgrid to send emails, but only after i've successfully sent a first email.

24-11-2019:13:59:20,571 INFO     [_internal.py:122] 127.0.0.1 - - [24/Nov/2019 13:59:20] "POST /v1/auth/user/forgot_password HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/python_http_client/client.py", line 174, in _make_request
    return opener.open(request, timeout=timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/seluj78/Projects/VisionaeAPI/visionae_api/routes/v1/authentication.py", line 84, in user_password_reset
    send_password_reset_mail(data['email'])
  File "/Users/seluj78/Projects/VisionaeAPI/visionae_api/utils/mail.py", line 55, in send_password_reset_mail
    sendmail(recipients=user_email, subject="Password reset for Visionae", html=html)
  File "/Users/seluj78/Projects/VisionaeAPI/visionae_api/utils/mail.py", line 32, in sendmail
    from_email=from_email, to_email=recipients, subject=subject, html=html
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/flask_sendgrid.py", line 74, in send_email
    return self.client.mail.send.post(request_body=self.get())
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/python_http_client/client.py", line 262, in http_request
    self._make_request(opener, request, timeout=timeout)
  File "/Users/seluj78/Projects/VisionaeAPI/venv/lib/python3.7/site-packages/python_http_client/client.py", line 178, in _make_request
    raise exc
python_http_client.exceptions.BadRequestsError: HTTP Error 400: Bad Request

In this log you can see the first request going fine, then the second ending up with a 500 because of the 400 raised by this library. Any idea why ?

python-http-client should define it's own error class which can be imported by consuming libraries

Issue Summary

If the response is not success (i.e not HTTP2xx) the library throws a urllib HTTPError.
For clients consuming this library, they now need to know that it was implemented in urllib, import that module into their application and handle the error.

Ideally, a consuming application only needs to know about python-http-client and not how urllib was implemented in order to handle common place http errors.

Steps to Reproduce

  1. make an api call that returns anything other than HTTP2xx
  2. attempt to handle error raised without importing urllib and without doing a catch all.

Technical details:

  • python-http-client Version: master (latest commit: [commit number])
  • Python Version: all

Feature Request: HTTP Client Side Compression

Hi,

I have an API server (Node.js Express-based) that supports GZIP compression. Are there any plans on adding support for compression? I will be passing around large JSON objects to my API server so compression should help alot with bandwidth savings and latency reduction.

Thanks!

Create use cases directory

Issue Summary

Other SendGrid repos have a use cases directory, this one should too.

USE_CASES.md should be deleted as well.

Add a .codeclimate.yml file to this repo

It is possible to configure how CodeClimate looks at a repository.
These Docs explain how this is done. Please create an appropriate .codeclimate.yml for this repo. It should test the main language of the repo and run tests.

setup.py includes tests directory in package data

Issue Summary

setup.py includes all packages (containing an init.py) using find_packages(). This is a problem because it will include the tests directory as a top level importable module in the local app, breaking our own tests that happen to live in a directory with the same name.

Steps to Reproduce

  1. pip install python-http-client
  2. ls /usr/local/lib/python3.7/site-packages/ and observe tests is there as a top level importable package
  3. import tests from local app will import python-http-client's tests, not the app's tests

Either init.py should be excluded from the package data, or (rather) the entire tests directory.

Technical details:

  • python-http-client 3.2.0+
  • Python Version: 3.7

Can't support the same query parameter twice in one URL

Issue Summary

As far as I can tell, this library doesn't let you make requests to URLs which use the same query parameter key more than once, such as http://example.com?bar=foo&bar=baz. This is a problem because many HTTP APIs use this pattern, including SendGrid's own v3 endpoint /subusers/reputations. It might be good if you could pass either a dict or a list of two-tuples.

Steps to Reproduce

Look at python_http_client.client.Client._build_url. query_params is expected to be a dict, or at least something on which you can call items.

Technical details:

  • python-http-client Version: discovered on 1.2.3 but looks like it's applicable to master as well (latest commit: master)
  • Python Version: 3.6

Add a unittest to check the license.md file date range

The end year in the license file should be "this year" and this should be checked on every run of the tests. If the end year is no correct, fail the test.
example:

Copyright (c) 2012-2016 SendGrid, Inc.
It is 2017, so this should be:
Copyright (c) 2012-2017 SendGrid, Inc.
and the test should fail.
--done

Add unittest to check for specific repo files

This repo should have the following list of files included:

  • ./Docker or docker/Docker
  • ./docker-compose.yml or ./docker/docker-compose.yml
  • ./.env_sample
  • ./.gitignore
  • ./.travis.yml
  • ./.codeclimate.yml
  • ./CHANGELOG.md
  • ./CODE_OF_CONDUCT.md
  • ./CONTRIBUTING.md
  • ./.github/ISSUE_TEMPLATE
  • ./LICENSE.md
  • ./.github/PULL_REQUEST_TEMPLATE
  • ./README.md
  • ./TROUBLESHOOTING.md
  • ./USAGE.md
  • ./USE_CASES.md

This PR is only asking for tests of the existence of these files, if the files do not exist when you run the tests - do not worry about the tests not passing. We will identify this and create a new PR for the issue.
Thank you!

HTTP and SMTP clients by SendGrid

Sorry, if this is a wrong place to ask this particular question.

I noticed that SendGrid created a few HTTP and SMTP in different languages, Python, Ruby, Go, etc. So I was wondering, what is the grand idea behind this?

I know that at least in Python there are quite a few good libraries for HTTP (like requests) and SMTP. So I'm interested to know why you're writing these libraries? I'm curious because I have some suspicion that you would like to create HTTP and SMTP libraries with same API across different languages, because you want to generate SendGrid clients automatically from some declarative description. Is something like this the case? Or are you, maybe, doing this to have more control over dependencies?

Can't run tests without setting up a web service

As quick as it is to set up a simple CRUD interface in something like Flask, a user shouldn't be forced to set up entries in .env in order to run tests. Tests should have a mocked service available to run without any setup by the user.

Would be handy if Client was pickleable

Using the Sendgrid Python lib (and sgbackend lib) which depends on this library (within Django), sending tasks to a background queue that first pickles the Mail being sent out, due to how Django attached the connection (backend) to each Mail object, it has an instance of the Client on it. It then pickles it to store it for the task queue and fails because pickle.dumps doesn't like the Client object, I think because getitem is overrode, so from what I can tell you just need to define setstate and getstate on Client's implementation.

Possible 3.2.0 Python 3 Release Problems

Issue Summary

About when version 3.2.0 got released our build using 3.1.0 broke.
We are using pipenv to install the packages and pipenv started to complain that the sha256 hash of 3.1.0 has changed:

An error occurred while installing python-http-client==3.1.0 --hash=sha256:7e430f4b9dd2b621b0051f6a362f103447ea8e267594c602a5c502a0c694ee38! Will try again.
Installing initially failed dependencies…
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1874, in do_install
[pipenv.exceptions.InstallError]:       keep_outdated=keep_outdated
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1253, in do_init
[pipenv.exceptions.InstallError]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 859, in do_install_dependencies
[pipenv.exceptions.InstallError]:       retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 763, in batch_install
[pipenv.exceptions.InstallError]:       _cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 681, in _cleanup_procs
[pipenv.exceptions.InstallError]:       raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: ['Looking in indexes: https://pypi.org/simple, http://10.0.0.4/simple', 'Collecting python-http-client==3.1.0 (from -r /tmp/pipenv-2q1u1rxu-requirements/pipenv-2qf8ouw3-requirement.txt (line 1))', '  Using cached https://files.pythonhosted.org/packages/5c/5c/9e0cde562757bdb385a3644235e7c4da6f76c8a43d573eb76384ef461d40/python_http_client-3.1.0-py3-none-any.whl']
[pipenv.exceptions.InstallError]: ['ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.', '    python-http-client==3.1.0 from https://files.pythonhosted.org/packages/5c/5c/9e0cde562757bdb385a3644235e7c4da6f76c8a43d573eb76384ef461d40/python_http_client-3.1.0-py3-none-any.whl#sha256=84267d8dcb7bcdf4c5cef321a533cc584c5b52159d4a4d3d4139bfed347b8006 (from -r /tmp/pipenv-2q1u1rxu-requirements/pipenv-2qf8ouw3-requirement.txt (line 1)):', '        Expected sha256 7e430f4b9dd2b621b0051f6a362f103447ea8e267594c602a5c502a0c694ee38', '             Got        84267d8dcb7bcdf4c5cef321a533cc584c5b52159d4a4d3d4139bfed347b8006']
ERROR: ERROR: Package installation failed...

Furthermore, it is not possible to install 3.2.0 using pipenv

An error occurred while installing python-http-client==3.2.0 --hash=sha256:eaea36b6bffc1530eb31311588570d6a5b8a9b124c1a6e08d09a5dc8a92a092f! Will try again.
Installing initially failed dependencies…
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1874, in do_install
[pipenv.exceptions.InstallError]:       keep_outdated=keep_outdated
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1253, in do_init
[pipenv.exceptions.InstallError]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 859, in do_install_dependencies
[pipenv.exceptions.InstallError]:       retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 763, in batch_install
[pipenv.exceptions.InstallError]:       _cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 681, in _cleanup_procs
[pipenv.exceptions.InstallError]:       raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: ['Looking in indexes: https://pypi.org/simple, http://10.0.0.4/simple', 'Collecting python-http-client==3.2.0 (from -r /tmp/pipenv-12fjrzlj-requirements/pipenv-bj2op5q0-requirement.txt (line 1))']
[pipenv.exceptions.InstallError]: ['ERROR: Could not find a version that satisfies the requirement python-http-client==3.2.0 (from -r /tmp/pipenv-12fjrzlj-requirements/pipenv-bj2op5q0-requirement.txt (line 1)) (from versions: 1.0.0, 1.0.1, 1.0.2, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.2.3, 1.2.4, 2.0.0, 2.1.0, 2.1.1, 2.2.0, 2.2.1, 2.3.0, 2.4.0, 3.0.0, 3.1.0)', 'ERROR: No matching distribution found for python-http-client==3.2.0 (from -r /tmp/pipenv-12fjrzlj-requirements/pipenv-bj2op5q0-requirement.txt (line 1))']
ERROR: ERROR: Package installation failed...

A look at the pypi repository ( https://pypi.org/simple/python-http-client/ ) show the following:

python_http_client-3.0.0-py2.py3-none-any.whl
python_http_client-3.0.0.tar.gz
python_http_client-3.1.0-py3-none-any.whl
python_http_client-3.1.0.tar.gz
python_http_client-3.2.0-py2-none-any.whl

Looking at the .whl packages:

  • Version 3.0.0 got released for python 2 and python 3
  • Version 3.1.0 only has a release for python 3
  • Version 3.2.0 only has a release for python 2
python-http-client pypi repository Screen Shot 2019-09-12 at 17 17 18

I'm wondering: did the release for 3.2.0 override the old 3.1.0 python 3 package instead of being released as a 3.2.0 python 3 package?

Steps to Reproduce

$ pipenv install --verbose python-http-client
pipenv install --verbose python-http-client
Creating a Pipfile for this project…
Installing python-http-client…
⠋ Installing...Installing 'python-http-client'
$ ['/home/user/.local/share/virtualenvs/user-39SWxFAg/bin/pip', 'install', '--verbose', '--upgrade', 'python-http-client', '-i', 'https://pypi.org/simple']
Adding python-http-client to Pipfile's [packages]…
✔ Installation Succeeded 
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Using pip: -i https://pypi.org/simple
Using pip: -i https://pypi.org/simple
Using pip: -i https://pypi.org/simple

                          ROUND 1                           
Current constraints:
  python-http-client

Finding the best candidates:
  found candidate python-http-client==3.2.0 (constraint was <any>)

Finding secondary dependencies:
  python-http-client==3.2.0 requires -
------------------------------------------------------------
Result of round 1: stable, done


Updated Pipfile.lock (d26f8c)!
Installing dependencies from Pipfile.lock (d26f8c)…
Installing 'python-http-client'▉▉▉▉▉▉▉▉ 0/1 — 00:00:00
$ ['/home/user/.local/share/virtualenvs/user-39SWxFAg/bin/pip', 'install', '--verbose', '--upgrade', '--no-deps', '-r', '/tmp/pipenv-txiece61-requirements/pipenv-vls1l97r-requirement.txt', '-i', 'https://pypi.org/simple', '--require-hashes']
Created temporary directory: /tmp/pip-ephem-wheel-cache-rc_xps4w
Created temporary directory: /tmp/pip-req-tracker-ampybis3
Created requirements tracker '/tmp/pip-req-tracker-ampybis3'
Created temporary directory: /tmp/pip-install-xde3vkrb
Collecting python-http-client==3.2.0 (from -r /tmp/pipenv-txiece61-requirements/pipenv-vls1l97r-requirement.txt (line 1))
  1 location(s) to search for versions of python-http-client:
  * https://pypi.org/simple/python-http-client/
  Getting page https://pypi.org/simple/python-http-client/
  Found index url https://pypi.org/simple
  Looking up "https://pypi.org/simple/python-http-client/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection (1): pypi.org:443
  https://pypi.org:443 "GET /simple/python-http-client/ HTTP/1.1" 304 0
  Analyzing links from page https://pypi.org/simple/python-http-client/
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/48/51/975e4ed7eebc10d82c16a6fe0f03a3d4cda00c7679a17aa896491ff9fb64/python_http_client-1.0.0.macosx-10.10-x86_64.exe#sha256=ab04220c135c87fe8a0ff6a7613472129f02182a2dc1ba7cadaaa1a479e6a26d (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ac/7b/1266b71d2395c04c60f858cedfec0adb03a445cf4e96a6b3a12f8a0b4b36/python_http_client-1.0.0.tar.gz#sha256=0d9ad638aadefb2ca581700d45e2afcbe94c77ee0b8ab5099b0ca9ecd3613521 (from https://pypi.org/simple/python-http-client/), version: 1.0.0
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/81/73/75992a9400ec78ca126537fa27e212050ec5676f076b6e2583ebee4661d4/python_http_client-1.0.1.macosx-10.10-x86_64.exe#sha256=bd2893c0387ec637d94d4aa5ba7a11fb982641af10452d8dd91bb59cb7a098ea (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/e9/8b/41097adc378364b22a7a0fdf52303e922bf152c48a23f121851bcda8c852/python_http_client-1.0.1.tar.gz#sha256=50d0a597bf445b38f1a3fdb6bf71e02c22e8d0052e6dfb0fa7e2df497ed02a9a (from https://pypi.org/simple/python-http-client/), version: 1.0.1
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/40/cd/c0cfbef2615f746303c9ba54953c923ac233a4726ca87acdde2fd1d6fdc0/python_http_client-1.0.2.macosx-10.10-x86_64.exe#sha256=153ad6d9691126750a871baa25a906ef549bde53f96822f5f1fe98668f078fcb (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/dd/ec/01315d366d69d1ee02181062b55a6e6852e877d9e98cac9ae371185d8f8b/python_http_client-1.0.2.tar.gz#sha256=e9b72cc165f507f39142445dd898bf102b4a99b1ba6fd80d34c52b95e4130951 (from https://pypi.org/simple/python-http-client/), version: 1.0.2
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/20/3e/d496b197cd8d4f9872a84ac0c393910173c8296928774d6a3b9953f5701d/python_http_client-1.1.0.macosx-10.10-x86_64.exe#sha256=8ea23ac5ed301bb29bd78b0178b6e6250a144e57987d42da5b46d895dbc6167f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ce/d0/22a5a7db798cfa82ea02b9381aa0dc7a19e8e5f7dc1f55b2378e596b4daa/python_http_client-1.1.0.tar.gz#sha256=ec9effbdfed119aaf4bf10f2a52c8b62df9f34b858f4104228fb3d20903073e4 (from https://pypi.org/simple/python-http-client/), version: 1.1.0
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/63/47/d1042c2c58ec273f0a87011d86d8269cd68999bb3abdc1a1655bbad4929e/python_http_client-1.1.1.macosx-10.10-x86_64.exe#sha256=e7315a49ff25fa8676e9320ec244b009d15a45e3c1a20fc764fbf2103eeef9ba (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ad/3a/ce29c33759658e1c9b5e9df957aaf3246ec498e7364d391bccf76711be2b/python_http_client-1.1.1.tar.gz#sha256=5aa652c87cd383a33e918f5123c182ac2d60cf7b263e8c7cacfb8353f53fcefc (from https://pypi.org/simple/python-http-client/), version: 1.1.1
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/0f/8f/2c912c4a8f3fe1fbb365b370f31d419d5f5b4cdb9450b02ff65de3dc60c6/python_http_client-1.1.2.macosx-10.10-x86_64.exe#sha256=f46112a5ccabc6188fa93435d0faf92b4a0aa2d3e4d54824820b5beb36ca0590 (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ff/f6/544eabb71e93648cbe54bc6889bdac9cf5b5f979ef67bbafbe1ab3dad961/python_http_client-1.1.2.tar.gz#sha256=a46a470eb13f9643e5ce63dc67c3193864541325b6fe868ef459682b84cb1b5b (from https://pypi.org/simple/python-http-client/), version: 1.1.2
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/5f/8a/bef7d1f57ecd14403c984c2cc8abcad385ee0d952e9f428ea176c026b7a1/python_http_client-1.1.3.macosx-10.10-x86_64.exe#sha256=0676ff97678be4a1b64f0eef853767d84c99cfc35bebcd932e8ea0bd3850fa37 (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/27/55/9ec10009af78a01ff1796aef497bd32f308ccc4dc23155f926a3c187d8de/python_http_client-1.1.3.tar.gz#sha256=4bc075607f4005d66a7b5039ac836ceb467bb091cce034c343d857182cd7893d (from https://pypi.org/simple/python-http-client/), version: 1.1.3
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/7d/77/220f2aa0415e501653e8b6983e899678b965de14c83c99c17e1e6ff3111b/python_http_client-1.2.3.macosx-10.10-x86_64.exe#sha256=f866df885580617f2f86553bc2ce454468df951d288ca99d52c542ae424dda18 (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/90/75/59cef3ed437022a545177ec9fc59d633a4064c1c05a2571058aea5ac9c49/python_http_client-1.2.3.tar.gz#sha256=3f25f2431c61dfbe494470d671672b2c6c86a9bcd24c340259e86813fe3dd5ac (from https://pypi.org/simple/python-http-client/), version: 1.2.3
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/32/4c/9efb45300100f993b111e69b30b07906aa21ebd9e8a2fc0d8398e0ee44ae/python_http_client-1.2.4-py2-none-any.whl#sha256=11b60d3e479df89b841eb3f865bfca4c8beebef5a62150a4c394ca509dfb084b (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/fc/7f/38ed0e29a4c2ef0fba00bf48266e7e08bc28ed91f852a70ab37a19d59915/python_http_client-1.2.4.tar.gz#sha256=99f47c173d85769390c13f9fc712046ed1de7686e33466da6ad7687f707ebcae (from https://pypi.org/simple/python-http-client/), version: 1.2.4
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/8b/b7/e5dd67637267f9e4d674dcdc47aaa9fe82bf60bdf2d500de115a92133cf7/python_http_client-2.0.0-py2-none-any.whl#sha256=bb143f9ce1fc053c6f0ba71a34c37056c582ad9e1c52e0bed1a253e0e548f51f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/28/12/2064c0b6a1826036208314eea1b2a93d112340551364948ca7bcb4146fe3/python_http_client-2.0.0.tar.gz#sha256=602f810f05c504a77397897193f6dfe1d0a810576c2586aa401f4b2eda098327 (from https://pypi.org/simple/python-http-client/), version: 2.0.0
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/5d/52/270069ce06123cd010d9897b2550d4fc5692d183d2c2d3e31cd59cbb17d4/python_http_client-2.1.0-py2-none-any.whl#sha256=d879e0ac1ab0f73473329af3ffe89c0e7389a810ab30d91d0edeaf90f7848e0f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/cd/8b/9ba8081a8251262611468889fc7dd4af16901f9af0527cbb7e19c70f9a6c/python_http_client-2.1.0.tar.gz#sha256=8f8548f4fcd666e0aa162b5aa18d41824ef52260a962325d41af98002219f23e (from https://pypi.org/simple/python-http-client/), version: 2.1.0
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/db/34/fa144567762ed51668d97b9c48f3d0ac5cf0e9d3e488575f9d7757c3a973/python_http_client-2.1.1-py2-none-any.whl#sha256=06eb8cf5ada17d89af5b0b38b348303ff60c4a2fd91c341d8174a6de2303302f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/39/05/4090aaa066bdf83792989f1d44d77c5772cb4c37d6778c8650dcb3fb81dc/python_http_client-2.1.1.tar.gz#sha256=65a29260a646824cd54da044a4fb113e380d45055654aa24519f79c797eee3c3 (from https://pypi.org/simple/python-http-client/), version: 2.1.1
    Found link https://files.pythonhosted.org/packages/94/9c/dd62c26d1b1ae149eb4b361754b0496c396b774cc975c943b5fa2b38dfa6/python_http_client-2.2.0-py2.py3-none-any.whl#sha256=4bf1f0fdfdae6c001c99ec60b2600da7fea742ca43ca0537a9c51f61644b5534 (from https://pypi.org/simple/python-http-client/), version: 2.2.0
    Found link https://files.pythonhosted.org/packages/94/c6/eefff9792067087493a1ae3ecae43df3677cdffb9d4abf80ef8b3f9ec9ce/python_http_client-2.2.0.tar.gz#sha256=1c5d4c93800c60131bc23db2035fd0426012e0c2549f211a23a9d8df80745ef4 (from https://pypi.org/simple/python-http-client/), version: 2.2.0
    Found link https://files.pythonhosted.org/packages/97/c5/45b826bad60521001ff7fe3f8af0436f9b62b078724f3673fbe7b5735704/python_http_client-2.2.1-py2.py3-none-any.whl#sha256=2e86716cdc68c28bf25fd64786246cb2d91a6803dd3a4e1028204f1e63ee90bc (from https://pypi.org/simple/python-http-client/), version: 2.2.1
    Found link https://files.pythonhosted.org/packages/8c/14/0b8da61e21a4dc62ca11fca891bae8f06388e481d858bc42d35555ea6c2c/python_http_client-2.2.1.tar.gz#sha256=c9aedb0360c65ad769c0d083b664ab4e384f84f77a20726355c6f2ff540da7f9 (from https://pypi.org/simple/python-http-client/), version: 2.2.1
    Found link https://files.pythonhosted.org/packages/1f/3b/8f3b80ad341a2f564338c4429031be5e4e00ec35d88bce9775d4cb8405d3/python_http_client-2.3.0-py2.py3-none-any.whl#sha256=16f62df93271f4760c244babd578671bed6f28af096488c80ff9a13f3050da4f (from https://pypi.org/simple/python-http-client/), version: 2.3.0
    Found link https://files.pythonhosted.org/packages/df/ed/7fd55b6a3b9f86afeaaf6be48e4bdfb05ab22b7eed191f899a7a4230d227/python_http_client-2.3.0.tar.gz#sha256=f7b8ebea326c34f23d1d3e33583bdbe13a13a937ac50d4cd377a687bdf35925b (from https://pypi.org/simple/python-http-client/), version: 2.3.0
    Found link https://files.pythonhosted.org/packages/3c/bb/542ac563cbede90eb297739421ee0c311c9bf28addaeb80e62ffa0ed4e37/python_http_client-2.4.0-py2.py3-none-any.whl#sha256=291497a005a489e4df07788544a677503652a41aa5369c622ac79e338058cf0b (from https://pypi.org/simple/python-http-client/), version: 2.4.0
    Found link https://files.pythonhosted.org/packages/81/fd/72ed766f4ecc3e64ee8848faf96497f55b7d66a59e1585eb91bdf4321a03/python_http_client-2.4.0.tar.gz#sha256=c8d459812789f06e7b7df06fbc527bfe1378bb8847e8e0220e3f966335bad8a7 (from https://pypi.org/simple/python-http-client/), version: 2.4.0
    Found link https://files.pythonhosted.org/packages/5e/9a/5fd493d1e30c44ddb2c73a43ac94bc4739c5f5b6b0a5a41f3a547155f4b7/python_http_client-3.0.0-py2.py3-none-any.whl#sha256=c9571823fb6994793bec520f8dbe8dd74ccdd28072b1fae1ab9fb728728e6619 (from https://pypi.org/simple/python-http-client/), version: 3.0.0
    Found link https://files.pythonhosted.org/packages/9a/f8/0ef3d2869c11a46687ea4fea67858ad39f03f2f1ef4f80618c377bf479ca/python_http_client-3.0.0.tar.gz#sha256=481dd0bb1ae8248e47d16e73642813006025f164e6a715f4b1e53d7ecae17675 (from https://pypi.org/simple/python-http-client/), version: 3.0.0
    Found link https://files.pythonhosted.org/packages/5c/5c/9e0cde562757bdb385a3644235e7c4da6f76c8a43d573eb76384ef461d40/python_http_client-3.1.0-py3-none-any.whl#sha256=84267d8dcb7bcdf4c5cef321a533cc584c5b52159d4a4d3d4139bfed347b8006 (from https://pypi.org/simple/python-http-client/), version: 3.1.0
    Found link https://files.pythonhosted.org/packages/e0/74/e43e494a44e78a1188552aa9dfc2f738cd4089b6f8a18c49f186f2b841a3/python_http_client-3.1.0.tar.gz#sha256=7e430f4b9dd2b621b0051f6a362f103447ea8e267594c602a5c502a0c694ee38 (from https://pypi.org/simple/python-http-client/), version: 3.1.0
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/15/16/c00bb82937874010243ec4fd885b137d35661f724a7248eb5d24dca9428e/python_http_client-3.2.0-py2-none-any.whl#sha256=eaea36b6bffc1530eb31311588570d6a5b8a9b124c1a6e08d09a5dc8a92a092f (from https://pypi.org/simple/python-http-client/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
  Checked 0 links for project 'python-http-client' against 1 hashes (0 matches, 0 no digest): discarding no candidates
  ERROR: Could not find a version that satisfies the requirement python-http-client==3.2.0 (from -r /tmp/pipenv-txiece61-requirements/pipenv-vls1l97r-requirement.txt (line 1)) (from versions: 1.0.0, 1.0.1, 1.0.2, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.2.3, 1.2.4, 2.0.0, 2.1.0, 2.1.1, 2.2.0, 2.2.1, 2.3.0, 2.4.0, 3.0.0, 3.1.0)
Cleaning up...
Removed build tracker '/tmp/pip-req-tracker-ampybis3'
ERROR: No matching distribution found for python-http-client==3.2.0 (from -r /tmp/pipenv-txiece61-requirements/pipenv-vls1l97r-requirement.txt (line 1))
Exception information:
Traceback (most recent call last):
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 188, in main
    status = self.run(options, args)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 345, in run
    resolver.resolve(requirement_set)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 196, in resolve
    self._resolve_one(requirement_set, req)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 359, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 307, in _get_abstract_dist_for
    self.require_hashes
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 134, in prepare_linked_requirement
    req.populate_link(finder, upgrade_allowed, require_hashes)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/req/req_install.py", line 211, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/index.py", line 1228, in find_requirement
    'No matching distribution found for %s' % req
pip._internal.exceptions.DistributionNotFound: No matching distribution found for python-http-client==3.2.0 (from -r /tmp/pipenv-txiece61-requirements/pipenv-vls1l97r-requirement.txt (line 1))
An error occurred while installing python-http-client==3.2.0 --hash=sha256:eaea36b6bffc1530eb31311588570d6a5b8a9b124c1a6e08d09a5dc8a92a092f! Will try again.
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:03
Installing initially failed dependencies…
Installing 'python-http-client'▉▉▉▉▉▉ 0/1 — 00:00:00
$ ['/home/user/.local/share/virtualenvs/user-39SWxFAg/bin/pip', 'install', '--verbose', '--upgrade', '--no-deps', '-r', '/tmp/pipenv-txiece61-requirements/pipenv-pzpt2zys-requirement.txt', '-i', 'https://pypi.org/simple', '--require-hashes']
Created temporary directory: /tmp/pip-ephem-wheel-cache-rz9p6asj
Created temporary directory: /tmp/pip-req-tracker-zbxyn7an
Created requirements tracker '/tmp/pip-req-tracker-zbxyn7an'
Created temporary directory: /tmp/pip-install-px4y88au
Collecting python-http-client==3.2.0 (from -r /tmp/pipenv-txiece61-requirements/pipenv-pzpt2zys-requirement.txt (line 1))
  1 location(s) to search for versions of python-http-client:
  * https://pypi.org/simple/python-http-client/
  Getting page https://pypi.org/simple/python-http-client/
  Found index url https://pypi.org/simple
  Looking up "https://pypi.org/simple/python-http-client/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection (1): pypi.org:443
  https://pypi.org:443 "GET /simple/python-http-client/ HTTP/1.1" 304 0
  Analyzing links from page https://pypi.org/simple/python-http-client/
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/48/51/975e4ed7eebc10d82c16a6fe0f03a3d4cda00c7679a17aa896491ff9fb64/python_http_client-1.0.0.macosx-10.10-x86_64.exe#sha256=ab04220c135c87fe8a0ff6a7613472129f02182a2dc1ba7cadaaa1a479e6a26d (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ac/7b/1266b71d2395c04c60f858cedfec0adb03a445cf4e96a6b3a12f8a0b4b36/python_http_client-1.0.0.tar.gz#sha256=0d9ad638aadefb2ca581700d45e2afcbe94c77ee0b8ab5099b0ca9ecd3613521 (from https://pypi.org/simple/python-http-client/), version: 1.0.0
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/81/73/75992a9400ec78ca126537fa27e212050ec5676f076b6e2583ebee4661d4/python_http_client-1.0.1.macosx-10.10-x86_64.exe#sha256=bd2893c0387ec637d94d4aa5ba7a11fb982641af10452d8dd91bb59cb7a098ea (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/e9/8b/41097adc378364b22a7a0fdf52303e922bf152c48a23f121851bcda8c852/python_http_client-1.0.1.tar.gz#sha256=50d0a597bf445b38f1a3fdb6bf71e02c22e8d0052e6dfb0fa7e2df497ed02a9a (from https://pypi.org/simple/python-http-client/), version: 1.0.1
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/40/cd/c0cfbef2615f746303c9ba54953c923ac233a4726ca87acdde2fd1d6fdc0/python_http_client-1.0.2.macosx-10.10-x86_64.exe#sha256=153ad6d9691126750a871baa25a906ef549bde53f96822f5f1fe98668f078fcb (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/dd/ec/01315d366d69d1ee02181062b55a6e6852e877d9e98cac9ae371185d8f8b/python_http_client-1.0.2.tar.gz#sha256=e9b72cc165f507f39142445dd898bf102b4a99b1ba6fd80d34c52b95e4130951 (from https://pypi.org/simple/python-http-client/), version: 1.0.2
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/20/3e/d496b197cd8d4f9872a84ac0c393910173c8296928774d6a3b9953f5701d/python_http_client-1.1.0.macosx-10.10-x86_64.exe#sha256=8ea23ac5ed301bb29bd78b0178b6e6250a144e57987d42da5b46d895dbc6167f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ce/d0/22a5a7db798cfa82ea02b9381aa0dc7a19e8e5f7dc1f55b2378e596b4daa/python_http_client-1.1.0.tar.gz#sha256=ec9effbdfed119aaf4bf10f2a52c8b62df9f34b858f4104228fb3d20903073e4 (from https://pypi.org/simple/python-http-client/), version: 1.1.0
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/63/47/d1042c2c58ec273f0a87011d86d8269cd68999bb3abdc1a1655bbad4929e/python_http_client-1.1.1.macosx-10.10-x86_64.exe#sha256=e7315a49ff25fa8676e9320ec244b009d15a45e3c1a20fc764fbf2103eeef9ba (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ad/3a/ce29c33759658e1c9b5e9df957aaf3246ec498e7364d391bccf76711be2b/python_http_client-1.1.1.tar.gz#sha256=5aa652c87cd383a33e918f5123c182ac2d60cf7b263e8c7cacfb8353f53fcefc (from https://pypi.org/simple/python-http-client/), version: 1.1.1
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/0f/8f/2c912c4a8f3fe1fbb365b370f31d419d5f5b4cdb9450b02ff65de3dc60c6/python_http_client-1.1.2.macosx-10.10-x86_64.exe#sha256=f46112a5ccabc6188fa93435d0faf92b4a0aa2d3e4d54824820b5beb36ca0590 (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/ff/f6/544eabb71e93648cbe54bc6889bdac9cf5b5f979ef67bbafbe1ab3dad961/python_http_client-1.1.2.tar.gz#sha256=a46a470eb13f9643e5ce63dc67c3193864541325b6fe868ef459682b84cb1b5b (from https://pypi.org/simple/python-http-client/), version: 1.1.2
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/5f/8a/bef7d1f57ecd14403c984c2cc8abcad385ee0d952e9f428ea176c026b7a1/python_http_client-1.1.3.macosx-10.10-x86_64.exe#sha256=0676ff97678be4a1b64f0eef853767d84c99cfc35bebcd932e8ea0bd3850fa37 (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/27/55/9ec10009af78a01ff1796aef497bd32f308ccc4dc23155f926a3c187d8de/python_http_client-1.1.3.tar.gz#sha256=4bc075607f4005d66a7b5039ac836ceb467bb091cce034c343d857182cd7893d (from https://pypi.org/simple/python-http-client/), version: 1.1.3
    Skipping link: unsupported archive format: .exe: https://files.pythonhosted.org/packages/7d/77/220f2aa0415e501653e8b6983e899678b965de14c83c99c17e1e6ff3111b/python_http_client-1.2.3.macosx-10.10-x86_64.exe#sha256=f866df885580617f2f86553bc2ce454468df951d288ca99d52c542ae424dda18 (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/90/75/59cef3ed437022a545177ec9fc59d633a4064c1c05a2571058aea5ac9c49/python_http_client-1.2.3.tar.gz#sha256=3f25f2431c61dfbe494470d671672b2c6c86a9bcd24c340259e86813fe3dd5ac (from https://pypi.org/simple/python-http-client/), version: 1.2.3
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/32/4c/9efb45300100f993b111e69b30b07906aa21ebd9e8a2fc0d8398e0ee44ae/python_http_client-1.2.4-py2-none-any.whl#sha256=11b60d3e479df89b841eb3f865bfca4c8beebef5a62150a4c394ca509dfb084b (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/fc/7f/38ed0e29a4c2ef0fba00bf48266e7e08bc28ed91f852a70ab37a19d59915/python_http_client-1.2.4.tar.gz#sha256=99f47c173d85769390c13f9fc712046ed1de7686e33466da6ad7687f707ebcae (from https://pypi.org/simple/python-http-client/), version: 1.2.4
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/8b/b7/e5dd67637267f9e4d674dcdc47aaa9fe82bf60bdf2d500de115a92133cf7/python_http_client-2.0.0-py2-none-any.whl#sha256=bb143f9ce1fc053c6f0ba71a34c37056c582ad9e1c52e0bed1a253e0e548f51f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/28/12/2064c0b6a1826036208314eea1b2a93d112340551364948ca7bcb4146fe3/python_http_client-2.0.0.tar.gz#sha256=602f810f05c504a77397897193f6dfe1d0a810576c2586aa401f4b2eda098327 (from https://pypi.org/simple/python-http-client/), version: 2.0.0
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/5d/52/270069ce06123cd010d9897b2550d4fc5692d183d2c2d3e31cd59cbb17d4/python_http_client-2.1.0-py2-none-any.whl#sha256=d879e0ac1ab0f73473329af3ffe89c0e7389a810ab30d91d0edeaf90f7848e0f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/cd/8b/9ba8081a8251262611468889fc7dd4af16901f9af0527cbb7e19c70f9a6c/python_http_client-2.1.0.tar.gz#sha256=8f8548f4fcd666e0aa162b5aa18d41824ef52260a962325d41af98002219f23e (from https://pypi.org/simple/python-http-client/), version: 2.1.0
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/db/34/fa144567762ed51668d97b9c48f3d0ac5cf0e9d3e488575f9d7757c3a973/python_http_client-2.1.1-py2-none-any.whl#sha256=06eb8cf5ada17d89af5b0b38b348303ff60c4a2fd91c341d8174a6de2303302f (from https://pypi.org/simple/python-http-client/)
    Found link https://files.pythonhosted.org/packages/39/05/4090aaa066bdf83792989f1d44d77c5772cb4c37d6778c8650dcb3fb81dc/python_http_client-2.1.1.tar.gz#sha256=65a29260a646824cd54da044a4fb113e380d45055654aa24519f79c797eee3c3 (from https://pypi.org/simple/python-http-client/), version: 2.1.1
    Found link https://files.pythonhosted.org/packages/94/9c/dd62c26d1b1ae149eb4b361754b0496c396b774cc975c943b5fa2b38dfa6/python_http_client-2.2.0-py2.py3-none-any.whl#sha256=4bf1f0fdfdae6c001c99ec60b2600da7fea742ca43ca0537a9c51f61644b5534 (from https://pypi.org/simple/python-http-client/), version: 2.2.0
    Found link https://files.pythonhosted.org/packages/94/c6/eefff9792067087493a1ae3ecae43df3677cdffb9d4abf80ef8b3f9ec9ce/python_http_client-2.2.0.tar.gz#sha256=1c5d4c93800c60131bc23db2035fd0426012e0c2549f211a23a9d8df80745ef4 (from https://pypi.org/simple/python-http-client/), version: 2.2.0
    Found link https://files.pythonhosted.org/packages/97/c5/45b826bad60521001ff7fe3f8af0436f9b62b078724f3673fbe7b5735704/python_http_client-2.2.1-py2.py3-none-any.whl#sha256=2e86716cdc68c28bf25fd64786246cb2d91a6803dd3a4e1028204f1e63ee90bc (from https://pypi.org/simple/python-http-client/), version: 2.2.1
    Found link https://files.pythonhosted.org/packages/8c/14/0b8da61e21a4dc62ca11fca891bae8f06388e481d858bc42d35555ea6c2c/python_http_client-2.2.1.tar.gz#sha256=c9aedb0360c65ad769c0d083b664ab4e384f84f77a20726355c6f2ff540da7f9 (from https://pypi.org/simple/python-http-client/), version: 2.2.1
    Found link https://files.pythonhosted.org/packages/1f/3b/8f3b80ad341a2f564338c4429031be5e4e00ec35d88bce9775d4cb8405d3/python_http_client-2.3.0-py2.py3-none-any.whl#sha256=16f62df93271f4760c244babd578671bed6f28af096488c80ff9a13f3050da4f (from https://pypi.org/simple/python-http-client/), version: 2.3.0
    Found link https://files.pythonhosted.org/packages/df/ed/7fd55b6a3b9f86afeaaf6be48e4bdfb05ab22b7eed191f899a7a4230d227/python_http_client-2.3.0.tar.gz#sha256=f7b8ebea326c34f23d1d3e33583bdbe13a13a937ac50d4cd377a687bdf35925b (from https://pypi.org/simple/python-http-client/), version: 2.3.0
    Found link https://files.pythonhosted.org/packages/3c/bb/542ac563cbede90eb297739421ee0c311c9bf28addaeb80e62ffa0ed4e37/python_http_client-2.4.0-py2.py3-none-any.whl#sha256=291497a005a489e4df07788544a677503652a41aa5369c622ac79e338058cf0b (from https://pypi.org/simple/python-http-client/), version: 2.4.0
    Found link https://files.pythonhosted.org/packages/81/fd/72ed766f4ecc3e64ee8848faf96497f55b7d66a59e1585eb91bdf4321a03/python_http_client-2.4.0.tar.gz#sha256=c8d459812789f06e7b7df06fbc527bfe1378bb8847e8e0220e3f966335bad8a7 (from https://pypi.org/simple/python-http-client/), version: 2.4.0
    Found link https://files.pythonhosted.org/packages/5e/9a/5fd493d1e30c44ddb2c73a43ac94bc4739c5f5b6b0a5a41f3a547155f4b7/python_http_client-3.0.0-py2.py3-none-any.whl#sha256=c9571823fb6994793bec520f8dbe8dd74ccdd28072b1fae1ab9fb728728e6619 (from https://pypi.org/simple/python-http-client/), version: 3.0.0
    Found link https://files.pythonhosted.org/packages/9a/f8/0ef3d2869c11a46687ea4fea67858ad39f03f2f1ef4f80618c377bf479ca/python_http_client-3.0.0.tar.gz#sha256=481dd0bb1ae8248e47d16e73642813006025f164e6a715f4b1e53d7ecae17675 (from https://pypi.org/simple/python-http-client/), version: 3.0.0
    Found link https://files.pythonhosted.org/packages/5c/5c/9e0cde562757bdb385a3644235e7c4da6f76c8a43d573eb76384ef461d40/python_http_client-3.1.0-py3-none-any.whl#sha256=84267d8dcb7bcdf4c5cef321a533cc584c5b52159d4a4d3d4139bfed347b8006 (from https://pypi.org/simple/python-http-client/), version: 3.1.0
    Found link https://files.pythonhosted.org/packages/e0/74/e43e494a44e78a1188552aa9dfc2f738cd4089b6f8a18c49f186f2b841a3/python_http_client-3.1.0.tar.gz#sha256=7e430f4b9dd2b621b0051f6a362f103447ea8e267594c602a5c502a0c694ee38 (from https://pypi.org/simple/python-http-client/), version: 3.1.0
    Skipping link: none of the wheel's tags match: py2-none-any: https://files.pythonhosted.org/packages/15/16/c00bb82937874010243ec4fd885b137d35661f724a7248eb5d24dca9428e/python_http_client-3.2.0-py2-none-any.whl#sha256=eaea36b6bffc1530eb31311588570d6a5b8a9b124c1a6e08d09a5dc8a92a092f (from https://pypi.org/simple/python-http-client/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
  Checked 0 links for project 'python-http-client' against 1 hashes (0 matches, 0 no digest): discarding no candidates
Cleaning up...
Removed build tracker '/tmp/pip-req-tracker-zbxyn7an'
Exception information:
Traceback (most recent call last):
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 188, in main
    status = self.run(options, args)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 345, in run
    resolver.resolve(requirement_set)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 196, in resolve
    self._resolve_one(requirement_set, req)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 359, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/legacy_resolve.py", line 307, in _get_abstract_dist_for
    self.require_hashes
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 134, in prepare_linked_requirement
    req.populate_link(finder, upgrade_allowed, require_hashes)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/req/req_install.py", line 211, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/home/user/.local/share/virtualenvs/user-39SWxFAg/lib/python3.6/site-packages/pip/_internal/index.py", line 1228, in find_requirement
    'No matching distribution found for %s' % req
pip._internal.exceptions.DistributionNotFound: No matching distribution found for python-http-client==3.2.0 (from -r /tmp/pipenv-txiece61-requirements/pipenv-pzpt2zys-requirement.txt (line 1))
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 10, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli/command.py", line 254, in install
    editable_packages=state.installstate.editables,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1992, in do_install
    skip_lock=skip_lock,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1253, in do_init
    pypi_mirror=pypi_mirror,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 859, in do_install_dependencies
    retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 763, in batch_install
    _cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 681, in _cleanup_procs
    raise exceptions.InstallError(c.dep.name, extra=err_lines)
pipenv.exceptions.InstallError: ERROR: ERROR: Package installation failed...
  ☤  ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:0

Technical details:

$ pipenv --support

Pipenv version: '2018.11.26'

Pipenv location: '/usr/local/lib/python3.6/site-packages/pipenv'

Python location: '/usr/local/bin/python'

Python installations found:

  • 3.6.9: /usr/local/bin/python
  • 3.6.9: /usr/local/bin/python3.6m
  • 3.5.3: /usr/bin/python3
  • 3.5.3: /usr/bin/python3.5m
  • 2.7.13: /usr/bin/python

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.6.9',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '4.14.131-linuxkit',
 'platform_system': 'Linux',
 'platform_version': '#1 SMP Fri Jul 19 12:31:17 UTC 2019',
 'python_full_version': '3.6.9',
 'python_version': '3.6',
 'sys_platform': 'linux'}

System environment variables:

  • PATH
  • HOSTNAME
  • TERM
  • LANG
  • GPG_KEY
  • PYTHON_VERSION
  • PYTHON_PIP_VERSION
  • PYTHON_GET_PIP_URL
  • PYTHON_GET_PIP_SHA256
  • HOME
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • PIP_SHIMS_BASE_MODULE
  • PIP_PYTHON_PATH
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

Debug–specific environment variables:

  • PATH: /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/.local/bin
  • LANG: C.UTF-8

Require conformance to style standards

Issue Summary

In the CONTRIBUTING.md file there is a section on Style Guidelines & Naming Conventions. Please review and implement a check in Travis CI. If there are any style errors, either fix or create a rule to exclude the error.

Before writing any code, we suggest you review our CONTRIBUTING.md file and propose your solution for discussion here in the comments. Thank you!

Aceptance Criteria

  • TravisCI checks that the code conforms to our Style Guidelines & Naming Conventions as defined in our CONTRIBUTING.md file
  • tests pass locally, in Travis CI and using Docker

Auto-generate the CHANGELOG.md file upon release

Issue Summary

For every release, we currently hand craft a CHANGELOG.md update, now we would like to automate this process. Please see the existing CHANGELOG.md for formatting structure.

Acceptance Criteria

  • A script, which when run, creates a CHANGELOG.md update based on any merged PRs since the last release.

Auto-generate the release notes upon release

Issue Summary

For every release, we hand craft the release notes on GitHub, now we would like to automate this process. Please see the existing release notes for an example. The contents of the release notes are generated from the CHANGELOG.md file. Here is the documentation for updating the release notes via the GitHub API.

Acceptance Criteria

  • A script, which when run, creates a release note update based on the last deployed release

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.