diff --git a/.travis.yml b/.travis.yml index b224661..d761a32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,12 +9,6 @@ matrix: script: - tox - RELEASE_SKIP=head PYVER=2.7 ${TRAVIS_BUILD_DIR}/release-test.sh - - os: linux - language: python - python: 3.4 - script: - - tox - - RELEASE_SKIP=head PYVER=3 ${TRAVIS_BUILD_DIR}/release-test.sh - os: linux language: python python: 3.5 @@ -38,9 +32,6 @@ matrix: - os: osx language: generic env: TRAVIS_PYTHON_VERSION=2.7 PYENV_VERSION=2.7.15 - - os: osx - language: generic - env: TRAVIS_PYTHON_VERSION=3.4 PYENV_VERSION=3.4.7 - os: osx language: generic env: TRAVIS_PYTHON_VERSION=3.5 PYENV_VERSION=3.5.4 diff --git a/appveyor.yml b/appveyor.yml index 78a627f..48d41e5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -11,10 +11,6 @@ environment: PYTHON_VERSION: "2.7.x" PYTHON_ARCH: "64" - - PYTHON: "C:\\Python34-x64" - PYTHON_VERSION: "3.4.x" - PYTHON_ARCH: "64" - - PYTHON: "C:\\Python35-x64" PYTHON_VERSION: "3.5.x" PYTHON_ARCH: "64" diff --git a/release-test.sh b/release-test.sh index 29c34c7..4f0086d 100755 --- a/release-test.sh +++ b/release-test.sh @@ -66,7 +66,7 @@ rm lib/python-wheels/setuptools* \ && pip install --force-reinstall -U pip==${pipver} \ && pip install setuptools==${setupver} wheel pip install ${package}*tar.gz -pip install pytest +pip install 'pytest<5' mkdir out tar --extract --directory=out -z -f ${package}*.tar.gz pushd out/${package}* @@ -86,7 +86,7 @@ rm lib/python-wheels/setuptools* \ && pip install --force-reinstall -U pip==${pipver} \ && pip install setuptools==${setupver} wheel pip install ${package}*.whl -pip install pytest +pip install 'pytest<5' mkdir not-${module} pushd not-${module} ; ../bin/${run_tests}; popd popd diff --git a/requirements.txt b/requirements.txt index 0442456..80e7515 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ schema-salad >= 1.14 -typing>=3.6,<3.7; python_version < '3.5' +typing==3.7.4 ; python_version < '3.5' futures >= 3.0.5; python_version == '2.7' subprocess32 >= 3.5.0; python_version < '3' junit-xml >= 1.8 +pytest < 5 diff --git a/setup.py b/setup.py index baae97f..50a2a72 100755 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ ] needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv) -pytest_runner = ['pytest-runner'] if needs_pytest else [] +pytest_runner = ['pytest < 5', 'pytest-runner < 5'] if needs_pytest else [] setup(name='cwltest', version='1.0', @@ -36,12 +36,12 @@ download_url="https://github.com/common-workflow-language/cwltest", license='Apache 2.0', packages=["cwltest", "cwltest.tests"], - package_data={'cwltest.tests': 'test-data/*'}, + package_data={'cwltest.tests': ['test-data/*']}, include_package_data=True, install_requires=install_requires, test_suite='tests', setup_requires=[] + pytest_runner, - tests_require=['pytest'], + tests_require=['pytest<5'], entry_points={ 'console_scripts': ["cwltest=cwltest:main", "mock-cwl-runner=cwltest.tests.mock_cwl_runner:main"] diff --git a/typeshed/2and3/future/__init__.pyi b/typeshed/2and3/future/__init__.pyi new file mode 100644 index 0000000..e69de29 diff --git a/typeshed/2and3/future/utils/__init__.pyi b/typeshed/2and3/future/utils/__init__.pyi new file mode 100644 index 0000000..a67c2a1 --- /dev/null +++ b/typeshed/2and3/future/utils/__init__.pyi @@ -0,0 +1,61 @@ +# Stubs for future.utils (Python 3) +# +# NOTE: This dynamically typed stub was automatically generated by stubgen. + +from typing import Any, Optional + +PY3: Any +PY2: Any +PY26: Any +PYPY: Any + +def python_2_unicode_compatible(cls): ... +def with_metaclass(meta: Any, *bases: Any): ... +def bstr(s: Any): ... +def bord(s: Any): ... + +def tobytes(s: Any): ... +def native_str_to_bytes(s: Any, encoding: str = ...): ... +def bytes_to_native_str(b: Any, encoding: str = ...): ... +def text_to_native_str(t: Any, encoding: Optional[Any] = ...): ... +def lrange(*args: Any, **kwargs: Any): ... +def lzip(*args: Any, **kwargs: Any): ... +def lmap(*args: Any, **kwargs: Any): ... +def lfilter(*args: Any, **kwargs: Any): ... + +def isidentifier(s: Any, dotted: bool = ...): ... +def viewitems(obj: Any, **kwargs: Any): ... +def viewkeys(obj: Any, **kwargs: Any): ... +def viewvalues(obj: Any, **kwargs: Any): ... +def iteritems(obj: Any, **kwargs: Any): ... +def iterkeys(obj: Any, **kwargs: Any): ... +def itervalues(obj: Any, **kwargs: Any): ... +def bind_method(cls, name: Any, func: Any) -> None: ... +def getexception(): ... +def raise_(tp: Any, value: Optional[Any] = ..., tb: Optional[Any] = ...) -> None: ... +def raise_from(exc: Any, cause: Any) -> None: ... +def raise_with_traceback(exc: Any, traceback: Any = ...) -> None: ... +reraise = raise_ + +def implements_iterator(cls): ... + +get_next: Any + +def encode_filename(filename: Any): ... +def is_new_style(cls): ... +native_str = str +native_bytes = bytes + +def istext(obj: Any): ... +def isbytes(obj: Any): ... +def isnewbytes(obj: Any): ... +def isint(obj: Any): ... +def native(obj: Any): ... + +exec_: Any + +def old_div(a: Any, b: Any): ... +def as_native_str(encoding: str = ...): ... +def listvalues(d: Any): ... +def listitems(d: Any): ... +def ensure_new_type(obj: Any): ... diff --git a/typeshed/3/urllib/__init__.py b/typeshed/3/urllib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/typeshed/3/urllib/parse.pyi b/typeshed/3/urllib/parse.pyi new file mode 100644 index 0000000..cb7837e --- /dev/null +++ b/typeshed/3/urllib/parse.pyi @@ -0,0 +1,152 @@ +# Stubs for urllib.parse +from typing import Any, List, Dict, Tuple, AnyStr, Generic, Iterator, overload, Sequence, Mapping, Union, NamedTuple, Callable, Optional +import sys + +_Str = Union[bytes, str] + + +uses_relative: List[str] +uses_netloc: List[str] +uses_params: List[str] +non_hierarchical: List[str] +uses_query: List[str] +uses_fragment: List[str] +scheme_chars: str +MAX_CACHE_SIZE = 0 + +class _ResultMixinBase(Generic[AnyStr]): + def geturl(self) -> AnyStr: ... + +class _ResultMixinStr(_ResultMixinBase[str]): + def encode(self, encoding: str = ..., errors: str = ...) -> _ResultMixinBytes: ... + + +class _ResultMixinBytes(_ResultMixinBase[str]): + def decode(self, encoding: str = ..., errors: str = ...) -> _ResultMixinStr: ... + + +class _NetlocResultMixinBase(Generic[AnyStr]): + username: AnyStr + password: AnyStr + hostname: AnyStr + port: int + +class _NetlocResultMixinStr(_NetlocResultMixinBase[str], _ResultMixinStr): ... + +class _NetlocResultMixinBytes(_NetlocResultMixinBase[bytes], _ResultMixinBytes): ... + +class _DefragResultBase(Generic[AnyStr]): + url: AnyStr + fragment: AnyStr + @overload + def __getitem__(self, x: slice) -> AnyStr: ... + @overload + def __getitem__(self, x: int) -> AnyStr: ... + def __iter__(self) -> Iterator[AnyStr]: ... + + + +_SplitResultBase = NamedTuple( + '_SplitResultBase', + [ + ('scheme', str), ('netloc', str), ('path', str), ('query', str), ('fragment', str) + ] +) +_SplitResultBytesBase = NamedTuple( + '_SplitResultBytesBase', + [ + ('scheme', bytes), ('netloc', bytes), ('path', bytes), ('query', bytes), ('fragment', bytes) + ] +) + +_ParseResultBase = NamedTuple( + '_ParseResultBase', + [ + ('scheme', str), ('netloc', str), ('path', str), ('params', str), ('query', str), ('fragment', str) + ] +) +_ParseResultBytesBase = NamedTuple( + '_ParseResultBytesBase', + [ + ('scheme', bytes), ('netloc', bytes), ('path', bytes), ('params', bytes), ('query', bytes), ('fragment', bytes) + ] +) + +# Structured result objects for string data +class DefragResult(_DefragResultBase[str], _ResultMixinStr): ... + +class SplitResult(_SplitResultBase, _NetlocResultMixinStr): ... + +class ParseResult(_ParseResultBase, _NetlocResultMixinStr): ... + +# Structured result objects for bytes data +class DefragResultBytes(_DefragResultBase[bytes], _ResultMixinBytes): ... + +class SplitResultBytes(_SplitResultBytesBase, _NetlocResultMixinBytes): ... + +class ParseResultBytes(_ParseResultBytesBase, _NetlocResultMixinBytes): ... + + +def parse_qs(qs: AnyStr, keep_blank_values: bool = ..., strict_parsing: bool = ..., encoding: str = ..., errors: str = ...) -> Dict[AnyStr, List[AnyStr]]: ... + +def parse_qsl(qs: AnyStr, keep_blank_values: bool = ..., strict_parsing: bool = ..., encoding: str = ..., errors: str = ...) -> List[Tuple[AnyStr, AnyStr]]: ... + + +@overload +def quote(string: str, safe: _Str = ..., encoding: str = ..., errors: str = ...) -> str: ... +@overload +def quote(string: bytes, safe: _Str = ...) -> str: ... + +def quote_from_bytes(bs: bytes, safe: _Str = ...) -> str: ... + +@overload +def quote_plus(string: str, safe: _Str = ..., encoding: str = ..., errors: str = ...) -> str: ... +@overload +def quote_plus(string: bytes, safe: _Str = ...) -> str: ... + +def unquote(string: str, encoding: str = ..., errors: str = ...) -> str: ... + +def unquote_to_bytes(string: _Str) -> bytes: ... + +def unquote_plus(string: str, encoding: str = ..., errors: str = ...) -> str: ... + +@overload +def urldefrag(url: str) -> DefragResult: ... +@overload +def urldefrag(url: bytes) -> DefragResultBytes: ... + +if sys.version_info >= (3, 5): + def urlencode(query: Union[Mapping[Any, Any], + Mapping[Any, Sequence[Any]], + Sequence[Tuple[Any, Any]], + Sequence[Tuple[Any, Sequence[Any]]]], + doseq: bool = ..., safe: AnyStr = ..., encoding: str = ..., errors: str = ..., + quote_via: Callable[[str, AnyStr, str, str], str] = ...) -> str: ... +else: + def urlencode(query: Union[Mapping[Any, Any], + Mapping[Any, Sequence[Any]], + Sequence[Tuple[Any, Any]], + Sequence[Tuple[Any, Sequence[Any]]]], + doseq: bool = ..., safe: AnyStr = ..., encoding: str = ..., errors: str = ...) -> str: ... + +def urljoin(base: Optional[AnyStr], url: Optional[AnyStr], allow_fragments: bool = ...) -> AnyStr: ... + +@overload +def urlparse(url: str, scheme: str = ..., allow_fragments: bool = ...) -> ParseResult: ... +@overload +def urlparse(url: bytes, scheme: bytes = ..., allow_fragments: bool = ...) -> ParseResultBytes: ... + +@overload +def urlsplit(url: Optional[str], scheme: str = ..., allow_fragments: bool = ...) -> SplitResult: ... +@overload +def urlsplit(url: bytes, scheme: bytes = ..., allow_fragments: bool = ...) -> SplitResultBytes: ... + +@overload +def urlunparse(components: Tuple[AnyStr, AnyStr, AnyStr, AnyStr, AnyStr, AnyStr]) -> AnyStr: ... +@overload +def urlunparse(components: Sequence[AnyStr]) -> AnyStr: ... + +@overload +def urlunsplit(components: Tuple[AnyStr, AnyStr, AnyStr, AnyStr, AnyStr]) -> AnyStr: ... +@overload +def urlunsplit(components: Sequence[AnyStr]) -> AnyStr: ...