summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Crosley <timothy.crosley@gmail.com>2020-01-07 10:28:59 -0800
committerTimothy Crosley <timothy.crosley@gmail.com>2020-01-07 10:28:59 -0800
commit4384bc058968a83e095ae0ce14fafbff90fa4c1a (patch)
tree8adf4ebcfcc575389afd050958ad357328742c69
parent4dc2a71af88d59b664a8bfdcfcc7acd6412bed76 (diff)
downloadisort-4384bc058968a83e095ae0ce14fafbff90fa4c1a.tar.gz
Add support for automatically skipping over fifo files
-rw-r--r--isort/main.py7
-rw-r--r--tests/test_main.py17
2 files changed, 24 insertions, 0 deletions
diff --git a/isort/main.py b/isort/main.py
index 5d48f84c..b9b86687 100644
--- a/isort/main.py
+++ b/isort/main.py
@@ -4,6 +4,7 @@ import functools
import glob
import os
import re
+import stat
import sys
from pathlib import Path
from typing import Any, Dict, Iterable, Iterator, List, MutableMapping, Optional, Sequence
@@ -45,6 +46,12 @@ def is_python_file(path: str) -> bool:
return False
try:
+ if stat.S_ISFIFO(os.stat(path).st_mode):
+ return False
+ except OSError:
+ pass
+
+ try:
with open(path, "rb") as fp:
line = fp.readline(100)
except OSError:
diff --git a/tests/test_main.py b/tests/test_main.py
new file mode 100644
index 00000000..b3e50b54
--- /dev/null
+++ b/tests/test_main.py
@@ -0,0 +1,17 @@
+import os
+from isort import main
+
+
+def test_is_python_file(tmpdir):
+ assert main.is_python_file("file.py")
+ assert main.is_python_file("file.pyi")
+ assert main.is_python_file("file.pyx")
+ assert not main.is_python_file("file.pyc")
+ assert not main.is_python_file("file.txt")
+
+ fifo_file = os.path.join(tmpdir, "fifo_file")
+ os.mkfifo(fifo_file)
+ assert not main.is_python_file(fifo_file)
+
+
+