summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.pre-commit-config.yaml6
-rw-r--r--azure-pipelines.yml4
-rwxr-xr-xbin/vendor-licenses2
-rw-r--r--identify/cli.py5
-rw-r--r--identify/extensions.py3
-rw-r--r--identify/identify.py24
-rw-r--r--identify/interpreters.py1
-rw-r--r--identify/vendor/licenses.py1
-rw-r--r--setup.cfg5
-rw-r--r--setup.py2
-rw-r--r--tests/cli_test.py2
-rw-r--r--tests/extensions_test.py2
-rw-r--r--tests/identify_test.py2
-rw-r--r--tox.ini2
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',
diff --git a/setup.cfg b/setup.cfg
index 99d565e..feb8c7d 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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 =
diff --git a/setup.py b/setup.py
index 8bf1ba9..3d93aef 100644
--- a/setup.py
+++ b/setup.py
@@ -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
diff --git a/tox.ini b/tox.ini
index c88822d..76f2220 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py36,pypy3,pre-commit
+envlist = py37,pypy3,pre-commit
[testenv]
deps = -rrequirements-dev.txt