Skip to content

Commit

Permalink
Merge pull request #5 from grahamc/nixepr-types
Browse files Browse the repository at this point in the history
Nixepr types
  • Loading branch information
adisbladis committed Mar 27, 2020
2 parents de84da9 + 5e5668c commit 845e5ab
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions nixops/nix_expr.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,43 @@
import functools
import re
import string
from typing import Optional
from typing import Optional, Any, List
from textwrap import dedent

__all__ = ["py2nix", "nix2py", "nixmerge", "expand_dict", "RawValue", "Function"]


class RawValue(object):
def __init__(self, value):
self.value = value
class RawValue:
def __init__(self, value: str) -> None:
self.value: str = value

def get_min_length(self):
def get_min_length(self) -> Optional[int]:
return len(self.value)

def is_inlineable(self):
def is_inlineable(self) -> bool:
return True

def indent(self, level=0, inline=False, maxwidth=80):
def indent(self, level: int = 0, inline: bool = False, maxwidth: int = 80) -> str:
return " " * level + self.value

def __repr__(self):
def __repr__(self) -> str:
return self.value

def __eq__(self, other):
def __eq__(self, other: Any) -> bool:
return isinstance(other, RawValue) and other.value == self.value


class MultiLineRawValue(RawValue):
def __init__(self, values):
self.values = values
def __init__(self, values: List[str]):
self.values: List[str] = values

def get_min_length(self):
def get_min_length(self) -> None:
return None

def is_inlineable(self):
def is_inlineable(self) -> bool:
return False

def indent(self, level=0, inline=False, maxwidth=80):
def indent(self, level: int = 0, inline: bool = False, maxwidth: int = 80):
return "\n".join([" " * level + value for value in self.values])


Expand Down Expand Up @@ -78,7 +78,7 @@ def __init__(self, prefix, children, suffix, inline_variant=None):
self.suffix = suffix
self.inline_variant = inline_variant

def get_min_length(self):
def get_min_length(self) -> Optional[int]:
"""
Return the minimum length of this container and all sub-containers.
"""
Expand All @@ -90,10 +90,10 @@ def get_min_length(self):
+ sum([child.get_min_length() for child in self.children])
)

def is_inlineable(self):
def is_inlineable(self) -> bool:
return all([child.is_inlineable() for child in self.children])

def indent(self, level=0, inline=False, maxwidth=80):
def indent(self, level=0, inline=False, maxwidth=80) -> str:
if not self.is_inlineable():
inline = False
elif level * 2 + self.get_min_length() < maxwidth:
Expand Down

0 comments on commit 845e5ab

Please sign in to comment.