Skip to content
This repository has been archived by the owner on Jan 7, 2024. It is now read-only.

Added mypy and linting #63

Merged
merged 7 commits into from Feb 6, 2019
Merged

Added mypy and linting #63

merged 7 commits into from Feb 6, 2019

Conversation

heartsucker
Copy link
Contributor

fixes #62

I also changed the API attribute auth_headers to req_headers because 2 of the 3 headers were not directly related to authorization.

I also split the received token from the API into two attributes token:str and token_expiration:datetime instead of leaving it as a dict since that makes type checking easier.


from .sdlocalobjects import *

from .sdlocalobjects import (
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Making a note here that this is not how we format the imports in other SD projects, but we're using black, and this is how it auto formats long imports.

@redshiftzero
Copy link
Contributor

sweet, mypy in CI 😍- @kushaldas what do you think of this one?

Copy link
Contributor

@kushaldas kushaldas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is only one small Pythonic change required, other wise looks good.

Here is the diff in the dependency.

$ diffoscope certifi-2018.10.15.tar.gz certifi-2018.11.29.tar.gz 
 |##########################################################################################################|  100%                             Time: 0:00:00 
--- certifi-2018.10.15.tar.gz
+++ certifi-2018.11.29.tar.gz
├── metadata
│ @@ -1 +1 @@
│ -gzip compressed data, was "dist/certifi-2018.10.15.tar", last modified: Mon Oct 15 13:13:23 2018, max compression
│ +gzip compressed data, was "dist/certifi-2018.11.29.tar", last modified: Thu Nov 29 19:56:35 2018, max compression
│   --- certifi-2018.10.15.tar
├── +++ certifi-2018.11.29.tar
├── file list
│ │ @@ -1,18 +1,18 @@
│ │ -drwxr-xr-x   0 cory       (502) staff      (502)        0 2018-10-15 13:13:23.000000 certifi-2018.10.15/
│ │ --rw-r--r--   0 cory       (502) staff      (502)     3000 2018-10-15 13:13:23.000000 certifi-2018.10.15/PKG-INFO
│ │ --rw-r--r--   0 cory       (502) staff      (502)     1048 2015-04-23 18:12:52.000000 certifi-2018.10.15/LICENSE
│ │ --rw-r--r--   0 cory       (502) staff      (502)       58 2018-01-18 20:27:24.000000 certifi-2018.10.15/MANIFEST.in
│ │ --rwxr-xr-x   0 cory       (502) staff      (502)     2269 2018-10-15 13:10:44.000000 certifi-2018.10.15/setup.py
│ │ -drwxr-xr-x   0 cory       (502) staff      (502)        0 2018-10-15 13:13:23.000000 certifi-2018.10.15/certifi/
│ │ --rw-r--r--   0 cory       (502) staff      (502)       63 2018-10-15 13:12:17.000000 certifi-2018.10.15/certifi/__init__.py
│ │ --rw-r--r--   0 cory       (502) staff      (502)      836 2018-01-18 20:27:24.000000 certifi-2018.10.15/certifi/core.py
│ │ --rw-r--r--   0 cory       (502) staff      (502)   261241 2018-10-15 13:11:40.000000 certifi-2018.10.15/certifi/cacert.pem
│ │ --rw-r--r--   0 cory       (502) staff      (502)       41 2015-04-23 18:12:52.000000 certifi-2018.10.15/certifi/__main__.py
│ │ --rw-r--r--   0 cory       (502) staff      (502)      123 2018-10-15 13:13:23.000000 certifi-2018.10.15/setup.cfg
│ │ --rw-r--r--   0 cory       (502) staff      (502)     1677 2018-01-18 20:27:24.000000 certifi-2018.10.15/README.rst
│ │ -drwxr-xr-x   0 cory       (502) staff      (502)        0 2018-10-15 13:13:23.000000 certifi-2018.10.15/certifi.egg-info/
│ │ --rw-r--r--   0 cory       (502) staff      (502)     3000 2018-10-15 13:13:22.000000 certifi-2018.10.15/certifi.egg-info/PKG-INFO
│ │ --rw-r--r--   0 cory       (502) staff      (502)        1 2018-10-15 13:13:22.000000 certifi-2018.10.15/certifi.egg-info/not-zip-safe
│ │ --rw-r--r--   0 cory       (502) staff      (502)      278 2018-10-15 13:13:23.000000 certifi-2018.10.15/certifi.egg-info/SOURCES.txt
│ │ --rw-r--r--   0 cory       (502) staff      (502)        8 2018-10-15 13:13:22.000000 certifi-2018.10.15/certifi.egg-info/top_level.txt
│ │ --rw-r--r--   0 cory       (502) staff      (502)        1 2018-10-15 13:13:22.000000 certifi-2018.10.15/certifi.egg-info/dependency_links.txt
│ │ +drwxr-xr-x   0 cory       (502) staff      (502)        0 2018-11-29 19:56:35.000000 certifi-2018.11.29/
│ │ +-rw-r--r--   0 cory       (502) staff      (502)     2763 2018-11-29 19:56:35.000000 certifi-2018.11.29/PKG-INFO
│ │ +-rw-r--r--   0 cory       (502) staff      (502)     1048 2015-04-23 18:12:52.000000 certifi-2018.11.29/LICENSE
│ │ +-rw-r--r--   0 cory       (502) staff      (502)       58 2018-01-18 20:27:24.000000 certifi-2018.11.29/MANIFEST.in
│ │ +-rwxr-xr-x   0 cory       (502) staff      (502)     2270 2018-11-29 19:55:18.000000 certifi-2018.11.29/setup.py
│ │ +drwxr-xr-x   0 cory       (502) staff      (502)        0 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi/
│ │ +-rw-r--r--   0 cory       (502) staff      (502)       52 2018-11-29 19:56:04.000000 certifi-2018.11.29/certifi/__init__.py
│ │ +-rw-r--r--   0 cory       (502) staff      (502)      288 2018-11-29 19:55:18.000000 certifi-2018.11.29/certifi/core.py
│ │ +-rw-r--r--   0 cory       (502) staff      (502)   275834 2018-11-29 19:55:32.000000 certifi-2018.11.29/certifi/cacert.pem
│ │ +-rw-r--r--   0 cory       (502) staff      (502)       41 2015-04-23 18:12:52.000000 certifi-2018.11.29/certifi/__main__.py
│ │ +-rw-r--r--   0 cory       (502) staff      (502)      123 2018-11-29 19:56:35.000000 certifi-2018.11.29/setup.cfg
│ │ +-rw-r--r--   0 cory       (502) staff      (502)     1463 2018-11-29 19:55:18.000000 certifi-2018.11.29/README.rst
│ │ +drwxr-xr-x   0 cory       (502) staff      (502)        0 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi.egg-info/
│ │ +-rw-r--r--   0 cory       (502) staff      (502)     2763 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi.egg-info/PKG-INFO
│ │ +-rw-r--r--   0 cory       (502) staff      (502)        1 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi.egg-info/not-zip-safe
│ │ +-rw-r--r--   0 cory       (502) staff      (502)      278 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi.egg-info/SOURCES.txt
│ │ +-rw-r--r--   0 cory       (502) staff      (502)        8 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi.egg-info/top_level.txt
│ │ +-rw-r--r--   0 cory       (502) staff      (502)        1 2018-11-29 19:56:35.000000 certifi-2018.11.29/certifi.egg-info/dependency_links.txt
│   --- certifi-2018.10.15/README.rst
├── +++ certifi-2018.11.29/README.rst
│┄ Files similar despite different names (difference score: 50)
│ │ @@ -33,14 +33,11 @@
│ │  reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
│ │  bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
│ │  certificate from the same CA. Because Mozilla removed these certificates from
│ │  its bundle, ``certifi`` removed them as well.
│ │  
│ │  In previous versions, ``certifi`` provided the ``certifi.old_where()`` function
│ │  to intentionally re-add the 1024-bit roots back into your bundle. This was not
│ │ -recommended in production and therefore was removed. To assist in migrating old
│ │ -code, the function ``certifi.old_where()`` continues to exist as an alias of
│ │ -``certifi.where()``. Please update your code to use ``certifi.where()``
│ │ -instead. ``certifi.old_where()`` will be removed in 2018.
│ │ +recommended in production and therefore was removed at the end of 2018.
│ │  
│ │ -.. _`Certifi`: http://certifi.io/en/latest/
│ │ +.. _`Certifi`: https://certifi.io/en/latest/
│ │  .. _`Requests`: http://docs.python-requests.org/en/latest/
│   --- certifi-2018.10.15/setup.py
├── +++ certifi-2018.11.29/setup.py
│┄ Files similar despite different names (difference score: 6)
│ │ @@ -35,15 +35,15 @@
│ │  setup(
│ │      name='certifi',
│ │      version=VERSION,
│ │      description='Python package for providing Mozilla\'s CA Bundle.',
│ │      long_description=open('README.rst').read(),
│ │      author='Kenneth Reitz',
│ │      author_email='me@kennethreitz.com',
│ │ -    url='http://certifi.io/',
│ │ +    url='https://certifi.io/',
│ │      packages=[
│ │          'certifi',
│ │      ],
│ │      package_dir={'certifi': 'certifi'},
│ │      package_data={'certifi': ['*.pem']},
│ │      # data_files=[('certifi', ['certifi/cacert.pem'])],
│ │      include_package_data=True,
│   --- certifi-2018.10.15/PKG-INFO
├── +++ certifi-2018.11.29/certifi.egg-info/PKG-INFO
│┄ Files similar despite different names (difference score: 34)
│ │ @@ -1,12 +1,12 @@
│ │  Metadata-Version: 1.1
│ │  Name: certifi
│ │ -Version: 2018.10.15
│ │ +Version: 2018.11.29
│ │  Summary: Python package for providing Mozilla's CA Bundle.
│ │ -Home-page: http://certifi.io/
│ │ +Home-page: https://certifi.io/
│ │  Author: Kenneth Reitz
│ │  Author-email: me@kennethreitz.com
│ │  License: MPL-2.0
│ │  Description: Certifi: Python SSL Certificates
│ │          ================================
│ │          
│ │          `Certifi`_ is a carefully curated collection of Root Certificates for
│ │ @@ -41,20 +41,17 @@
│ │          reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
│ │          bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
│ │          certificate from the same CA. Because Mozilla removed these certificates from
│ │          its bundle, ``certifi`` removed them as well.
│ │          
│ │          In previous versions, ``certifi`` provided the ``certifi.old_where()`` function
│ │          to intentionally re-add the 1024-bit roots back into your bundle. This was not
│ │ -        recommended in production and therefore was removed. To assist in migrating old
│ │ -        code, the function ``certifi.old_where()`` continues to exist as an alias of
│ │ -        ``certifi.where()``. Please update your code to use ``certifi.where()``
│ │ -        instead. ``certifi.old_where()`` will be removed in 2018.
│ │ +        recommended in production and therefore was removed at the end of 2018.
│ │          
│ │ -        .. _`Certifi`: http://certifi.io/en/latest/
│ │ +        .. _`Certifi`: https://certifi.io/en/latest/
│ │          .. _`Requests`: http://docs.python-requests.org/en/latest/
│ │          
│ │  Platform: UNKNOWN
│ │  Classifier: Development Status :: 5 - Production/Stable
│ │  Classifier: Intended Audience :: Developers
│ │  Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
│ │  Classifier: Natural Language :: English
│   --- certifi-2018.10.15/certifi/cacert.pem
├── +++ certifi-2018.11.29/certifi/cacert.pem
│┄ Files similar despite different names (difference score: 6)
│ │ @@ -4264,7 +4264,249 @@
│ │  eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W
│ │  p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E
│ │  BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T
│ │  rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV
│ │  57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg
│ │  Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
│ │  -----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC
│ │ +# Subject: CN=GTS Root R1 O=Google Trust Services LLC
│ │ +# Label: "GTS Root R1"
│ │ +# Serial: 146587175971765017618439757810265552097
│ │ +# MD5 Fingerprint: 82:1a:ef:d4:d2:4a:f2:9f:e2:3d:97:06:14:70:72:85
│ │ +# SHA1 Fingerprint: e1:c9:50:e6:ef:22:f8:4c:56:45:72:8b:92:20:60:d7:d5:a7:a3:e8
│ │ +# SHA256 Fingerprint: 2a:57:54:71:e3:13:40:bc:21:58:1c:bd:2c:f1:3e:15:84:63:20:3e:ce:94:bc:f9:d3:cc:19:6b:f0:9a:54:72
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH
│ │ +MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
│ │ +QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
│ │ +MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
│ │ +cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB
│ │ +AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
│ │ +f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX
│ │ +mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7
│ │ +zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P
│ │ +fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc
│ │ +vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4
│ │ +Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp
│ │ +zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO
│ │ +Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW
│ │ +k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+
│ │ +DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF
│ │ +lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
│ │ +HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW
│ │ +Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
│ │ +d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z
│ │ +XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR
│ │ +gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3
│ │ +d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv
│ │ +J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg
│ │ +DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM
│ │ ++SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy
│ │ +F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9
│ │ +SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws
│ │ +E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl
│ │ +-----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=GTS Root R2 O=Google Trust Services LLC
│ │ +# Subject: CN=GTS Root R2 O=Google Trust Services LLC
│ │ +# Label: "GTS Root R2"
│ │ +# Serial: 146587176055767053814479386953112547951
│ │ +# MD5 Fingerprint: 44:ed:9a:0e:a4:09:3b:00:f2:ae:4c:a3:c6:61:b0:8b
│ │ +# SHA1 Fingerprint: d2:73:96:2a:2a:5e:39:9f:73:3f:e1:c7:1e:64:3f:03:38:34:fc:4d
│ │ +# SHA256 Fingerprint: c4:5d:7b:b0:8e:6d:67:e6:2e:42:35:11:0b:56:4e:5f:78:fd:92:ef:05:8c:84:0a:ea:4e:64:55:d7:58:5c:60
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBH
│ │ +MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
│ │ +QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
│ │ +MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
│ │ +cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEB
│ │ +AQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
│ │ +CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3Kg
│ │ +GjSY6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9Bu
│ │ +XvAuMC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOd
│ │ +re7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXu
│ │ +PuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1
│ │ +mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K
│ │ +8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqj
│ │ +x5RWIr9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsR
│ │ +nTKaG73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0
│ │ +kzCqgc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9Ok
│ │ +twIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
│ │ +HQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBALZp
│ │ +8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
│ │ +vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiT
│ │ +z9D2PGcDFWEJ+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiA
│ │ +pJiS4wGWAqoC7o87xdFtCjMwc3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvb
│ │ +pxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3DaWsYDQvTtN6LwG1BUSw7YhN4ZKJmB
│ │ +R64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5rn/WkhLx3+WuXrD5R
│ │ +RaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56GtmwfuNmsk
│ │ +0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC
│ │ +5AwiWVIQ7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiF
│ │ +izoHCBy69Y9Vmhh1fuXsgWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLn
│ │ +yOd/xCxgXS/Dr55FBcOEArf9LAhST4Ldo/DUhgkC
│ │ +-----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC
│ │ +# Subject: CN=GTS Root R3 O=Google Trust Services LLC
│ │ +# Label: "GTS Root R3"
│ │ +# Serial: 146587176140553309517047991083707763997
│ │ +# MD5 Fingerprint: 1a:79:5b:6b:04:52:9c:5d:c7:74:33:1b:25:9a:f9:25
│ │ +# SHA1 Fingerprint: 30:d4:24:6f:07:ff:db:91:89:8a:0b:e9:49:66:11:eb:8c:5e:46:e5
│ │ +# SHA256 Fingerprint: 15:d5:b8:77:46:19:ea:7d:54:ce:1c:a6:d0:b0:c4:03:e0:37:a9:17:f1:31:e8:a0:4e:1e:6b:7a:71:ba:bc:e5
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQsw
│ │ +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
│ │ +MBIGA1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
│ │ +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
│ │ +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQA
│ │ +IgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
│ │ +736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2A
│ │ +DDL24CejQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
│ │ +DgQWBBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFuk
│ │ +fCPAlaUs3L6JbyO5o91lAFJekazInXJ0glMLfalAvWhgxeG4VDvBNhcl2MG9AjEA
│ │ +njWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOaKaqW04MjyaR7YbPMAuhd
│ │ +-----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC
│ │ +# Subject: CN=GTS Root R4 O=Google Trust Services LLC
│ │ +# Label: "GTS Root R4"
│ │ +# Serial: 146587176229350439916519468929765261721
│ │ +# MD5 Fingerprint: 5d:b6:6a:c4:60:17:24:6a:1a:99:a8:4b:ee:5e:b4:26
│ │ +# SHA1 Fingerprint: 2a:1d:60:27:d9:4a:b1:0a:1c:4d:91:5c:cd:33:a0:cb:3e:2d:54:cb
│ │ +# SHA256 Fingerprint: 71:cc:a5:39:1f:9e:79:4b:04:80:25:30:b3:63:e1:21:da:8a:30:43:bb:26:66:2f:ea:4d:ca:7f:c9:51:a4:bd
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQsw
│ │ +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
│ │ +MBIGA1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
│ │ +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
│ │ +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQA
│ │ +IgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
│ │ +hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/l
│ │ +xKvRHYqjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
│ │ +DgQWBBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0
│ │ +CMRw3J5QdCHojXohw0+WbhXRIjVhLfoIN+4Zba3bssx9BzT1YBkstTTZbyACMANx
│ │ +sbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11xzPKwTdb+mciUqXWi4w==
│ │ +-----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=UCA Global G2 Root O=UniTrust
│ │ +# Subject: CN=UCA Global G2 Root O=UniTrust
│ │ +# Label: "UCA Global G2 Root"
│ │ +# Serial: 124779693093741543919145257850076631279
│ │ +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8
│ │ +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a
│ │ +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9
│ │ +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH
│ │ +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x
│ │ +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds
│ │ +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr
│ │ +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9
│ │ +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm
│ │ +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R
│ │ +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc
│ │ +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj
│ │ +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY
│ │ +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv
│ │ +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl
│ │ +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6
│ │ +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP
│ │ +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/
│ │ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV
│ │ +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj
│ │ +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
│ │ +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl
│ │ +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU
│ │ +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV
│ │ +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj
│ │ +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb
│ │ +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg
│ │ +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI
│ │ ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy
│ │ +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX
│ │ +UB+K+wb1whnw0A==
│ │ +-----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=UCA Extended Validation Root O=UniTrust
│ │ +# Subject: CN=UCA Extended Validation Root O=UniTrust
│ │ +# Label: "UCA Extended Validation Root"
│ │ +# Serial: 106100277556486529736699587978573607008
│ │ +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2
│ │ +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a
│ │ +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH
│ │ +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF
│ │ +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx
│ │ +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV
│ │ +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB
│ │ +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog
│ │ +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS
│ │ +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop
│ │ +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk
│ │ +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi
│ │ +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj
│ │ +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz
│ │ +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/
│ │ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G
│ │ +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs
│ │ +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD
│ │ +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T
│ │ +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN
│ │ +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
│ │ +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ
│ │ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5
│ │ +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp
│ │ +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s
│ │ +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj
│ │ +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO
│ │ +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C
│ │ +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx
│ │ +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM
│ │ +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax
│ │ +-----END CERTIFICATE-----
│ │ +
│ │ +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036
│ │ +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036
│ │ +# Label: "Certigna Root CA"
│ │ +# Serial: 269714418870597844693661054334862075617
│ │ +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77
│ │ +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43
│ │ +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68
│ │ +-----BEGIN CERTIFICATE-----
│ │ +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw
│ │ +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw
│ │ +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x
│ │ +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD
│ │ +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX
│ │ +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
│ │ +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO
│ │ +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M
│ │ +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu
│ │ +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm
│ │ +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh
│ │ +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf
│ │ +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz
│ │ +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT
│ │ +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k
│ │ +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5
│ │ +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB
│ │ +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
│ │ +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of
│ │ +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov
│ │ +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo
│ │ +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr
│ │ +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq
│ │ +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L
│ │ +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG
│ │ +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6
│ │ +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB
│ │ +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi
│ │ +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1
│ │ +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v
│ │ +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63
│ │ +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh
│ │ +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw
│ │ +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
│ │ +-----END CERTIFICATE-----
│   --- certifi-2018.10.15/LICENSE
├── +++ certifi-2018.11.29/LICENSE
│┄ Files similar despite different names (difference score: 0)
│   --- certifi-2018.10.15/certifi.egg-info/PKG-INFO
├── +++ certifi-2018.11.29/PKG-INFO
│┄ Files similar despite different names (difference score: 34)
│ │ @@ -1,12 +1,12 @@
│ │  Metadata-Version: 1.1
│ │  Name: certifi
│ │ -Version: 2018.10.15
│ │ +Version: 2018.11.29
│ │  Summary: Python package for providing Mozilla's CA Bundle.
│ │ -Home-page: http://certifi.io/
│ │ +Home-page: https://certifi.io/
│ │  Author: Kenneth Reitz
│ │  Author-email: me@kennethreitz.com
│ │  License: MPL-2.0
│ │  Description: Certifi: Python SSL Certificates
│ │          ================================
│ │          
│ │          `Certifi`_ is a carefully curated collection of Root Certificates for
│ │ @@ -41,20 +41,17 @@
│ │          reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
│ │          bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
│ │          certificate from the same CA. Because Mozilla removed these certificates from
│ │          its bundle, ``certifi`` removed them as well.
│ │          
│ │          In previous versions, ``certifi`` provided the ``certifi.old_where()`` function
│ │          to intentionally re-add the 1024-bit roots back into your bundle. This was not
│ │ -        recommended in production and therefore was removed. To assist in migrating old
│ │ -        code, the function ``certifi.old_where()`` continues to exist as an alias of
│ │ -        ``certifi.where()``. Please update your code to use ``certifi.where()``
│ │ -        instead. ``certifi.old_where()`` will be removed in 2018.
│ │ +        recommended in production and therefore was removed at the end of 2018.
│ │          
│ │ -        .. _`Certifi`: http://certifi.io/en/latest/
│ │ +        .. _`Certifi`: https://certifi.io/en/latest/
│ │          .. _`Requests`: http://docs.python-requests.org/en/latest/
│ │          
│ │  Platform: UNKNOWN
│ │  Classifier: Development Status :: 5 - Production/Stable
│ │  Classifier: Intended Audience :: Developers
│ │  Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
│ │  Classifier: Natural Language :: English

"Accept": "application/json",
}
def update_auth_header(self) -> None:
if self.token is not None:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be if self.token:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mypy yells at this because these two statements are not equivalent. Also, there is never a case where the token will be an empty string, so this works too.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/freedomofpress/securedrop-sdk/pull/63/files#diff-922f10157cf861460ae77dc5c7dc980eR76 this is where it should be an empty string to represent False or in this case, the value to represent that the token has not been setup yet.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same should be with headers, something is not None should be avoided in Python code.

@heartsucker heartsucker merged commit 19d2e65 into master Feb 6, 2019
SecureDrop Team Board automation moved this from Near Term Backlog to Done Feb 6, 2019
@heartsucker heartsucker deleted the mypy-and-linting branch February 6, 2019 15:18
self.username = username
self.passphrase = passphrase
self.totp = totp
self.token = None # type: Optional[str]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be an empty string to represent the False value.

@heartsucker
Copy link
Contributor Author

Ok commenting on this post merge, I don't think we should use empty strings to represent "not present" as our best practice since None makes that more clear.

@kushaldas
Copy link
Contributor

There is a reason empty string is formally counted as false value :)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

Add mypy to CI
3 participants