Skip to content

Commit 2bb42fa

Browse files
committed
Lint quote style.
1 parent 96613cd commit 2bb42fa

15 files changed

Lines changed: 576 additions & 579 deletions

docs/examples.ipynb

Lines changed: 86 additions & 86 deletions
Large diffs are not rendered by default.

lupyne/engine/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
from .indexers import Indexer, IndexSearcher, IndexWriter, MultiSearcher
1313
from .queries import Query
1414

15-
version = tuple(map(int, lucene.VERSION.split('.')))
15+
version = tuple(map(int, lucene.VERSION.split(".")))
1616
assert version >= (10,), version

lupyne/engine/analyzers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def __next__(self):
2121
raise StopIteration
2222

2323
def __getattr__(self, name):
24-
cls = getattr(analysis.tokenattributes, name + 'Attribute').class_
24+
cls = getattr(analysis.tokenattributes, name + "Attribute").class_
2525
attr = self.getAttribute(cls) if self.hasAttribute(cls) else self.addAttribute(cls)
2626
setattr(self, name, attr)
2727
return attr
@@ -127,7 +127,7 @@ def tokens(self, text: str, field: str | None = None) -> analysis.TokenStream:
127127
"""Return lucene TokenStream from text."""
128128
return self.components(field, StringReader(text))[1]
129129

130-
def parse(self, query: str, field='', op='', parser=None, **attrs) -> search.Query:
130+
def parse(self, query: str, field="", op="", parser=None, **attrs) -> search.Query:
131131
"""Return parsed lucene Query.
132132
133133
Args:

lupyne/engine/documents.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@ class Field(FieldType):
4141
storeTermVectors = property(FieldType.storeTermVectors, FieldType.setStoreTermVectors)
4242
tokenized = property(FieldType.tokenized, FieldType.setTokenized)
4343

44-
properties = {name for name in locals() if not name.startswith('__')}
45-
types = {int: 'long', float: 'double', str: 'string'}
44+
properties = {name for name in locals() if not name.startswith("__")}
45+
types = {int: "long", float: "double", str: "string"}
4646
types.update(
47-
NUMERIC='long', BINARY='string', SORTED='string', SORTED_NUMERIC='long', SORTED_SET='string'
47+
NUMERIC="long", BINARY="string", SORTED="string", SORTED_NUMERIC="long", SORTED_SET="string"
4848
)
4949
dimensions = property(
5050
FieldType.pointDimensionCount,
5151
lambda self, count: self.setDimensions(count, Long.BYTES),
5252
)
5353

54-
def __init__(self, name: str, docValuesType='', indexOptions='', dimensions=0, **settings):
54+
def __init__(self, name: str, docValuesType="", indexOptions="", dimensions=0, **settings):
5555
super().__init__()
5656
self.name = name
5757
for name in self.properties.intersection(settings):
@@ -64,24 +64,24 @@ def __init__(self, name: str, docValuesType='', indexOptions='', dimensions=0, *
6464
self.indexOptions = getattr(index.IndexOptions, indexOptions.upper())
6565
if docValuesType:
6666
self.docValuesType = getattr(index.DocValuesType, docValuesType.upper())
67-
name = docValuesType.title().replace('_', '')
68-
self.docValueClass = getattr(document, name + 'DocValuesField')
67+
name = docValuesType.title().replace("_", "")
68+
self.docValueClass = getattr(document, name + "DocValuesField")
6969
if self.stored or self.indexed or self.dimensions:
7070
settings = self.settings
71-
del settings['docValuesType']
71+
del settings["docValuesType"]
7272
self.docValueLess = Field(self.name, **settings)
7373
assert self.stored or self.indexed or self.docvalues or self.dimensions
7474

7575
@classmethod
7676
def String(
77-
cls, name: str, tokenized=False, omitNorms=True, indexOptions='DOCS', **settings
77+
cls, name: str, tokenized=False, omitNorms=True, indexOptions="DOCS", **settings
7878
) -> Self:
7979
"""Return Field with default settings for strings."""
8080
settings.update(tokenized=tokenized, omitNorms=omitNorms, indexOptions=indexOptions)
8181
return cls(name, **settings)
8282

8383
@classmethod
84-
def Text(cls, name: str, indexOptions='DOCS_AND_FREQS_AND_POSITIONS', **settings) -> Self:
84+
def Text(cls, name: str, indexOptions="DOCS_AND_FREQS_AND_POSITIONS", **settings) -> Self:
8585
"""Return Field with default settings for text."""
8686
return cls(name, indexOptions=indexOptions, **settings)
8787

@@ -97,7 +97,7 @@ def docvalues(self):
9797
def settings(self) -> dict:
9898
"""dict representation of settings"""
9999
defaults = FieldType()
100-
result = {'dimensions': self.dimensions} if self.dimensions else {}
100+
result = {"dimensions": self.dimensions} if self.dimensions else {}
101101
for name in Field.properties:
102102
value = getattr(self, name)
103103
if value != getattr(defaults, name)():
@@ -110,7 +110,7 @@ def items(self, *values) -> Iterator[document.Field]:
110110
types = {int: int, float: util.NumericUtils.doubleToSortableLong}
111111
for value in values:
112112
yield self.docValueClass(self.name, types.get(type(value), util.BytesRef)(value))
113-
self = getattr(self, 'docValueLess', self)
113+
self = getattr(self, "docValueLess", self)
114114
if self.dimensions:
115115
for value in values:
116116
cls = document.LongPoint if isinstance(value, int) else document.DoublePoint
@@ -132,7 +132,7 @@ class NestedField(Field):
132132
sep: field separator used on name and values
133133
"""
134134

135-
def __init__(self, name: str, sep: str = '.', **settings):
135+
def __init__(self, name: str, sep: str = ".", **settings):
136136
super().__init__(name, **Field.String(name, **settings).settings)
137137
self.sep = sep
138138
self.names = tuple(self.values(name))
@@ -145,7 +145,7 @@ def values(self, value: str) -> Iterator[str]:
145145

146146
def items(self, *values: str) -> Iterator[document.Field]:
147147
"""Generate indexed component fields."""
148-
field = getattr(self, 'docValueLess', self)
148+
field = getattr(self, "docValueLess", self)
149149
for value in values:
150150
for name, text in zip(self.names, self.values(value)):
151151
yield document.Field(name, text, field)
@@ -176,7 +176,7 @@ def __init__(self, name: str, dimensions: int = 1, **settings):
176176
def timestamp(cls, date) -> float:
177177
"""Return utc timestamp from date or time tuple."""
178178
if isinstance(date, datetime.date):
179-
return calendar.timegm(date.timetuple()) + getattr(date, 'microsecond', 0) * 1e-6
179+
return calendar.timegm(date.timetuple()) + getattr(date, "microsecond", 0) * 1e-6
180180
return float(calendar.timegm(tuple(date) + (None, 1, 1, 0, 0, 0)[len(date) :]))
181181

182182
def items(self, *dates) -> Iterator[document.Field]:
@@ -327,7 +327,7 @@ def dict(self, *names: str, **defaults) -> dict:
327327
result = super().dict(*names, **defaults)
328328
result.update(__id__=self.id, __score__=self.score)
329329
if self.sortkeys:
330-
result['__sortkeys__'] = self.sortkeys
330+
result["__sortkeys__"] = self.sortkeys
331331
return result
332332

333333

@@ -348,7 +348,7 @@ class Hits:
348348

349349
def __init__(self, searcher, scoredocs: Sequence, count=0, fields=None):
350350
self.searcher, self.scoredocs = searcher, scoredocs
351-
if hasattr(count, 'relation'):
351+
if hasattr(count, "relation"):
352352
cls = int if count.relation == search.TotalHits.Relation.EQUAL_TO else float
353353
count = cls(count.value())
354354
self.count, self.fields = count, fields
@@ -372,20 +372,20 @@ def __getitem__(self, index):
372372

373373
@property
374374
def ids(self) -> Iterator[int]:
375-
return map(operator.attrgetter('doc'), self.scoredocs)
375+
return map(operator.attrgetter("doc"), self.scoredocs)
376376

377377
@property
378378
def scores(self) -> Iterator[float]:
379-
return map(operator.attrgetter('score'), self.scoredocs)
379+
return map(operator.attrgetter("score"), self.scoredocs)
380380

381381
@property
382382
def maxscore(self) -> float:
383383
"""max score of present hits; not necessarily of all matches"""
384-
return max(self.scores, default=float('nan'))
384+
return max(self.scores, default=float("nan"))
385385

386386
def items(self) -> Iterator[tuple]:
387387
"""Generate zipped ids and scores."""
388-
return map(operator.attrgetter('doc', 'score'), self.scoredocs)
388+
return map(operator.attrgetter("doc", "score"), self.scoredocs)
389389

390390
def highlights(self, query: search.Query, **fields: int) -> Iterator[dict]:
391391
"""Generate highlighted fields for each hit.
@@ -406,7 +406,7 @@ def docvalues(self, field: str, type=None) -> dict:
406406

407407
def groupby(
408408
self, func: Callable, count: int | None = None, docs: int | None = None
409-
) -> 'Groups':
409+
) -> "Groups":
410410
"""Return ordered list of [Hits][lupyne.engine.documents.Hits] grouped by value of function applied to doc ids.
411411
412412
Optionally limit the number of groups and docs per group.
@@ -480,7 +480,7 @@ def __init__(self, field: str, sort=None, cache=True, **attrs):
480480
self.groupSort = self.sortWithinGroup = sort
481481
self.fillSortFields = True
482482
if cache:
483-
self.setCachingInMB(float('inf'), True)
483+
self.setCachingInMB(float("inf"), True)
484484
for name in attrs:
485485
getattr(type(self), name).__set__(self, attrs[name])
486486

lupyne/engine/indexers.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def __init__(self, reader):
8888
self.indexReader = reader
8989

9090
def __getattr__(self, name):
91-
if name == 'indexReader':
91+
if name == "indexReader":
9292
raise AttributeError(name)
9393
return getattr(index.DirectoryReader.cast_(self.indexReader), name)
9494

@@ -111,7 +111,7 @@ def bits(self) -> util.Bits:
111111
@property
112112
def directory(self) -> store.Directory:
113113
"""reader's lucene Directory"""
114-
return self.__getattr__('directory')()
114+
return self.__getattr__("directory")()
115115

116116
@property
117117
def path(self) -> str:
@@ -188,8 +188,8 @@ def docvalues(self, name: str, type=None) -> DocValues.Sorted:
188188
"""
189189
types = {int: int, float: util.NumericUtils.sortableLongToDouble}
190190
type = types.get(type, util.BytesRef.utf8ToString)
191-
docValuesType = str(self.fieldinfos[name].docValuesType).title().replace('_', '')
192-
method = getattr(index.MultiDocValues, f'get{docValuesType}Values')
191+
docValuesType = str(self.fieldinfos[name].docValuesType).title().replace("_", "")
192+
method = getattr(index.MultiDocValues, f"get{docValuesType}Values")
193193
return getattr(DocValues, docValuesType)(method(self.indexReader, name), len(self), type)
194194

195195
def copy(
@@ -217,7 +217,7 @@ def copy(
217217
writer.forceMerge(merge)
218218
return len(writer)
219219

220-
def terms(self, name: str, value='', stop='', counts=False, distance=0, prefix=0) -> Iterator:
220+
def terms(self, name: str, value="", stop="", counts=False, distance=0, prefix=0) -> Iterator:
221221
"""Generate a slice of term values, optionally with frequency counts.
222222
223223
Args:
@@ -237,9 +237,9 @@ def terms(self, name: str, value='', stop='', counts=False, distance=0, prefix=0
237237
else:
238238
termsenum.seekCeil(util.BytesRef(value))
239239
terms = itertools.chain([termsenum.term()], util.BytesRefIterator.cast_(termsenum))
240-
terms = map(operator.methodcaller('utf8ToString'), terms)
240+
terms = map(operator.methodcaller("utf8ToString"), terms)
241241
predicate = (
242-
partial(operator.gt, stop) if stop else operator.methodcaller('startswith', value)
242+
partial(operator.gt, stop) if stop else operator.methodcaller("startswith", value)
243243
)
244244
if not distance:
245245
terms = itertools.takewhile(predicate, terms)
@@ -277,7 +277,7 @@ def positions(self, name: str, value, payloads=False, offsets=False) -> Iterator
277277
def vector(self, id, field):
278278
terms = self.termVectors().get(id, field)
279279
termsenum = terms.iterator() if terms else index.TermsEnum.EMPTY
280-
terms = map(operator.methodcaller('utf8ToString'), util.BytesRefIterator.cast_(termsenum))
280+
terms = map(operator.methodcaller("utf8ToString"), util.BytesRefIterator.cast_(termsenum))
281281
return termsenum, terms
282282

283283
def termvector(self, id: int, field: str, counts=False) -> Iterator:
@@ -379,7 +379,7 @@ def parse(self, query, spellcheck=False, **kwargs) -> search.Query:
379379
if isinstance(query, search.Query):
380380
return query
381381
if spellcheck:
382-
kwargs['parser'], kwargs['searcher'] = SpellParser, self
382+
kwargs["parser"], kwargs["searcher"] = SpellParser, self
383383
return Analyzer.parse(self.analyzer, query, **kwargs)
384384

385385
@property
@@ -400,7 +400,7 @@ def count(self, *query, **options) -> int:
400400

401401
def collector(self, count=None, sort=None, reverse=False, scores=False, mincount=1000):
402402
if count is None:
403-
return search.CachingCollector.create(True, float('inf'))
403+
return search.CachingCollector.create(True, float("inf"))
404404
count = min(count, self.maxDoc() or 1)
405405
mincount = max(count, mincount)
406406
if sort is None:
@@ -523,11 +523,11 @@ class IndexWriter(index.IndexWriter):
523523

524524
parse = IndexSearcher.parse
525525

526-
def __init__(self, directory, mode: str = 'a', analyzer=None, version=None, **attrs):
526+
def __init__(self, directory, mode: str = "a", analyzer=None, version=None, **attrs):
527527
self.shared = closing()
528528
args = [] if analyzer is None else [self.shared.analyzer(analyzer)]
529529
config = index.IndexWriterConfig(*args)
530-
config.openMode = index.IndexWriterConfig.OpenMode.values()['wra'.index(mode)]
530+
config.openMode = index.IndexWriterConfig.OpenMode.values()["wra".index(mode)]
531531
for name, value in attrs.items():
532532
setattr(config, name, value)
533533
self.policy = index.SnapshotDeletionPolicy(config.indexDeletionPolicy)
@@ -578,7 +578,7 @@ def add(self, document=(), **terms):
578578
"""Add [document][lupyne.engine.indexers.IndexWriter.document] to index with optional boost."""
579579
self.addDocument(self.document(document, **terms))
580580

581-
def update(self, name: str, value='', document=(), **terms):
581+
def update(self, name: str, value="", document=(), **terms):
582582
"""Atomically delete documents which match given term
583583
and add the new [document][lupyne.engine.indexers.IndexWriter.document]."""
584584
doc = self.document(document, **terms)
@@ -605,7 +605,7 @@ def delete(self, *query, **options):
605605

606606
def __iadd__(self, directory):
607607
"""Add directory (or reader, searcher, writer) to index."""
608-
with closing.store(getattr(directory, 'directory', directory)) as directory:
608+
with closing.store(getattr(directory, "directory", directory)) as directory:
609609
self.addIndexes([directory])
610610
return self
611611

@@ -639,14 +639,14 @@ class Indexer(IndexWriter):
639639
nrt: optionally use a near real-time searcher
640640
"""
641641

642-
def __init__(self, directory, mode='a', analyzer=None, version=None, nrt=False, **attrs):
642+
def __init__(self, directory, mode="a", analyzer=None, version=None, nrt=False, **attrs):
643643
super().__init__(directory, mode, analyzer, version, **attrs)
644644
super().commit()
645645
self.nrt = nrt
646646
self.indexSearcher = IndexSearcher(self if nrt else self.directory, self.analyzer)
647647

648648
def __getattr__(self, name):
649-
if name == 'indexSearcher':
649+
if name == "indexSearcher":
650650
raise AttributeError(name)
651651
return getattr(self.indexSearcher, name)
652652

lupyne/engine/queries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ class SpanQuery(Query):
215215

216216
def __getitem__(self, slc: slice) -> SpanQuery:
217217
start, stop, step = slc.indices(Integer.MAX_VALUE)
218-
assert step == 1, 'slice step is not supported'
218+
assert step == 1, "slice step is not supported"
219219
return SpanQuery(spans.SpanPositionRangeQuery, self, start, stop)
220220

221221
def __sub__(self, other: spans.SpanQuery) -> SpanQuery:

lupyne/services/base.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
from .settings import SCHEMA
1010

1111
type_map = {
12-
'Int': int,
13-
'Float': float,
14-
'String': str,
12+
"Int": int,
13+
"Float": float,
14+
"String": str,
1515
}
1616
schema = {}
1717
if SCHEMA: # pragma: no branch
@@ -30,15 +30,15 @@ def convert(node):
3030

3131
def multi_valued(annotations):
3232
"""Return set of multi-valued fields."""
33-
return {name for name, tp in annotations.items() if getattr(tp, '__origin__', tp) is list}
33+
return {name for name, tp in annotations.items() if getattr(tp, "__origin__", tp) is list}
3434

3535

3636
@strawberry.type
3737
class Document:
3838
"""stored fields"""
3939

4040
__annotations__ = {
41-
field.name.value: convert(field.type) | None for field in schema.get('Document', [])
41+
field.name.value: convert(field.type) | None for field in schema.get("Document", [])
4242
}
4343
locals().update(dict.fromkeys(__annotations__))
4444
locals().update(dict.fromkeys(multi_valued(__annotations__), ()))
@@ -48,7 +48,7 @@ def __init__(self, **doc):
4848
setattr(self, name, values[0] if getattr(type(self), name, ()) is None else values)
4949

5050

51-
sort_types = {field.name.value: convert(field.type) for field in schema.get('FieldDoc', [])}
51+
sort_types = {field.name.value: convert(field.type) for field in schema.get("FieldDoc", [])}
5252

5353

5454
@strawberry.type
@@ -110,5 +110,5 @@ def indexed(self) -> list:
110110

111111
def sortfields(self, sort: list) -> dict:
112112
"""Return mapping of fields to lucene SortFields."""
113-
sort = {name.lstrip('-'): name.startswith('-') for name in sort}
113+
sort = {name.lstrip("-"): name.startswith("-") for name in sort}
114114
return {name: self.searcher.sortfield(name, sort_types[name], sort[name]) for name in sort}

lupyne/services/graphql.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def terms(self, info: Info) -> IndexedFields:
112112
"""indexed field names"""
113113
fields = {}
114114
for name, selected in selections(*info.selected_fields).items():
115-
if 'counts' in selected:
115+
if "counts" in selected:
116116
terms = dict(root.searcher.terms(name, counts=True))
117117
fields[name] = Terms(values=terms, counts=terms.values())
118118
else:
@@ -127,16 +127,16 @@ def terms(self, info: Info) -> IndexedFields:
127127
def search(self, info: Info, q: str, count: int | None = None, sort: list[str] = []) -> Hits:
128128
"""Run query and return hits."""
129129
selected = selections(*info.selected_fields)
130-
if 'hits' not in selected or count == 0:
130+
if "hits" not in selected or count == 0:
131131
return Hits(count=root.searcher.count(q), hits=[])
132132
sortfields = root.sortfields(sort)
133133
hits = root.searcher.search(
134134
q,
135135
count,
136136
sort=list(sortfields.values()) or None,
137-
scores='score' in selected['hits'],
137+
scores="score" in selected["hits"],
138138
)
139-
hits.select(*selected['hits'].get('doc', []))
139+
hits.select(*selected["hits"].get("doc", []))
140140
result = Hits(count=hits.count, hits=[])
141141
for hit in hits:
142142
sortkeys = dict(zip(sortfields, hit.sortkeys))
@@ -154,4 +154,4 @@ def index(self) -> Index:
154154

155155

156156
schema = strawberry.Schema(query=Query, mutation=Mutation)
157-
app.add_route('/graphql', strawberry.asgi.GraphQL(schema))
157+
app.add_route("/graphql", strawberry.asgi.GraphQL(schema))

0 commit comments

Comments
 (0)