unicodedata-reader 1.3.2__tar.gz → 1.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/PKG-INFO +1 -1
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/pyproject.toml +1 -1
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/entry.py +18 -16
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/reader.py +16 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/set.py +12 -16
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/LICENSE +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/README.md +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/__init__.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/__main__.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/bidi_brackets.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/cli.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/compressor.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/east_asian_width.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/emoji.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/general_category.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/line_break.py +0 -0
- {unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/vertical_orientation.py +0 -0
|
@@ -10,14 +10,13 @@ from typing import Iterable
|
|
|
10
10
|
from typing import List
|
|
11
11
|
from typing import Optional
|
|
12
12
|
from typing import Sequence
|
|
13
|
-
from typing import Set
|
|
14
13
|
from typing import Union
|
|
15
14
|
from typing import Tuple
|
|
16
15
|
|
|
17
16
|
_logger = logging.getLogger('UnicodeDataEntry')
|
|
18
17
|
|
|
19
18
|
|
|
20
|
-
def u_hex(value):
|
|
19
|
+
def u_hex(value: int) -> str:
|
|
21
20
|
return f'{value:04X}'
|
|
22
21
|
|
|
23
22
|
|
|
@@ -80,16 +79,24 @@ class UnicodeDataEntry(object):
|
|
|
80
79
|
def is_in_range(self, code: int) -> bool:
|
|
81
80
|
return code >= self.min and code <= self.max
|
|
82
81
|
|
|
82
|
+
@staticmethod
|
|
83
|
+
def to_codes(entries: Iterable['UnicodeDataEntry']):
|
|
84
|
+
return itertools.chain(*(e.range() for e in entries))
|
|
85
|
+
|
|
83
86
|
@property
|
|
84
87
|
def count(self):
|
|
85
88
|
self.assert_range()
|
|
86
89
|
return self.max - self.min + 1
|
|
87
90
|
|
|
88
|
-
def range_as_str(self):
|
|
91
|
+
def range_as_str(self, converter: Callable[[int], str] = u_hex):
|
|
89
92
|
self.assert_range()
|
|
93
|
+
min = converter(self.min)
|
|
90
94
|
if self.min == self.max:
|
|
91
|
-
return
|
|
92
|
-
|
|
95
|
+
return min
|
|
96
|
+
max = converter(self.max)
|
|
97
|
+
if min == max:
|
|
98
|
+
return min
|
|
99
|
+
return f'{min}..{max}'
|
|
93
100
|
|
|
94
101
|
def to_str(self, separator: str = ';'):
|
|
95
102
|
return separator.join((self.range_as_str(), str(self.value)))
|
|
@@ -269,24 +276,19 @@ class UnicodeDataEntries(object):
|
|
|
269
276
|
"""Returns an `Iterable` of `UnicodeDataEntry` for the given `pred`."""
|
|
270
277
|
return (entry for entry in self if pred(entry.value))
|
|
271
278
|
|
|
272
|
-
def
|
|
273
|
-
"""Returns an `Iterable` of Unicode code points for the given `pred`."""
|
|
274
|
-
return itertools.chain(*(e.range() for e in self.filter(pred)))
|
|
275
|
-
|
|
276
|
-
def add_to_set(self, pred: Callable[[Any], bool], set: Set[int]) -> None:
|
|
279
|
+
def add_to_set(self, pred: Callable[[Any], bool], set: set) -> None:
|
|
277
280
|
"""Add values `pred` returns `True` to `set[int]`."""
|
|
278
|
-
for code in self.
|
|
281
|
+
for code in UnicodeDataEntry.to_codes(self.filter(pred)):
|
|
279
282
|
set.add(code)
|
|
280
283
|
|
|
281
|
-
def remove_from_set(self, pred: Callable[[Any], bool],
|
|
282
|
-
set: Set[int]) -> None:
|
|
284
|
+
def remove_from_set(self, pred: Callable[[Any], bool], set: set) -> None:
|
|
283
285
|
"""Remove values `pred` returns `True` from `set[int]`."""
|
|
284
|
-
for code in self.
|
|
286
|
+
for code in UnicodeDataEntry.to_codes(self.filter(pred)):
|
|
285
287
|
set.discard(code)
|
|
286
288
|
|
|
287
|
-
def to_set(self, pred: Callable[[Any], bool]) ->
|
|
289
|
+
def to_set(self, pred: Callable[[Any], bool]) -> set:
|
|
288
290
|
"""Returns a `set[int]` of values `pred` returns `True`."""
|
|
289
|
-
s = set()
|
|
291
|
+
s = set()
|
|
290
292
|
self.add_to_set(pred, s)
|
|
291
293
|
return s
|
|
292
294
|
|
|
@@ -30,6 +30,22 @@ class UnicodeDataReader(object):
|
|
|
30
30
|
) -> None:
|
|
31
31
|
self.url_template = url_template
|
|
32
32
|
|
|
33
|
+
class Context(object):
|
|
34
|
+
"""This class changes `UnicodeDataReader.default` while in the context,
|
|
35
|
+
and restores when exit."""
|
|
36
|
+
|
|
37
|
+
def __init__(self, reader: 'UnicodeDataReader') -> None:
|
|
38
|
+
self.reader = reader
|
|
39
|
+
|
|
40
|
+
def __enter__(self):
|
|
41
|
+
self.saved_default = UnicodeDataReader.default
|
|
42
|
+
UnicodeDataReader.default = self.reader
|
|
43
|
+
return self.reader
|
|
44
|
+
|
|
45
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
46
|
+
UnicodeDataReader.default = self.saved_default
|
|
47
|
+
return None
|
|
48
|
+
|
|
33
49
|
def bidi_brackets(self) -> UnicodeDataEntries:
|
|
34
50
|
name = 'BidiBrackets'
|
|
35
51
|
lines = self.read_lines(name)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
from typing import Callable
|
|
3
3
|
from typing import Iterable
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from unicodedata_reader.entry import *
|
|
7
7
|
from unicodedata_reader.reader import *
|
|
@@ -11,9 +11,9 @@ class Set(object):
|
|
|
11
11
|
"""A simple wrapper of a `set` of Unicode code points."""
|
|
12
12
|
|
|
13
13
|
def __init__(self,
|
|
14
|
-
entries: UnicodeDataEntries = None,
|
|
15
|
-
pred: Callable[[Any], bool] = None) -> None:
|
|
16
|
-
self.set = set()
|
|
14
|
+
entries: Optional[UnicodeDataEntries] = None,
|
|
15
|
+
pred: Optional[Callable[[Any], bool]] = None) -> None:
|
|
16
|
+
self.set = set()
|
|
17
17
|
if entries:
|
|
18
18
|
self.add_entries(entries, pred)
|
|
19
19
|
|
|
@@ -46,25 +46,21 @@ class Set(object):
|
|
|
46
46
|
entries.add_to_set(pred, self.set)
|
|
47
47
|
|
|
48
48
|
@staticmethod
|
|
49
|
-
def east_asian_width(
|
|
50
|
-
|
|
51
|
-
reader: UnicodeDataReader = UnicodeDataReader.default) -> 'Set':
|
|
49
|
+
def east_asian_width(value: str) -> 'Set':
|
|
50
|
+
reader = UnicodeDataReader.default
|
|
52
51
|
return Set(reader.east_asian_width(), lambda v: v == value)
|
|
53
52
|
|
|
54
53
|
@staticmethod
|
|
55
|
-
def general_category(
|
|
56
|
-
|
|
57
|
-
reader: UnicodeDataReader = UnicodeDataReader.default) -> 'Set':
|
|
54
|
+
def general_category(value: str) -> 'Set':
|
|
55
|
+
reader = UnicodeDataReader.default
|
|
58
56
|
return Set(reader.general_category(), lambda v: v.startswith(value))
|
|
59
57
|
|
|
60
58
|
@staticmethod
|
|
61
|
-
def scripts(
|
|
62
|
-
|
|
63
|
-
reader: UnicodeDataReader = UnicodeDataReader.default) -> 'Set':
|
|
59
|
+
def scripts(value: str) -> 'Set':
|
|
60
|
+
reader = UnicodeDataReader.default
|
|
64
61
|
return Set(reader.scripts(), lambda v: v == value)
|
|
65
62
|
|
|
66
63
|
@staticmethod
|
|
67
|
-
def script_extensions(
|
|
68
|
-
|
|
69
|
-
reader: UnicodeDataReader = UnicodeDataReader.default) -> 'Set':
|
|
64
|
+
def script_extensions(value: str) -> 'Set':
|
|
65
|
+
reader = UnicodeDataReader.default
|
|
70
66
|
return Set(reader.script_extensions(), lambda v: value in v)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/east_asian_width.py
RENAMED
|
File without changes
|
|
File without changes
|
{unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/general_category.py
RENAMED
|
File without changes
|
|
File without changes
|
{unicodedata_reader-1.3.2 → unicodedata_reader-1.3.4}/unicodedata_reader/vertical_orientation.py
RENAMED
|
File without changes
|