diff options
-rw-r--r-- | .pre-commit-config.yaml | 6 | ||||
-rw-r--r-- | azure-pipelines.yml | 4 | ||||
-rwxr-xr-x | bin/vendor-licenses | 2 | ||||
-rw-r--r-- | identify/cli.py | 5 | ||||
-rw-r--r-- | identify/extensions.py | 3 | ||||
-rw-r--r-- | identify/identify.py | 24 | ||||
-rw-r--r-- | identify/interpreters.py | 1 | ||||
-rw-r--r-- | identify/vendor/licenses.py | 1 | ||||
-rw-r--r-- | setup.cfg | 5 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | tests/cli_test.py | 2 | ||||
-rw-r--r-- | tests/extensions_test.py | 2 | ||||
-rw-r--r-- | tests/identify_test.py | 2 | ||||
-rw-r--r-- | tox.ini | 2 |
14 files changed, 37 insertions, 24 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 11d1fd8..49ebe49 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: hooks: - id: flake8 exclude: ^identify/vendor/licenses\.py$ - additional_dependencies: [flake8-typing-imports==1.10.1] + additional_dependencies: [flake8-typing-imports==1.12.0] - repo: https://github.com/pre-commit/mirrors-autopep8 rev: v1.6.0 hooks: @@ -28,7 +28,7 @@ repos: rev: v2.6.0 hooks: - id: reorder-python-imports - args: [--py3-plus] + args: [--py37-plus, --add-import, 'from __future__ import annotations'] - repo: https://github.com/asottile/add-trailing-comma rev: v2.2.1 hooks: @@ -38,7 +38,7 @@ repos: rev: v2.31.0 hooks: - id: pyupgrade - args: [--py36-plus] + args: [--py37-plus] - repo: https://github.com/pre-commit/mirrors-mypy rev: v0.931 hooks: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 61a5a11..131e765 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -10,10 +10,10 @@ resources: type: github endpoint: github name: asottile/azure-pipeline-templates - ref: refs/tags/v2.1.0 + ref: refs/tags/v2.4.0 jobs: - template: job--python-tox.yml@asottile parameters: - toxenvs: [pypy3, py36, py37, py38] + toxenvs: [py37, py38] os: linux diff --git a/bin/vendor-licenses b/bin/vendor-licenses index 9bbce91..ba21e2e 100755 --- a/bin/vendor-licenses +++ b/bin/vendor-licenses @@ -3,6 +3,8 @@ ./bin/vendor-licenses > identify/vendor/licenses.py """ +from __future__ import annotations + import argparse import os.path import subprocess diff --git a/identify/cli.py b/identify/cli.py index c61ebe4..bd7a501 100644 --- a/identify/cli.py +++ b/identify/cli.py @@ -1,12 +1,13 @@ +from __future__ import annotations + import argparse import json -from typing import Optional from typing import Sequence from identify import identify -def main(argv: Optional[Sequence[str]] = None) -> int: +def main(argv: Sequence[str] | None = None) -> int: parser = argparse.ArgumentParser() parser.add_argument('--filename-only', action='store_true') parser.add_argument('path') diff --git a/identify/extensions.py b/identify/extensions.py index 508eb9a..b5b9293 100644 --- a/identify/extensions.py +++ b/identify/extensions.py @@ -1,3 +1,4 @@ +from __future__ import annotations EXTENSIONS = { 'adoc': {'text', 'asciidoc'}, 'ai': {'binary', 'adobe-illustrator'}, @@ -79,6 +80,7 @@ EXTENSIONS = { 'idr': {'text', 'idris'}, 'inc': {'text', 'inc'}, 'ini': {'text', 'ini'}, + 'inl': {'text', 'inl', 'c++'}, 'ino': {'text', 'ino', 'c++'}, 'inx': {'text', 'xml', 'inx'}, 'ipynb': {'text', 'jupyter'}, @@ -177,6 +179,7 @@ EXTENSIONS = { 'spec': {'text', 'spec'}, 'sql': {'text', 'sql'}, 'ss': {'text', 'scheme'}, + 'sty': {'text', 'tex'}, 'styl': {'text', 'stylus'}, 'sv': {'text', 'system-verilog'}, 'svelte': {'text', 'svelte'}, diff --git a/identify/identify.py b/identify/identify.py index e61626f..2bf2125 100644 --- a/identify/identify.py +++ b/identify/identify.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import errno import math import os.path @@ -7,10 +9,6 @@ import stat import string import sys from typing import IO -from typing import List -from typing import Optional -from typing import Set -from typing import Tuple from identify import extensions from identify import interpreters @@ -39,7 +37,7 @@ _ALL_TAGS.update(*interpreters.INTERPRETERS.values()) ALL_TAGS = frozenset(_ALL_TAGS) -def tags_from_path(path: str) -> Set[str]: +def tags_from_path(path: str) -> set[str]: try: sr = os.lstat(path) except (OSError, ValueError): # same error-handling as `os.lexists()` @@ -85,7 +83,7 @@ def tags_from_path(path: str) -> Set[str]: return tags -def tags_from_filename(path: str) -> Set[str]: +def tags_from_filename(path: str) -> set[str]: _, filename = os.path.split(path) _, ext = os.path.splitext(filename) @@ -107,7 +105,7 @@ def tags_from_filename(path: str) -> Set[str]: return ret -def tags_from_interpreter(interpreter: str) -> Set[str]: +def tags_from_interpreter(interpreter: str) -> set[str]: _, _, interpreter = interpreter.rpartition('/') # Try "python3.5.2" => "python3.5" => "python3" until one matches. @@ -141,7 +139,7 @@ def file_is_text(path: str) -> bool: return is_text(f) -def _shebang_split(line: str) -> List[str]: +def _shebang_split(line: str) -> list[str]: try: # shebangs aren't supposed to be quoted, though some tools such as # setuptools will write them with quotes so we'll best-guess parse @@ -155,8 +153,8 @@ def _shebang_split(line: str) -> List[str]: def _parse_nix_shebang( bytesio: IO[bytes], - cmd: Tuple[str, ...], -) -> Tuple[str, ...]: + cmd: tuple[str, ...], +) -> tuple[str, ...]: while bytesio.read(2) == b'#!': next_line_b = bytesio.readline() try: @@ -177,7 +175,7 @@ def _parse_nix_shebang( return cmd -def parse_shebang(bytesio: IO[bytes]) -> Tuple[str, ...]: +def parse_shebang(bytesio: IO[bytes]) -> tuple[str, ...]: """Parse the shebang from a file opened for reading binary.""" if bytesio.read(2) != b'#!': return () @@ -204,7 +202,7 @@ def parse_shebang(bytesio: IO[bytes]) -> Tuple[str, ...]: return cmd -def parse_shebang_from_file(path: str) -> Tuple[str, ...]: +def parse_shebang_from_file(path: str) -> tuple[str, ...]: """Parse the shebang given a file path.""" if not os.path.lexists(path): raise ValueError(f'{path} does not exist.') @@ -231,7 +229,7 @@ def _norm_license(s: str) -> str: return s.strip() -def license_id(filename: str) -> Optional[str]: +def license_id(filename: str) -> str | None: """Return the spdx id for the license contained in `filename`. If no license is detected, returns `None`. diff --git a/identify/interpreters.py b/identify/interpreters.py index fde9e25..110a29c 100644 --- a/identify/interpreters.py +++ b/identify/interpreters.py @@ -1,3 +1,4 @@ +from __future__ import annotations INTERPRETERS = { 'ash': {'shell', 'ash'}, 'awk': {'awk'}, diff --git a/identify/vendor/licenses.py b/identify/vendor/licenses.py index 3478d0f..14ebfb3 100644 --- a/identify/vendor/licenses.py +++ b/identify/vendor/licenses.py @@ -1,3 +1,4 @@ +from __future__ import annotations LICENSES = ( ( '0BSD', @@ -1,6 +1,6 @@ [metadata] name = identify -version = 2.4.4 +version = 2.4.6 description = File identification library for Python long_description = file: README.md long_description_content_type = text/markdown @@ -13,7 +13,6 @@ classifiers = License :: OSI Approved :: MIT License Programming Language :: Python :: 3 Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -23,7 +22,7 @@ classifiers = [options] packages = find: -python_requires = >=3.6.1 +python_requires = >=3.7 [options.packages.find] exclude = @@ -1,2 +1,4 @@ +from __future__ import annotations + from setuptools import setup setup() diff --git a/tests/cli_test.py b/tests/cli_test.py index 94fb8ae..0c954cf 100644 --- a/tests/cli_test.py +++ b/tests/cli_test.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from identify import cli diff --git a/tests/extensions_test.py b/tests/extensions_test.py index c2a828c..d7fb3cd 100644 --- a/tests/extensions_test.py +++ b/tests/extensions_test.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from identify import extensions diff --git a/tests/identify_test.py b/tests/identify_test.py index 5a8bbcc..d12334d 100644 --- a/tests/identify_test.py +++ b/tests/identify_test.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import builtins import errno import io @@ -1,5 +1,5 @@ [tox] -envlist = py36,pypy3,pre-commit +envlist = py37,pypy3,pre-commit [testenv] deps = -rrequirements-dev.txt |