Skip to content

Commit a9d858e

Browse files
committed
Python2 compatibility module
1 parent f956084 commit a9d858e

File tree

17 files changed

+41
-35
lines changed

17 files changed

+41
-35
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ language: python
22
sudo: false
33
matrix:
44
include:
5+
- python: 2.7
56
- python: 3.4
67
- python: 3.5
78
- python: 3.6

openapi_core/__init__.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
# -*- coding: utf-8 -*-
2-
3-
"""Python 2.7 backward compatibility"""
4-
import openapi_core._python27_patch
5-
62
"""OpenAPI core module"""
73
from openapi_core.shortcuts import (
84
create_spec, validate_parameters, validate_body, validate_data,
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
import functools
1+
"""OpenAPI core python 2.7 compatibility module"""
22
try:
33
from functools import lru_cache
4-
54
except ImportError:
65
from backports.functools_lru_cache import lru_cache
7-
functools.lru_cache = lru_cache
86

97
try:
108
from functools import partialmethod
11-
129
except ImportError:
1310
from backports.functools_partialmethod import partialmethod
14-
functools.partialmethod = partialmethod
11+
12+
__all__ = ['lru_cache', 'partialmethod']

openapi_core/schema/components/factories.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from functools import lru_cache
2-
1+
from openapi_core.compat import lru_cache
32
from openapi_core.schema.components.models import Components
43
from openapi_core.schema.schemas.generators import SchemasGenerator
54

openapi_core/schema/operations/generators.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# -*- coding: utf-8 -*-
22
"""OpenAPI core operations models module"""
3-
from functools import lru_cache
4-
53
from six import iteritems
64
from openapi_spec_validator.validators import PathItemValidator
75

6+
from openapi_core.compat import lru_cache
87
from openapi_core.schema.operations.models import Operation
98
from openapi_core.schema.parameters.generators import ParametersGenerator
109
from openapi_core.schema.request_bodies.factories import RequestBodyFactory

openapi_core/schema/parameters/generators.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"""OpenAPI core parameters generators module"""
2-
from functools import lru_cache
3-
42
from six import iteritems
53

4+
from openapi_core.compat import lru_cache
65
from openapi_core.schema.parameters.factories import ParameterFactory
76

87

openapi_core/schema/paths/generators.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"""OpenAPI core paths generators module"""
2-
from functools import lru_cache
3-
42
from six import iteritems
53

4+
from openapi_core.compat import lru_cache
65
from openapi_core.schema.operations.generators import OperationsGenerator
76
from openapi_core.schema.paths.models import Path
87

openapi_core/schema/request_bodies/factories.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""OpenAPI core request bodies factories module"""
2-
from functools import lru_cache
3-
2+
from openapi_core.compat import lru_cache
43
from openapi_core.schema.media_types.generators import MediaTypeGenerator
54
from openapi_core.schema.request_bodies.models import RequestBody
65

openapi_core/schema/responses/generators.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"""OpenAPI core responses generators module"""
2-
from functools import lru_cache
3-
42
from six import iteritems
53

4+
from openapi_core.compat import lru_cache
65
from openapi_core.schema.media_types.generators import MediaTypeGenerator
76
from openapi_core.schema.parameters.generators import ParametersGenerator
87
from openapi_core.schema.responses.models import Response

openapi_core/schema/schemas/factories.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""OpenAPI core schemas factories module"""
22
import logging
3-
from functools import lru_cache
43

4+
from openapi_core.compat import lru_cache
55
from openapi_core.schema.properties.generators import PropertiesGenerator
66
from openapi_core.schema.schemas.models import Schema
77

openapi_core/schema/servers/generators.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"""OpenAPI core servers generators module"""
2-
from functools import lru_cache
3-
42
from six import iteritems
53

4+
from openapi_core.compat import lru_cache
65
from openapi_core.schema.servers.models import Server, ServerVariable
76

87

openapi_core/schema/specs/factories.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# -*- coding: utf-8 -*-
22
"""OpenAPI core specs factories module"""
3-
from functools import lru_cache
43

54
from openapi_spec_validator import openapi_v3_spec_validator
65

6+
from openapi_core.compat import lru_cache
77
from openapi_core.schema.components.factories import ComponentsFactory
88
from openapi_core.schema.infos.factories import InfoFactory
99
from openapi_core.schema.paths.generators import PathsGenerator

openapi_core/schema/specs/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# -*- coding: utf-8 -*-
22
"""OpenAPI core specs models module"""
33
import logging
4-
from functools import partialmethod
54

5+
from openapi_core.compat import partialmethod
66
from openapi_core.schema.operations.exceptions import InvalidOperation
77
from openapi_core.schema.servers.exceptions import InvalidServer
88

openapi_core/validation/util.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
"""OpenAPI core validation util module"""
2-
try:
3-
from urllib.parse import urlparse
4-
5-
except ImportError:
6-
from urlparse import urlparse
2+
from six.moves.urllib.parse import urlparse
73

84

95
def is_absolute(url):

requirements_2.7.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
openapi-spec-validator
22
six
3+
lazy-object-proxy
34
backports.functools-lru-cache
45
backports.functools-partialmethod
56
enum34

setup.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ def get_metadata(init_file):
2525
return dict(re.findall("__([a-z]+)__ = '([^']+)'", init_file))
2626

2727

28+
def install_requires():
29+
py27 = '_2.7' if sys.version_info < (3,) else ''
30+
return read_requirements('requirements{}.txt'.format(py27))
31+
32+
2833
class PyTest(TestCommand):
2934

3035
"""Command to run unit tests after in-place build."""
@@ -53,8 +58,6 @@ def run_tests(self):
5358
init_py = read_file(init_path)
5459
metadata = get_metadata(init_py)
5560

56-
py27 = '_2.7' if sys.version_info < (3,) else ''
57-
5861

5962
setup(
6063
name='openapi-core',
@@ -70,13 +73,13 @@ def run_tests(self):
7073
'Intended Audience :: Developers',
7174
"Topic :: Software Development :: Libraries :: Python Modules",
7275
"Operating System :: OS Independent",
73-
'Programming Language :: Python :: 3.4',
76+
'Programming Language :: Python :: 2.7',
7477
'Programming Language :: Python :: 3.4',
7578
'Programming Language :: Python :: 3.5',
7679
'Programming Language :: Python :: 3.6',
7780
'Topic :: Software Development :: Libraries',
7881
],
79-
install_requires=read_requirements('requirements{}.txt'.format(py27)),
82+
install_requires=install_requires(),
8083
tests_require=read_requirements('requirements_dev.txt'),
8184
extras_require={
8285
'flask': ["werkzeug"],

tests/unit/validation/test_util.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from openapi_core.validation.util import path_qs
2+
3+
4+
class TestPathQs(object):
5+
6+
def test_path(self):
7+
url = 'https://test.com:1234/path'
8+
9+
result = path_qs(url)
10+
11+
assert result == '/path'
12+
13+
def test_query(self):
14+
url = 'https://test.com:1234/path?query=1'
15+
16+
result = path_qs(url)
17+
18+
assert result == '/path?query=1'

0 commit comments

Comments
 (0)