Skip to content

Commit

Permalink
Upgrade mypy (#1357)
Browse files Browse the repository at this point in the history
* remove httpx version pin

* upgrade mypy

* moar

* boom
  • Loading branch information
vangheem authored Sep 19, 2023
1 parent 8af4068 commit 79d910f
Show file tree
Hide file tree
Showing 25 changed files with 133 additions and 120 deletions.
10 changes: 10 additions & 0 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,13 @@ ignore_missing_imports = True

[mypy-starlette_prometheus.*]
ignore_missing_imports = True

[mypy-pluggy.*]
ignore_missing_imports = True

# nucliadb_sdk deprecated things
[mypy-nucliadb_sdk.resource.*]
disable_error_code = arg-type, call-arg

[mypy-nucliadb_client.tests.*]
disable_error_code = call-arg
8 changes: 4 additions & 4 deletions nucliadb/nucliadb/common/cluster/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class Settings(BaseSettings):
data_path: str = "./data/node"
standalone_mode: bool = False
standalone_node_port: int = Field(
10009,
default=10009,
title="Standalone node port",
description="Port to use for standalone nodes to communication with each other through",
)
Expand All @@ -50,18 +50,18 @@ class Settings(BaseSettings):

# Node limits
max_shard_paragraphs: int = Field(
1_000_000,
default=1_000_000,
title="Max shard paragraphs",
description="Maximum number of paragraphs to target per shard",
)
max_shard_fields: int = Field(
500_000,
default=500_000,
title="Max shard fields",
description="Maximum number of fields to target per shard. "
"If this is reached before max_shard_paragraphs, we will create a new shard",
)
max_node_replicas: int = Field(
650,
default=650,
title="Max node replicas",
description="Maximum number of shard replicas a single node will manage",
)
Expand Down
12 changes: 7 additions & 5 deletions nucliadb/nucliadb/ingest/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,20 +41,22 @@ def _missing_(cls, value):


class DriverSettings(BaseSettings):
driver: DriverConfig = Field(DriverConfig.NOT_SET, description="K/V storage driver")
driver: DriverConfig = Field(
default=DriverConfig.NOT_SET, description="K/V storage driver"
)
driver_redis_url: Optional[str] = Field(
None, description="Redis URL. Example: redis://localhost:6379"
default=None, description="Redis URL. Example: redis://localhost:6379"
)
driver_tikv_url: Optional[List[str]] = Field(
None,
default=None,
description="TiKV PD (Placement Dricer) URL. The URL to the cluster manager of TiKV. Example: tikv-pd.svc:2379",
)
driver_local_url: Optional[str] = Field(
None,
default=None,
description="Local path to store data on file system. Example: /nucliadb/data/main",
)
driver_pg_url: Optional[str] = Field(
None,
default=None,
description="PostgreSQL DSN. The connection string to the PG server. Example: postgres://nucliadb:nucliadb@postgres:5432/nucliadb. See the complete PostgreSQL documentation: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING", # noqa
)

Expand Down
2 changes: 1 addition & 1 deletion nucliadb/nucliadb/reader/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class ResourceField(BaseModel):
field_id: str
value: ValueType
extracted: ExtractedDataType
error: Optional[Error]
error: Optional[Error] = None


FIELD_NAMES_TO_PB_TYPE_MAP = {v: k for k, v in FIELD_TYPES_MAP.items()}
Expand Down
6 changes: 3 additions & 3 deletions nucliadb/nucliadb/reader/api/v1/knowledgebox.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ async def get_kbs(request: Request, prefix: str = "") -> KnowledgeBoxList:
async with driver.transaction() as txn:
response = KnowledgeBoxList()
async for kbid, slug in KnowledgeBox.get_kbs(txn, prefix):
response.kbs.append(KnowledgeBoxObjSummary(slug=slug or None, uuid=kbid))
response.kbs.append(KnowledgeBoxObjSummary(slug=slug or None, uuid=kbid)) # type: ignore
return response


Expand All @@ -71,7 +71,7 @@ async def get_kb(request: Request, kbid: str) -> KnowledgeBoxObj:

return KnowledgeBoxObj(
uuid=kbid,
slug=kb_config.slug,
slug=kb_config.slug, # type: ignore
config=KnowledgeBoxConfig.from_message(kb_config),
)

Expand All @@ -98,6 +98,6 @@ async def get_kb_by_slug(request: Request, slug: str) -> KnowledgeBoxObj:

return KnowledgeBoxObj(
uuid=kbid,
slug=kb_config.slug,
slug=kb_config.slug, # type: ignore
config=KnowledgeBoxConfig.from_message(kb_config),
)
2 changes: 1 addition & 1 deletion nucliadb/nucliadb/reader/api/v1/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ async def get_resource_field(
await txn.abort()
raise HTTPException(status_code=404, detail="Knowledge Box does not exist")

resource_field = ResourceField(field_id=field_id, field_type=field_type)
resource_field = ResourceField(field_id=field_id, field_type=field_type) # type: ignore

if ResourceFieldProperties.VALUE in show:
value = await field.get_value()
Expand Down
2 changes: 1 addition & 1 deletion nucliadb/nucliadb/search/search/merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ async def merge_relations_results(
relations_responses: List[RelationSearchResponse],
query: EntitiesSubgraphRequest,
) -> Relations:
relations = Relations(entities={}, graph=[])
relations = Relations(entities={})

for entry_point in query.entry_points:
relations.entities[entry_point.value] = EntitySubgraph(related_to=[])
Expand Down
2 changes: 1 addition & 1 deletion nucliadb/nucliadb/tests/integration/test_labels.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ async def test_fieldmetadata_classification_labels(
)
payload = CreateResourcePayload(
title="Foo",
texts={"text": TextField(body="my text")},
texts={"text": TextField(body="my text")}, # type: ignore
fieldmetadata=[fieldmetadata],
)
resp = await nucliadb_writer.post(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ async def test_status(self, client: processing.ProcessingHTTPClient, response):

@pytest.mark.asyncio
async def test_pull(self, client: processing.ProcessingHTTPClient, response):
response_data = processing.PullResponse(status="ok", data="foobar", msgid=1)
response_data = processing.PullResponse(status="ok", payload="foobar", msgid=1)
response.status = 200
response.text.return_value = response_data.json()

Expand Down
8 changes: 4 additions & 4 deletions nucliadb/nucliadb/writer/resource/field.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,9 +316,9 @@ def parse_link_field(

toprocess.linkfield[key] = models.LinkUpload(
link=link_field.uri,
headers=link_field.headers,
cookies=link_field.cookies,
localstorage=link_field.localstorage,
headers=link_field.headers or {},
cookies=link_field.cookies or {},
localstorage=link_field.localstorage or {},
)


Expand Down Expand Up @@ -390,7 +390,7 @@ async def parse_layout_field(
)

toprocess.layoutfield[key] = models.LayoutDiff(
format=lc.format, blocks=toprocess_blocks
format=lc.format, blocks=toprocess_blocks # type: ignore
)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def storage_mock():
[
FileField(password="mypassword", file=File(filename="myfile.pdf", payload="")),
FileField(
password="mypassword", file=File(uri="http://external.foo/myfile.pdf")
password="mypassword", file=File(uri="http://external.foo/myfile.pdf") # type: ignore
),
],
)
Expand Down
2 changes: 1 addition & 1 deletion nucliadb/requirements-test.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
httpx==0.23.0
httpx>=0.23.0
pytest-docker-fixtures>=1.3.17
docker>=6.0.0,<7.0.0
pytest-asyncio
Expand Down
4 changes: 2 additions & 2 deletions nucliadb_models/nucliadb_models/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ class File(BaseModel):
filename: Optional[str]
content_type: str = "application/octet-stream"
payload: Optional[str] = Field(description="Base64 encoded file content")
md5: Optional[str]
md5: Optional[str] = None
# These are to be used for external files
uri: Optional[str]
uri: Optional[str] = None
extra_headers: Dict[str, str] = {}

@root_validator(pre=False)
Expand Down
4 changes: 2 additions & 2 deletions nucliadb_models/nucliadb_models/extracted.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@

class ExtractedText(BaseModel):
text: Optional[str]
split_text: Optional[Dict[str, str]]
deleted_splits: Optional[List[str]]
split_text: Optional[Dict[str, str]] = None
deleted_splits: Optional[List[str]] = None

@classmethod
def from_message(cls: Type[_T], message: resources_pb2.ExtractedText) -> _T:
Expand Down
2 changes: 1 addition & 1 deletion nucliadb_models/nucliadb_models/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ def from_message(cls: Type[_T], message: resources_pb2.ComputedMetadata) -> _T:
FieldClassification(
field=FieldID(
field=fc.field.field,
field_type=FIELD_TYPES_MAP[fc.field.field_type],
field_type=FIELD_TYPES_MAP[fc.field.field_type], # type: ignore
),
classifications=[
Classification(label=c.label, labelset=c.labelset)
Expand Down
122 changes: 61 additions & 61 deletions nucliadb_models/nucliadb_models/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ class KnowledgeBoxConfig(BaseModel):
enabled_filters: List[str] = []
enabled_insights: List[str] = []
disable_vectors: bool = False
similarity: Optional[VectorSimilarity]
similarity: Optional[VectorSimilarity] = None

@validator("slug")
def id_check(cls, v: str) -> str:
Expand Down Expand Up @@ -140,23 +140,23 @@ class KnowledgeBoxList(BaseModel):


class ExtractedData(BaseModel):
text: Optional[ExtractedText]
metadata: Optional[FieldComputedMetadata]
large_metadata: Optional[LargeComputedMetadata]
vectors: Optional[VectorObject]
uservectors: Optional[UserVectorSet]
text: Optional[ExtractedText] = None
metadata: Optional[FieldComputedMetadata] = None
large_metadata: Optional[LargeComputedMetadata] = None
vectors: Optional[VectorObject] = None
uservectors: Optional[UserVectorSet] = None


class TextFieldExtractedData(ExtractedData):
pass


class FileFieldExtractedData(ExtractedData):
file: Optional[FileExtractedData]
file: Optional[FileExtractedData] = None


class LinkFieldExtractedData(ExtractedData):
link: Optional[LinkExtractedData]
link: Optional[LinkExtractedData] = None


class LayoutFieldExtractedData(ExtractedData):
Expand Down Expand Up @@ -198,62 +198,62 @@ class FieldData(BaseModel):


class TextFieldData(BaseModel):
value: Optional[FieldText]
extracted: Optional[TextFieldExtractedData]
error: Optional[Error]
value: Optional[FieldText] = None
extracted: Optional[TextFieldExtractedData] = None
error: Optional[Error] = None


class FileFieldData(BaseModel):
value: Optional[FieldFile]
extracted: Optional[FileFieldExtractedData]
error: Optional[Error]
value: Optional[FieldFile] = None
extracted: Optional[FileFieldExtractedData] = None
error: Optional[Error] = None


class LinkFieldData(BaseModel):
value: Optional[FieldLink]
extracted: Optional[LinkFieldExtractedData]
error: Optional[Error]
value: Optional[FieldLink] = None
extracted: Optional[LinkFieldExtractedData] = None
error: Optional[Error] = None


class LayoutFieldData(BaseModel):
value: Optional[FieldLayout]
extracted: Optional[LayoutFieldExtractedData]
error: Optional[Error]
value: Optional[FieldLayout] = None
extracted: Optional[LayoutFieldExtractedData] = None
error: Optional[Error] = None


class ConversationFieldData(BaseModel):
value: Optional[FieldConversation]
extracted: Optional[ConversationFieldExtractedData]
error: Optional[Error]
value: Optional[FieldConversation] = None
extracted: Optional[ConversationFieldExtractedData] = None
error: Optional[Error] = None


class KeywordsetFieldData(BaseModel):
value: Optional[FieldKeywordset]
extracted: Optional[KeywordsetFieldExtractedData]
error: Optional[Error]
value: Optional[FieldKeywordset] = None
extracted: Optional[KeywordsetFieldExtractedData] = None
error: Optional[Error] = None


class DatetimeFieldData(BaseModel):
value: Optional[FieldDatetime]
extracted: Optional[DatetimeFieldExtractedData]
error: Optional[Error]
value: Optional[FieldDatetime] = None
extracted: Optional[DatetimeFieldExtractedData] = None
error: Optional[Error] = None


class GenericFieldData(BaseModel):
value: Optional[str]
extracted: Optional[TextFieldExtractedData]
error: Optional[Error]
value: Optional[str] = None
extracted: Optional[TextFieldExtractedData] = None
error: Optional[Error] = None


class ResourceData(BaseModel):
texts: Optional[Dict[str, TextFieldData]]
files: Optional[Dict[str, FileFieldData]]
links: Optional[Dict[str, LinkFieldData]]
layouts: Optional[Dict[str, LayoutFieldData]]
conversations: Optional[Dict[str, ConversationFieldData]]
keywordsets: Optional[Dict[str, KeywordsetFieldData]]
datetimes: Optional[Dict[str, DatetimeFieldData]]
generics: Optional[Dict[str, GenericFieldData]]
texts: Optional[Dict[str, TextFieldData]] = None
files: Optional[Dict[str, FileFieldData]] = None
links: Optional[Dict[str, LinkFieldData]] = None
layouts: Optional[Dict[str, LayoutFieldData]] = None
conversations: Optional[Dict[str, ConversationFieldData]] = None
keywordsets: Optional[Dict[str, KeywordsetFieldData]] = None
datetimes: Optional[Dict[str, DatetimeFieldData]] = None
generics: Optional[Dict[str, GenericFieldData]] = None


class QueueType(str, Enum): # type: ignore
Expand All @@ -265,27 +265,27 @@ class Resource(BaseModel):
id: str

# This first block of attributes correspond to Basic fields
slug: Optional[str]
title: Optional[str]
summary: Optional[str]
icon: Optional[str]
layout: Optional[str]
thumbnail: Optional[str]
metadata: Optional[Metadata]
usermetadata: Optional[UserMetadata]
fieldmetadata: Optional[List[UserFieldMetadata]]
computedmetadata: Optional[ComputedMetadata]
created: Optional[datetime]
modified: Optional[datetime]
last_seqid: Optional[int]
last_account_seq: Optional[int]
queue: Optional[QueueType]

origin: Optional[Origin]
extra: Optional[Extra]
relations: Optional[List[Relation]]

data: Optional[ResourceData]
slug: Optional[str] = None
title: Optional[str] = None
summary: Optional[str] = None
icon: Optional[str] = None
layout: Optional[str] = None
thumbnail: Optional[str] = None
metadata: Optional[Metadata] = None
usermetadata: Optional[UserMetadata] = None
fieldmetadata: Optional[List[UserFieldMetadata]] = None
computedmetadata: Optional[ComputedMetadata] = None
created: Optional[datetime] = None
modified: Optional[datetime] = None
last_seqid: Optional[int] = None
last_account_seq: Optional[int] = None
queue: Optional[QueueType] = None

origin: Optional[Origin] = None
extra: Optional[Extra] = None
relations: Optional[List[Relation]] = None

data: Optional[ResourceData] = None


class ResourcePagination(BaseModel):
Expand Down
Loading

1 comment on commit 79d910f

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 79d910f Previous: 7884805 Ratio
nucliadb/search/tests/unit/search/test_fetch.py::test_highligh_error 7761.928519929352 iter/sec (stddev: 0.000002029923361157876) 8552.891948547704 iter/sec (stddev: 0.0000012103923535763295) 1.10

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.