1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 17:15:35 +00:00

v4.0.x - Remove legacy python and add python3.8 support (#499)

* Drop support for legacy Python 2.7

* Upgrade Python syntax with pyupgrade --py3-plus

* Trim testing matrix to remove python2

* re-enable python3.8 in travis as tests that are not allowed to fail

* Remove some six

* The future is now

* Remove Python 2 imports

* Add back example, but change py27 to py36

* Remove redundant compat.py

* Blacken

* Credit hugovk in changelog

WIP Updating Sphinx Docs and AutoDoc

* Fix AutoDoc and update Sphinx theme to python_doc_theme

* Fix #420, autodoc even undocumented (docstring-less) method signatures

* Doc theme 'nature'. Add global TOC to doc sidebar

* Comment last reference to package six

* Changelog is now a consistent format

* Yet another documentation fix for links and title hierarchy

* Start work on new SVG logo

test SVG in README

trying to test new SVG logo in README

Apply centering

Apply readme logo centering

Trying to align image

Trying random shit

trying align right

add emoji

Large logo has higher priority

Change title hierarchy

Actually use a H1

Try again

try and organise badges

revert link back to point at master

* updated new take on VCR logo as SVG code

* Testing modern logo in docs

* Add sanitize for rendering SVG

* Switch to alabaster theme

* Update vcrpy logo (#503)

* Add credit for V4 logo changes.

* Add rewind and play animation

* Add svg into ReadTheDocs static assets so that it can be hosted so the animations work.

* Need to embedd the SVG for ReadTheDocs somewhere so I can get the link to later embed in the README

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: Sean Bailey <sean@seanbailey.io>
This commit is contained in:
Josh Peak
2019-12-20 11:45:07 +11:00
committed by GitHub
parent 41ca5750e7
commit 4a8e80ee3e
57 changed files with 501 additions and 453 deletions

View File

@@ -3,7 +3,7 @@
# External imports
import os
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
# Internal imports
import vcr

View File

@@ -6,14 +6,9 @@ import boto # NOQA
import boto.iam # NOQA
from boto.s3.connection import S3Connection # NOQA
from boto.s3.key import Key # NOQA
from configparser import DuplicateSectionError # NOQA
import vcr # NOQA
try: # NOQA
from ConfigParser import DuplicateSectionError # NOQA
except ImportError: # NOQA
# python3
from configparser import DuplicateSectionError # NOQA
def test_boto_stubs(tmpdir):
with vcr.use_cassette(str(tmpdir.join("boto-stubs.yml"))):

View File

@@ -2,7 +2,7 @@ import os
import json
import pytest
import vcr
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
def test_set_serializer_default_config(tmpdir, httpbin):

View File

@@ -4,7 +4,7 @@
# External imports
import os
import time
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
# Internal imports
import vcr

View File

@@ -1,8 +1,8 @@
import base64
import pytest
from six.moves.urllib.request import urlopen, Request
from six.moves.urllib.parse import urlencode
from six.moves.urllib.error import HTTPError
from urllib.request import urlopen, Request
from urllib.parse import urlencode
from urllib.error import HTTPError
import vcr
import json
from assertions import assert_cassette_has_one_response, assert_is_json

View File

@@ -3,7 +3,7 @@
import sys
from six.moves.urllib_parse import urlencode
from urllib.parse import urlencode
import pytest
import pytest_httpbin.certs
@@ -111,7 +111,7 @@ def test_post_data(tmpdir, httpbin_both):
def test_post_unicode_data(tmpdir, httpbin_both):
"""Ensure that it works when posting unicode data"""
data = urlencode({"snowman": u"".encode("utf-8")})
data = urlencode({"snowman": "".encode()})
url = httpbin_both.url + "/post"
with vcr.use_cassette(str(tmpdir.join("post_data.yaml"))):
_, res1 = http().request(url, "POST", data)

View File

@@ -1,4 +1,4 @@
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
import socket
from contextlib import contextmanager
import vcr

View File

@@ -1,6 +1,6 @@
import vcr
import pytest
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
DEFAULT_URI = "http://httpbin.org/get?p1=q1&p2=q2" # base uri for testing

View File

@@ -1,6 +1,6 @@
import pytest
import vcr
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
def test_making_extra_request_raises_exception(tmpdir, httpbin):

View File

@@ -5,8 +5,9 @@
import multiprocessing
import pytest
from six.moves import socketserver, SimpleHTTPServer
from six.moves.urllib.request import urlopen
import http.server
import socketserver
from urllib.request import urlopen
# Internal imports
import vcr
@@ -15,7 +16,7 @@ import vcr
requests = pytest.importorskip("requests")
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
class Proxy(http.server.SimpleHTTPRequestHandler):
"""
Simple proxy server.

View File

@@ -1,6 +1,6 @@
import pytest
import vcr
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
def test_once_record_mode(tmpdir, httpbin):

View File

@@ -1,5 +1,5 @@
import vcr
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
def true_matcher(r1, r2):

View File

@@ -3,7 +3,7 @@
# External imports
import os
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
# Internal imports
import vcr

View File

@@ -1,7 +1,7 @@
import vcr
class MockSerializer(object):
class MockSerializer:
def __init__(self):
self.serialize_count = 0
self.deserialize_count = 0

View File

@@ -1,5 +1,5 @@
import vcr
from six.moves.urllib.request import urlopen
from urllib.request import urlopen
def test_recorded_request_uri_with_redirected_request(tmpdir, httpbin):

View File

@@ -1,7 +1,7 @@
import vcr
import zlib
import json
import six.moves.http_client as httplib
import http.client as httplib
from assertions import assert_is_json

View File

@@ -2,8 +2,8 @@
"""Integration tests with urllib2"""
import ssl
from six.moves.urllib.request import urlopen
from six.moves.urllib_parse import urlencode
from urllib.request import urlopen
from urllib.parse import urlencode
import pytest_httpbin.certs
# Internal imports
@@ -104,7 +104,7 @@ def test_post_data(httpbin_both, tmpdir):
def test_post_unicode_data(httpbin_both, tmpdir):
"""Ensure that it works when posting unicode data"""
data = urlencode({"snowman": u"".encode("utf-8")}).encode("utf-8")
data = urlencode({"snowman": "".encode()}).encode("utf-8")
url = httpbin_both.url + "/post"
with vcr.use_cassette(str(tmpdir.join("post_data.yaml"))):
res1 = urlopen_with_cafile(url, data).read()

View File

@@ -1,16 +1,13 @@
import http.client as httplib
import multiprocessing
import pytest
from six.moves import xmlrpc_client, xmlrpc_server
from xmlrpc.client import ServerProxy
from xmlrpc.server import SimpleXMLRPCServer
requests = pytest.importorskip("requests")
import vcr # NOQA
try:
import httplib
except ImportError:
import http.client as httplib
def test_domain_redirect():
"""Ensure that redirects across domains are considered unique"""
@@ -80,7 +77,7 @@ def test_amazon_doctype(tmpdir):
def start_rpc_server(q):
httpd = xmlrpc_server.SimpleXMLRPCServer(("127.0.0.1", 0))
httpd = SimpleXMLRPCServer(("127.0.0.1", 0))
httpd.register_function(pow)
q.put("http://{}:{}".format(*httpd.server_address))
httpd.serve_forever()
@@ -99,11 +96,11 @@ def rpc_server():
def test_xmlrpclib(tmpdir, rpc_server):
with vcr.use_cassette(str(tmpdir.join("xmlrpcvideo.yaml"))):
roundup_server = xmlrpc_client.ServerProxy(rpc_server, allow_none=True)
roundup_server = ServerProxy(rpc_server, allow_none=True)
original_schema = roundup_server.pow(2, 4)
with vcr.use_cassette(str(tmpdir.join("xmlrpcvideo.yaml"))):
roundup_server = xmlrpc_client.ServerProxy(rpc_server, allow_none=True)
roundup_server = ServerProxy(rpc_server, allow_none=True)
second_schema = roundup_server.pow(2, 4)
assert original_schema == second_schema

View File

@@ -1,12 +1,13 @@
import contextlib
import copy
import inspect
import mock
import os
from six.moves import http_client as httplib
import http.client as httplib
import pytest
import yaml
from vcr.compat import mock, contextlib
from vcr.cassette import Cassette
from vcr.errors import UnhandledHTTPRequestError
from vcr.patch import force_reset
@@ -208,7 +209,7 @@ def test_nesting_context_managers_by_checking_references_of_http_connection():
def test_custom_patchers():
class Test(object):
class Test:
attribute = None
with Cassette.use(path="custom_patches", custom_patches=((Test, "attribute", VCRHTTPSConnection),)):

View File

@@ -1,6 +1,7 @@
import mock
import pytest
from vcr.compat import mock
from vcr import errors
from vcr.cassette import Cassette

View File

@@ -1,4 +1,4 @@
from six import BytesIO
from io import BytesIO
from vcr.filters import (
remove_headers,
replace_headers,
@@ -8,10 +8,10 @@ from vcr.filters import (
replace_post_data_parameters,
decode_response,
)
from vcr.compat import mock
from vcr.request import Request
import gzip
import json
import mock
import zlib

View File

@@ -1,5 +1,5 @@
import itertools
from vcr.compat import mock
import mock
import pytest

View File

@@ -1,8 +1,5 @@
# coding: UTF-8
import io
import unittest
import six
from vcr.stubs import VCRHTTPResponse
@@ -58,7 +55,6 @@ def test_response_headers_should_have_correct_values():
assert response.headers.get("date") == "Fri, 24 Oct 2014 18:35:37 GMT"
@unittest.skipIf(six.PY2, "Regression test for Python3 only")
def test_response_parses_correctly_and_fp_attribute_error_is_not_thrown():
"""
Regression test for https://github.com/kevin1024/vcrpy/issues/440

View File

@@ -1,7 +1,8 @@
# -*- encoding: utf-8 -*-
import mock
import pytest
from vcr.compat import mock
from vcr.request import Request
from vcr.serialize import deserialize, serialize
from vcr.serializers import yamlserializer, jsonserializer, compat
@@ -29,7 +30,7 @@ def test_deserialize_new_json_cassette():
deserialize(f.read(), jsonserializer)
REQBODY_TEMPLATE = u"""\
REQBODY_TEMPLATE = """\
interactions:
- request:
body: {req_body}

View File

@@ -1,9 +1,10 @@
import mock
from vcr.stubs import VCRHTTPSConnection
from vcr.compat import mock
from vcr.cassette import Cassette
class TestVCRConnection(object):
class TestVCRConnection:
def test_setting_of_attributes_get_propogated_to_real_connection(self):
vcr_connection = VCRHTTPSConnection("www.examplehost.com")
vcr_connection.ssl_version = "example_ssl_version"

View File

@@ -1,10 +1,10 @@
import mock
import os
import pytest
from six.moves import http_client as httplib
import http.client as httplib
from vcr import VCR, use_cassette
from vcr.compat import mock
from vcr.request import Request
from vcr.stubs import VCRHTTPSConnection
from vcr.patch import _HTTPConnection, force_reset
@@ -170,7 +170,7 @@ def test_fixtures_with_use_cassette(random_fixture):
def test_custom_patchers():
class Test(object):
class Test:
attribute = None
attribute2 = None