Skip to content

Commit

Permalink
black
Browse files Browse the repository at this point in the history
Nfsaavedra committed Mar 22, 2024

Verified

This commit was signed with the committer’s verified signature.
dinigo Daniel Iñigo
1 parent f912efc commit b761710
Showing 31 changed files with 1,873 additions and 876 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -14,6 +14,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v3.5.2

- name: Run black
uses: psf/black@stable
with:
options: "--check --verbose"
version: "23.3.0"

- name: Install Python 3
uses: actions/setup-python@v4
with:
2 changes: 1 addition & 1 deletion puppetparser/__main__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from puppetparser.parser import parse

with open("test.pp", "r") as f:
print(parse(f.read()))
print(parse(f.read()))
321 changes: 269 additions & 52 deletions puppetparser/model.py

Large diffs are not rendered by default.

2,234 changes: 1,476 additions & 758 deletions puppetparser/parser.py

Large diffs are not rendered by default.

19 changes: 13 additions & 6 deletions stubs/ply/lex.pyi
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
import re
from typing import Any

def lex(module: Any =None, object: Any =None, debug: bool =False, optimize: bool =False, lextab: str='lextab',
reflags: int =int(re.VERBOSE), nowarn: bool =False, outputdir: str | None =None, debuglog: str | None =None, errorlog: str | None=None) -> Any:
...
def lex(
module: Any = None,
object: Any = None,
debug: bool = False,
optimize: bool = False,
lextab: str = "lextab",
reflags: int = int(re.VERBOSE),
nowarn: bool = False,
outputdir: str | None = None,
debuglog: str | None = None,
errorlog: str | None = None,
) -> Any: ...

class Lexer:
lineno: int

def begin(self, state: str) -> None:
...
def begin(self, state: str) -> None: ...

class LexToken:
value: str
lexer: Lexer
lexpos: int
type: str

40 changes: 20 additions & 20 deletions stubs/ply/yacc.pyi
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
from typing import Any

def yacc(method: str='LALR', debug: bool=True, module: Any=None, tabmodule: str='parsetab', start: Any=None,
check_recursion: bool=True, optimize: bool=False, write_tables: bool=True, debugfile: str='parser.out',
outputdir: str | None=None, debuglog: str | None=None, errorlog: str | None=None, picklefile: str | None=None) -> Any:
...
def yacc(
method: str = "LALR",
debug: bool = True,
module: Any = None,
tabmodule: str = "parsetab",
start: Any = None,
check_recursion: bool = True,
optimize: bool = False,
write_tables: bool = True,
debugfile: str = "parser.out",
outputdir: str | None = None,
debuglog: str | None = None,
errorlog: str | None = None,
picklefile: str | None = None,
) -> Any: ...

class YaccProduction:
def __getitem__(self, n: int) -> Any:
...

def __setitem__(self, n: int, v: Any) -> Any:
...

def lineno(self, n: int) -> int:
...

def lexpos(self, n: int) -> int:
...

def set_lineno(self, n: int, lineno: int) -> None:
...


def __getitem__(self, n: int) -> Any: ...
def __setitem__(self, n: int, v: Any) -> Any: ...
def lineno(self, n: int) -> int: ...
def lexpos(self, n: int) -> int: ...
def set_lineno(self, n: int, lineno: int) -> None: ...
3 changes: 2 additions & 1 deletion tests/test_access.py
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
from puppetparser.model import Operation, Resource
from tests.utility import assertArray


class TestClass(unittest.TestCase):
def test_access(self):
code = """
@@ -20,4 +21,4 @@ def test_access(self):
self.assertEqual(res[1].attributes[0].line, 4)
self.assertEqual(res[1].attributes[0].col, 17)
self.assertEqual(res[1].attributes[0].end_line, 4)
self.assertEqual(res[1].attributes[0].end_col, 34)
self.assertEqual(res[1].attributes[0].end_col, 34)
3 changes: 2 additions & 1 deletion tests/test_arithmetic_operators.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Operation, Resource


class TestClass(unittest.TestCase):
def test_arithmetic_operators(self):
code = """
@@ -20,4 +21,4 @@ def test_arithmetic_operators(self):
self.assertEqual(res[0].attributes[0].value.arguments[0].operator, "-")
self.assertEqual(res[0].attributes[0].value.arguments[1].operator, "*")
self.assertEqual(res[0].attributes[1].value.operator, "%")
self.assertEqual(res[0].attributes[2].value.operator, ">>")
self.assertEqual(res[0].attributes[2].value.operator, ">>")
3 changes: 2 additions & 1 deletion tests/test_array_operations.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Operation, Resource


class TestClass(unittest.TestCase):
def test_array_operators(self):
code = """
@@ -19,4 +20,4 @@ def test_array_operators(self):
self.assertEqual(res[1].attributes[0].value.operator, "*")
self.assertEqual(res[1].attributes[1].value.operator, "<<")
self.assertEqual(res[1].attributes[1].line, 5)
self.assertEqual(res[1].attributes[1].col, 17)
self.assertEqual(res[1].attributes[1].col, 17)
3 changes: 2 additions & 1 deletion tests/test_assignment.py
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
from puppetparser.model import Assignment, Node, Resource
from tests.utility import assertArray, assertHash


class TestClass(unittest.TestCase):
def test_assignment(self):
code = """
@@ -111,4 +112,4 @@ def test_assignment_type_alias(self):

res = parse(code)[0]
self.assertIsInstance(res[0], Assignment)
self.assertEqual(res[0].name, "type Unbound::Local_zone_type")
self.assertEqual(res[0].name, "type Unbound::Local_zone_type")
3 changes: 2 additions & 1 deletion tests/test_boolean_operators.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Operation, Resource


class TestClass(unittest.TestCase):
def test_boolean_operators(self):
code = """
@@ -23,4 +24,4 @@ def test_boolean_operators(self):
self.assertEqual(res[0].attributes[0].value.arguments[0].operator, "!")
self.assertEqual(res[0].attributes[0].value.arguments[1].value, True)
self.assertEqual(res[0].attributes[1].value.operator, "or")
self.assertEqual(res[0].attributes[0].value.arguments[1].line, 3)
self.assertEqual(res[0].attributes[0].value.arguments[1].line, 3)
5 changes: 3 additions & 2 deletions tests/test_chaining.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Chaining, Reference, Resource, ResourceCollector


class TestClass(unittest.TestCase):
def test_chaining_1(self):
code = "Package['ntp'] -> File['/etc/ntp.conf'] ~> Service['ntpd']"
@@ -47,9 +48,9 @@ def test_chaining_3(self):
code = """
Yumrepo <| |> -> Package <| |>
"""

res = parse(code)[0]
self.assertIsInstance(res[0], Chaining)
self.assertIsInstance(res[0].op1, ResourceCollector)
self.assertIsInstance(res[0].op2, ResourceCollector)
self.assertEqual(res[0].line, 2)
self.assertEqual(res[0].line, 2)
3 changes: 2 additions & 1 deletion tests/test_class.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import ClassAsResource, PuppetClass, Resource


class TestClass(unittest.TestCase):
def test_class(self):
code = """
@@ -67,4 +68,4 @@ class {
self.assertEqual(res[0][0].attributes[0].key.value, "version")
self.assertIsInstance(res[0][1], ClassAsResource)
self.assertEqual(res[0][1].title.value, "nginx")
self.assertEqual(res[0][1].attributes[0].key.value, "version")
self.assertEqual(res[0][1].attributes[0].key.value, "version")
3 changes: 2 additions & 1 deletion tests/test_comment.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import PuppetClass, Comment


class TestClass(unittest.TestCase):
def test_comment(self):
code = """
@@ -41,4 +42,4 @@ class webserver (String $content = "") inherits webserver2 {
self.assertEqual(comments[2].line, 10)
self.assertEqual(comments[2].end_line, 12)
self.assertEqual(comments[3].content, " Hi")
self.assertEqual(comments[3].line, 14)
self.assertEqual(comments[3].line, 14)
1 change: 1 addition & 0 deletions tests/test_comparion_operators.py
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
from puppetparser.model import Operation, Resource
from tests.utility import assertArray


class TestClass(unittest.TestCase):
def test_comparison_operators(self):
code = """
28 changes: 19 additions & 9 deletions tests/test_conditionals.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
import unittest

from puppetparser.parser import parse
from puppetparser.model import Assignment, Case, If, Include, Operation, Regex, Resource, Selector, Unless
from puppetparser.model import (
Assignment,
Case,
If,
Include,
Operation,
Regex,
Resource,
Selector,
Unless,
)
from tests.utility import assertHash


class TestClass(unittest.TestCase):
def test_if(self):
code = """
@@ -67,10 +78,10 @@ def test_case(self):
self.assertEqual(res[0].end_line, 6)
self.assertIsInstance(res[0].control, Operation)
self.assertEqual(len(res[0].matches), 3)
self.assertEqual(res[0].matches[0].expressions[0].value, 'RedHat')
self.assertEqual(res[0].matches[0].expressions[0].value, "RedHat")
self.assertIsInstance(res[0].matches[1].expressions[0], Regex)
self.assertIsInstance(res[0].matches[1].block[0], Include)
self.assertEqual(res[0].matches[2].expressions[0].value, 'default')
self.assertEqual(res[0].matches[2].expressions[0].value, "default")
self.assertEqual(res[0].matches[1].expressions[0].line, 4)

def test_selector(self):
@@ -88,9 +99,8 @@ def test_selector(self):
self.assertEqual(res[0].value.line, 2)
self.assertEqual(res[0].value.end_line, 6)
self.assertIsInstance(res[0].value.control, Operation)
assertHash(self, res[0].value.hash.value, {
'Redhat': 'wheel',
'Debian': 'wheel',
'default': 'root'
})

assertHash(
self,
res[0].value.hash.value,
{"Redhat": "wheel", "Debian": "wheel", "default": "root"},
)
3 changes: 2 additions & 1 deletion tests/test_contain.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Contain


class TestClass(unittest.TestCase):
def test_contain(self):
code = """
@@ -15,4 +16,4 @@ def test_contain(self):
self.assertIsInstance(res[1], Contain)
self.assertEqual(res[1].cont[0].value, "base::linux")
self.assertEqual(res[1].line, 3)
self.assertEqual(res[1].end_line, 3)
self.assertEqual(res[1].end_line, 3)
3 changes: 2 additions & 1 deletion tests/test_debug.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Debug, Fail


class TestClass(unittest.TestCase):
def test_debug(self):
code = """
@@ -25,4 +26,4 @@ def test_debug(self):
self.assertIsInstance(res[-1], Fail)
self.assertEqual(res[-1].args[0].value, "FAIL")
self.assertEqual(res[2].args[0].line, 4)
self.assertEqual(res[2].args[0].end_line, 4)
self.assertEqual(res[2].args[0].end_line, 4)
3 changes: 2 additions & 1 deletion tests/test_exported_resource.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Resource


class TestClass(unittest.TestCase):
def test_exported_resource(self):
code = """
@@ -18,4 +19,4 @@ def test_exported_resource(self):

res = parse(code)[0]
self.assertIsInstance(res[0], Resource)
self.assertEqual(res[0].type, "@@nagios_service")
self.assertEqual(res[0].type, "@@nagios_service")
3 changes: 2 additions & 1 deletion tests/test_functions.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Case, Function, FunctionCall, Parameter, Resource


class TestClass(unittest.TestCase):
def test_function_prefix(self):
code = """
@@ -85,4 +86,4 @@ def test_function_declaration(self):
self.assertIsInstance(res[0].parameters[0], Parameter)
self.assertEqual(res[0].parameters[0].name, "$arg")
self.assertEqual(res[0].return_type.value, "String")
self.assertIsInstance(res[0].body[0], Case)
self.assertIsInstance(res[0].body[0], Case)
3 changes: 2 additions & 1 deletion tests/test_include.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Include


class TestClass(unittest.TestCase):
def test_include(self):
code = """
@@ -12,4 +13,4 @@ def test_include(self):

res = parse(code)[0]
self.assertIsInstance(res[0], Include)
self.assertIsInstance(res[1], Include)
self.assertIsInstance(res[1], Include)
3 changes: 2 additions & 1 deletion tests/test_node.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Node, Resource


class TestClass(unittest.TestCase):
def test_node(self):
code = """
@@ -70,4 +71,4 @@ def test_node_default(self):
self.assertEqual(len(res[0].block), 2)
for e in res[0].block:
self.assertIsInstance(e, Resource)
self.assertEqual(res[0].block[1].line, 7)
self.assertEqual(res[0].block[1].line, 7)
15 changes: 12 additions & 3 deletions tests/test_references.py
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
from puppetparser.model import Operation, Reference, Resource
from tests.utility import assertArray


class TestClass(unittest.TestCase):
def test_access(self):
code = """
@@ -18,11 +19,19 @@ def test_access(self):
self.assertIsInstance(res[0].attributes[0].value, Operation)
self.assertIsInstance(res[0].attributes[0].value.arguments[0], Reference)
self.assertEqual(res[0].attributes[0].value.arguments[0].type, "File")
assertArray(self, res[0].attributes[0].value.arguments[0].references, ["/etc/first.conf"])
assertArray(
self,
res[0].attributes[0].value.arguments[0].references,
["/etc/first.conf"],
)
self.assertIsInstance(res[0].attributes[1].value, Operation)
self.assertIsInstance(res[0].attributes[1].value.arguments[0], Reference)
self.assertEqual(res[0].attributes[1].value.arguments[0].type, "File")
assertArray(self, res[0].attributes[1].value.arguments[0].references, ["/etc/first.conf", "test"])
assertArray(
self,
res[0].attributes[1].value.arguments[0].references,
["/etc/first.conf", "test"],
)
self.assertEqual(res[0].attributes[1].value.arguments[0].line, 4)
self.assertEqual(res[0].attributes[1].value.arguments[0].end_line, 4)
self.assertEqual(res[0].attributes[1].value.arguments[0].end_col, 58)
self.assertEqual(res[0].attributes[1].value.arguments[0].end_col, 58)
3 changes: 2 additions & 1 deletion tests/test_require.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Require


class TestClass(unittest.TestCase):
def test_require(self):
code = """
@@ -12,4 +13,4 @@ def test_require(self):

res = parse(code)[0]
self.assertIsInstance(res[0], Require)
self.assertIsInstance(res[1], Require)
self.assertIsInstance(res[1], Require)
14 changes: 11 additions & 3 deletions tests/test_resource.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import unittest

from puppetparser.parser import InvalidPuppetScript, parse
from puppetparser.model import Attribute, Reference, Regex, \
Resource, ResourceCollector, ResourceDeclaration, ResourceExpression
from puppetparser.model import (
Attribute,
Reference,
Regex,
Resource,
ResourceCollector,
ResourceDeclaration,
ResourceExpression,
)
from tests.utility import assertArray, assertHash


class TestResource(unittest.TestCase):
def test_resource(self):
code = """
@@ -261,4 +269,4 @@ def test_resource_expression2(self):
self.assertIsInstance(res[0], ResourceExpression)
self.assertEqual(len(res[0].resources), 8)
for r in res[0].resources:
self.assertIsInstance(r, Resource)
self.assertIsInstance(r, Resource)
3 changes: 2 additions & 1 deletion tests/test_resource_collector.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Operation, ResourceCollector


class TestClass(unittest.TestCase):
def test_resource_collector(self):
code = """
@@ -12,4 +13,4 @@ def test_resource_collector(self):
res = parse(code)[0]
self.assertIsInstance(res[0], ResourceCollector)
self.assertIsInstance(res[0].search, Operation)
self.assertEqual(res[0].search.operator, "==")
self.assertEqual(res[0].search.operator, "==")
3 changes: 2 additions & 1 deletion tests/test_sensitive.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import FunctionCall


class TestClass(unittest.TestCase):
def test_sensitive(self):
code = """
@@ -14,4 +15,4 @@ def test_sensitive(self):
self.assertIsInstance(res[0].value, FunctionCall)
self.assertIsInstance(res[1].value, FunctionCall)
self.assertEqual(res[0].line, 2)
self.assertEqual(res[0].end_col, 50)
self.assertEqual(res[0].end_col, 50)
3 changes: 2 additions & 1 deletion tests/test_tag.py
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
from puppetparser.model import Tag
from tests.utility import assertArray


class TestClass(unittest.TestCase):
def test_tag(self):
code = """
@@ -19,4 +20,4 @@ class role::public_web {

res, comments = parse(code)
self.assertIsInstance(res[0].block[0], Tag)
assertArray(self, res[0].block[0].tags, ['us_mirror1', 'us_mirror2'])
assertArray(self, res[0].block[0].tags, ["us_mirror1", "us_mirror2"])
5 changes: 3 additions & 2 deletions tests/test_value.py
Original file line number Diff line number Diff line change
@@ -3,13 +3,14 @@
from puppetparser.parser import parse
from puppetparser.model import Value


class TestClass(unittest.TestCase):
def test_value_string(self):
code = "'test'"

res, _ = parse(code)
self.assertIsInstance(res[0], Value)
self.assertEqual(res[0].value, 'test')
self.assertEqual(res[0].value, "test")
self.assertEqual(res[0].line, 1)
self.assertEqual(res[0].end_line, 1)
self.assertEqual(res[0].col, 0)
@@ -23,7 +24,7 @@ def test_value_string_multiline(self):

res, _ = parse(code)
self.assertIsInstance(res[0], Value)
self.assertEqual(res[0].value, 'test\ntest')
self.assertEqual(res[0].value, "test\ntest")
self.assertEqual(res[0].line, 2)
self.assertEqual(res[0].end_line, 3)
self.assertEqual(res[0].col, 13)
3 changes: 2 additions & 1 deletion tests/test_virtual_resource.py
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
from puppetparser.parser import parse
from puppetparser.model import Realize, Resource


class TestClass(unittest.TestCase):
def test_virtual_resource(self):
code = """
@@ -18,4 +19,4 @@ def test_virtual_resource(self):
res = parse(code)[0]
self.assertIsInstance(res[0], Resource)
self.assertEqual(res[0].type, "@user")
self.assertIsInstance(res[1], Realize)
self.assertIsInstance(res[1], Realize)
5 changes: 3 additions & 2 deletions tests/utility.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
def assertHash(test, hash_p, hash):
for k,v in hash_p.items():
for k, v in hash_p.items():
test.assertTrue(k.value in hash)
test.assertEqual(v.value, hash[k.value])
test.assertEqual(len(hash_p.keys()), len(hash.keys()))


def assertArray(test, array_p, array):
for i in range(len(array)):
test.assertEqual(array_p[i].value, array[i])

test.assertEqual(len(array), len(array_p))
test.assertEqual(len(array), len(array_p))

0 comments on commit b761710

Please sign in to comment.