Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove defaults from optional fields #198

Merged
merged 3 commits into from
Jun 21, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning][semver].

### Changed

- Remove defaults from all optional fields on protocol-defined types
- Explicitly defaulting to None was redundant; defaulting them to other values
made them not optional after all

### Fixed

## [0.11.0] - 06/18/2021
Expand Down
98 changes: 45 additions & 53 deletions pygls/lsp/types/basic_structures.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,6 @@ class Config:
'from_': 'from'
}

def __init__(self, **data: Any) -> None:
super().__init__(**data)

# Serialize (.json()) fields that has default value which is not None
for name, field in self.__fields__.items():
if getattr(field, 'default', None) is not None:
self.__fields_set__.add(name)


class JsonRpcMessage(Model):
"""A base json rpc message defined by LSP."""
Expand Down Expand Up @@ -238,7 +230,7 @@ class SetTraceParams(Model):

class RegularExpressionsClientCapabilities(Model):
engine: str
version: Optional[str] = None
version: Optional[str]


class ResolveSupportClientCapabilities(Model):
Expand All @@ -249,7 +241,7 @@ class LocationLink(Model):
target_uri: str
target_range: Range
target_selection_range: Range
origin_selection_range: Optional[Range] = None
origin_selection_range: Optional[Range]


class DiagnosticSeverity(enum.IntEnum):
Expand All @@ -276,19 +268,19 @@ class CodeDescription(Model):
class Diagnostic(Model):
range: Range
message: str
severity: Optional[DiagnosticSeverity] = None
code: Optional[Union[int, str]] = None
code_description: Optional[CodeDescription] = None
source: Optional[str] = None
related_information: Optional[List[DiagnosticRelatedInformation]] = None
tags: Optional[List[DiagnosticTag]] = None
data: Optional[Any] = None
severity: Optional[DiagnosticSeverity]
code: Optional[Union[int, str]]
code_description: Optional[CodeDescription]
source: Optional[str]
related_information: Optional[List[DiagnosticRelatedInformation]]
tags: Optional[List[DiagnosticTag]]
data: Optional[Any]


class Command(Model):
title: str
command: str
arguments: Optional[List[Any]] = None
arguments: Optional[List[Any]]


class TextEdit(Model):
Expand All @@ -302,8 +294,8 @@ class AnnotatedTextEdit(TextEdit):

class ChangeAnnotation(Model):
label: str
needs_confirmation: Optional[bool] = False
description: Optional[str] = None
needs_confirmation: Optional[bool]
description: Optional[str]


class ResourceOperationKind(str, enum.Enum):
Expand All @@ -313,40 +305,40 @@ class ResourceOperationKind(str, enum.Enum):


class CreateFileOptions(Model):
overwrite: Optional[bool] = False
ignore_if_exists: Optional[bool] = False
overwrite: Optional[bool]
ignore_if_exists: Optional[bool]


class CreateFile(Model):
kind: ResourceOperationKind = ResourceOperationKind.Create
uri: str
options: Optional[CreateFileOptions] = None
annotation_id: Optional[ChangeAnnotationIdentifier] = None
options: Optional[CreateFileOptions]
annotation_id: Optional[ChangeAnnotationIdentifier]


class RenameFileOptions(Model):
overwrite: Optional[bool] = False
ignore_if_exists: Optional[bool] = False
overwrite: Optional[bool]
ignore_if_exists: Optional[bool]


class RenameFile(Model):
kind: ResourceOperationKind = ResourceOperationKind.Rename
old_uri: str
new_uri: str
options: Optional[RenameFileOptions] = None
annotation_id: Optional[ChangeAnnotationIdentifier] = None
options: Optional[RenameFileOptions]
annotation_id: Optional[ChangeAnnotationIdentifier]


class DeleteFileOptions(Model):
recursive: Optional[bool] = False
ignore_if_exists: Optional[bool] = False
recursive: Optional[bool]
ignore_if_exists: Optional[bool]


class DeleteFile(Model):
kind: ResourceOperationKind = ResourceOperationKind.Delete
uri: str
options: Optional[DeleteFileOptions] = None
annotation_id: Optional[ChangeAnnotationIdentifier] = None
options: Optional[DeleteFileOptions]
annotation_id: Optional[ChangeAnnotationIdentifier]


class FailureHandlingKind(str, enum.Enum):
Expand All @@ -357,15 +349,15 @@ class FailureHandlingKind(str, enum.Enum):


class ChangeAnnotationSupport(Model):
groups_on_label: Optional[bool] = False
groups_on_label: Optional[bool]


class WorkspaceEditClientCapabilities(Model):
document_changes: Optional[bool] = False
resource_operations: Optional[List[ResourceOperationKind]] = None
failure_handling: Optional[FailureHandlingKind] = None
normalizes_line_endings: Optional[bool] = False
change_annotation_support: Optional[ChangeAnnotationSupport] = None
document_changes: Optional[bool]
resource_operations: Optional[List[ResourceOperationKind]]
failure_handling: Optional[FailureHandlingKind]
normalizes_line_endings: Optional[bool]
change_annotation_support: Optional[ChangeAnnotationSupport]


class TextDocumentIdentifier(Model):
Expand Down Expand Up @@ -398,20 +390,20 @@ class TextDocumentPositionParams(Model):


class DocumentFilter(Model):
language: Optional[str] = None
scheme: Optional[str] = None
pattern: Optional[str] = None
language: Optional[str]
scheme: Optional[str]
pattern: Optional[str]


DocumentSelector = List[DocumentFilter]


class StaticRegistrationOptions(Model):
id: Optional[str] = None
id: Optional[str]


class TextDocumentRegistrationOptions(Model):
document_selector: Optional[DocumentSelector] = None
document_selector: Optional[DocumentSelector]


class MarkupKind(str, enum.Enum):
Expand All @@ -425,9 +417,9 @@ class MarkupContent(Model):


class WorkspaceEdit(Model):
changes: Optional[Dict[str, List[TextEdit]]] = None
document_changes: Optional[Any] = None
change_annotations: Optional[Dict[ChangeAnnotationIdentifier, ChangeAnnotation]] = None
changes: Optional[Dict[str, List[TextEdit]]]
document_changes: Optional[Any]
change_annotations: Optional[Dict[ChangeAnnotationIdentifier, ChangeAnnotation]]

@root_validator
def check_result_or_error(cls, values):
Expand All @@ -450,21 +442,21 @@ def check_result_or_error(cls, values):
class WorkDoneProgressBegin(Model):
kind: str = 'begin'
title: str
cancellable: Optional[bool] = False
message: Optional[str] = None
percentage: Optional[NumType] = None
cancellable: Optional[bool]
message: Optional[str]
percentage: Optional[NumType]


class WorkDoneProgressReport(Model):
kind: str = 'report'
cancellable: Optional[bool] = False
message: Optional[str] = None
percentage: Optional[NumType] = None
cancellable: Optional[bool]
message: Optional[str]
percentage: Optional[NumType]


class WorkDoneProgressEnd(Model):
kind: str = 'end'
message: Optional[str] = None
message: Optional[str]


class WorkDoneProgressParams(Model):
Expand Down
2 changes: 1 addition & 1 deletion pygls/lsp/types/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
class Registration(Model):
id: str
method: str
register_options: Optional[Any] = None
register_options: Optional[Any]


class RegistrationParams(Model):
Expand Down
14 changes: 7 additions & 7 deletions pygls/lsp/types/diagnostics.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@


class PublishDiagnosticsTagSupportClientCapabilities(Model):
value_set: Optional[List[DiagnosticTag]] = None
value_set: Optional[List[DiagnosticTag]]


class PublishDiagnosticsClientCapabilities(Model):
related_information: Optional[bool] = False
tag_support: Optional[PublishDiagnosticsTagSupportClientCapabilities] = None
version_support: Optional[bool] = False
code_description_support: Optional[bool] = False
data_support: Optional[bool] = False
related_information: Optional[bool]
tag_support: Optional[PublishDiagnosticsTagSupportClientCapabilities]
version_support: Optional[bool]
code_description_support: Optional[bool]
data_support: Optional[bool]


class PublishDiagnosticsParams(Model):
uri: str
diagnostics: List[Diagnostic]
version: Optional[NumType] = None
version: Optional[NumType]
8 changes: 4 additions & 4 deletions pygls/lsp/types/file_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@ class FileOperationPatternKind(str, enum.Enum):


class FileOperationPatternOptions(Model):
ignore_case: Optional[bool] = False
ignore_case: Optional[bool]


class FileOperationPattern(Model):
glob: str
matches: Optional[FileOperationPatternKind] = None
options: Optional[FileOperationPatternOptions] = None
matches: Optional[FileOperationPatternKind]
options: Optional[FileOperationPatternOptions]


class FileOperationFilter(Model):
scheme: Optional[str] = None
scheme: Optional[str]
pattern: FileOperationPattern


Expand Down
Loading