From b0b07c94253d209ba69d05ce46b1eb93d4857d65 Mon Sep 17 00:00:00 2001 From: ftg Date: Tue, 9 Apr 2024 21:03:48 +0200 Subject: [PATCH] add tests directory --- docs/build/doctrees/api.doctree | Bin 45864 -> 45864 bytes docs/build/doctrees/environment.pickle | Bin 106035 -> 105505 bytes docs/build/doctrees/index.doctree | Bin 6337 -> 5912 bytes docs/build/html/_modules/pynodes.html | 26 ++++++++++++------ docs/build/html/_sources/index.rst.txt | 12 +++----- docs/build/html/api.html | 12 ++++---- docs/build/html/index.html | 12 +++----- docs/build/html/searchindex.js | 2 +- docs/source/index.rst | 12 +++----- pynodes.py | 24 +--------------- .../.test_nodes.py.swp | Bin 12288 -> 12288 bytes tests/test_nodes.py | 21 ++++++++++++++ tests/tests.py | 23 ++++------------ 13 files changed, 65 insertions(+), 79 deletions(-) rename docs/source/.index.rst.swp => tests/.test_nodes.py.swp (86%) create mode 100644 tests/test_nodes.py diff --git a/docs/build/doctrees/api.doctree b/docs/build/doctrees/api.doctree index fb5e2abda4477da14a0dc101f03a9fd79594cf2b..a194c7b30e71efb9e1aa36c8dac4db2513ab373c 100644 GIT binary patch delta 137 zcmZ4SjA_L)rVW3xC&!maO%BhI=g44>osuEeV*wJ_9G){zkTGcTw^|)AsWSO)3D@Sp zx}WSoZbO?6CseUc(B_7=dN!b-W3L5F&?0EFV{Zf(W5DDy(={h=kYZ=j4A^{Tx;H;i Sna^@_Bcqn+{C1PSNIuwt6<8pkuEEOwgievtw@r7h}QXGt)IEZ;)bV(k$3~X1X^& TP?^tiZJ09cqRl?b?{EVEWiB>J diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 854025cbfa057004f6ea2da055b1136698d0a2f9..d7258ec693e4b671515a603be6d29cb98c3024ca 100644 GIT binary patch literal 105505 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

o+-KJzQO0e&XJ!5qmw}6mM)}1QMiGy6v!;CiYgx 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 Q8(Z$?+0N0AS)n4gdfE delta 596 zcma)(%SyvQ6o!qZYP?hmS``sfrM3ktlsyCrHTp`vN9uz zTbH_#f=j`daN$B+6nq6i5NA>^3qc&1;aoocbNJ_c>OLFZ3!mN&-h?l^r0)7-cdsNf zw68Hlmz$~I8d<7B_T++XQB}8y!+e(BXBC!07;S=0LB_#P(Hoq12&KD9$1w$C+QS=H_?b5K0_hZy zqGU44jII47v)kX(|HU>J;iGbVR9REu_eI94?Hi=1x+Z0~t1uS{T>V;#U_e+iw8p%U zzL8}rhI!a;>XbODnbAzUu$kF$)KZB%sbYj%J<4yKLp`6+dH}IwKEN0iHpK8ASkac` zhNtuOrAQ(q9o8$+MyR^N0b@~6XJB~4D_+nr7DP4AAJ>yDb&Js55-E#6GX!75Sq*PB zyc`E$&Bc&t1uBzVWtFR3pn<1A0`JDGkc$U$Jw@B5mQBgJLyBeQKlDF$7$>|nCzbu% GnDzlkJjDJ0 diff --git a/docs/build/html/_modules/pynodes.html b/docs/build/html/_modules/pynodes.html index 7340df3..b962f86 100644 --- a/docs/build/html/_modules/pynodes.html +++ b/docs/build/html/_modules/pynodes.html @@ -115,8 +115,8 @@

[docs] def add_child(self, child: Node) -> None: - """ - Add new child node to current instance + """ + Add new child node to current instance :param child: Node object """ @@ -133,13 +133,17 @@ @property def siblings(self) -> list[Node]: - """ returns all the siblings of the Node object """ + """ + Returns all the siblings of the Node object + """ if self.has_siblings(): return self.parent.children @property def parents(self) -> list[Node]: - """ returns all the ancestors of the Node object """ + """ + Returns all the ancestors of the Node object + """ parents = [] p = self while p.has_parent(): @@ -149,7 +153,9 @@ @property def level(self) -> int: - """ returns the level of the Node object """ + """ + Returns the level of the Node object + """ level = 0 p = self while p.has_parent(): @@ -160,7 +166,7 @@ @property def path(self) -> str: """ - returns a representation of the ancestor lineage of self + Returns a representation of the ancestor lineage of self """ path = '' for p in reversed(self.parents): @@ -185,7 +191,9 @@
[docs] def is_child(self, other: str) -> bool: - """ check if Node object is a child of the other Node object """ + """ + Check if Node object is a child of the other Node object + """ if other in [s.name for s in self.children]: return True else: @@ -195,7 +203,9 @@
[docs] def pretty_print(self, option: str = 'default') -> None: - """ print children tree from current instance """ + """ + Print children tree from current instance + """ dashes = ' '*self.level+'|'+'--'*self.level+' ' if option == 'id': dashes += f'[{self.id}] ' diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index e76e590..91d0d40 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -48,14 +48,10 @@ Basic Usage: alice.pretty_print() -.. code-block:: - :caption: Pretty print of the tree - - Alice - -- Bob - -- Eve - - + Alice + -- Bob + -- Eve + diff --git a/docs/build/html/api.html b/docs/build/html/api.html index e2dc21a..d587041 100644 --- a/docs/build/html/api.html +++ b/docs/build/html/api.html @@ -159,7 +159,7 @@ found

is_child(other: str) bool[source]
-

check if Node object is a child of the other Node object

+

Check if Node object is a child of the other Node object

@@ -176,25 +176,25 @@ found

property level: int
-

returns the level of the Node object

+

Returns the level of the Node object

property parents: list[Node]
-

returns all the ancestors of the Node object

+

Returns all the ancestors of the Node object

property path: str
-

returns a representation of the ancestor lineage of self

+

Returns a representation of the ancestor lineage of self

pretty_print(option: str = 'default') None[source]
-

print children tree from current instance

+

Print children tree from current instance

@@ -206,7 +206,7 @@ found

property siblings: list[Node]
-

returns all the siblings of the Node object

+

Returns all the siblings of the Node object

diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 1150f95..23fbfe7 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -111,16 +111,12 @@ alice.add_child(eve) alice.pretty_print() + +Alice + -- Bob + -- Eve
-
-
Pretty print of the tree
-
    Alice
-      -- Bob
-      -- Eve
-
-
-
diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 5fe6d60..ee8532b 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "index"], "filenames": ["api.rst", "index.rst"], "titles": ["API", "Welcome to pynodes\u2019s documentation!"], "terms": {"i": [0, 1], "python": 0, "librari": 0, "manag": 0, "node": [0, 1], "class": [0, 1], "A": 0, "an": [0, 1], "object": 0, "which": 0, "relat": 0, "other": 0, "given": 0, "tree": [0, 1], "chart": 0, "venv": 1, "pip": [], "instal": [], "import": 1, "name": 0, "str": 0, "parent": [0, 1], "none": 0, "sourc": [0, 1], "should": 0, "subclass": 0, "onli": 0, "add_child": [0, 1], "child": 0, "add": 0, "new": 0, "current": 0, "instanc": [0, 1], "static": 0, "check_lineag": 0, "list": 0, "bool": 0, "check": 0, "straight": 0, "lineag": 0, "1": 0, "ancestor": 0, "2": 0, "3": 0, "n": 0, "grand": 0, "children": 0, "classmethod": 0, "create_random_nod": 0, "type_": 0, "cmd": 0, "depth": 0, "int": 0, "0": 0, "creat": 0, "random": 0, "test": 0, "purpos": 0, "properti": 0, "path": 0, "return": 0, "represent": 0, "self": 0, "pretty_print": [0, 1], "print": [0, 1], "from": 0, "reset_stat": 0, "reset": 0, "all": 0, "classvar": 0, "member": 0, "index": [], "modul": [], "search": [], "page": [], "level": 0, "sibl": 0, "get_child": 0, "find": 0, "specifi": 0, "noth": 0, "found": 0, "get_sibl": 0, "has_children": 0, "ha": 0, "one": 0, "least": 0, "has_par": 0, "has_sibl": 0, "is_child": 0, "is_sibl": 0, "code": 1, "host": 1, "my": 1, "own": 1, "gitea": 1, "link": [], "text": [], "usag": [], "basic": [], "pynod": 0, "api": 1, "thi": 1, "project": 1, "under": 1, "activ": 1, "develop": 1, "person": 1, "pass": 1, "bob": 1, "ev": 1, "alic": 1, "pretti": 1, "alice_again": 1, "rais": 1, "error": 1, "cool": [], "bit": [], "some": [], "option": 0, "default": 0, "git": 1, "clone": 1, "http": 1, "lutix": 1, "org": 1, "ftg": 1, "paramet": 0, "param": [], "compar": 0}, "objects": {"": [[0, 0, 0, "-", "pynodes"]], "pynodes": [[0, 1, 1, "", "Node"]], "pynodes.Node": [[0, 2, 1, "", "add_child"], [0, 2, 1, "", "check_lineage"], [0, 2, 1, "", "create_random_nodes"], [0, 2, 1, "", "get_child"], [0, 2, 1, "", "get_sibling"], [0, 2, 1, "", "has_children"], [0, 2, 1, "", "has_parent"], [0, 2, 1, "", "has_siblings"], [0, 2, 1, "", "is_child"], [0, 2, 1, "", "is_sibling"], [0, 3, 1, "", "level"], [0, 3, 1, "", "parents"], [0, 3, 1, "", "path"], [0, 2, 1, "", "pretty_print"], [0, 2, 1, "", "reset_stats"], [0, 3, 1, "", "siblings"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"]}, "titleterms": {"welcom": 1, "pynod": 1, "": 1, "document": 1, "basic": 1, "usag": 1, "indic": [], "tabl": [], "instal": 1, "api": 0, "content": 1}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Welcome to pynodes\u2019s documentation!": [[1, "welcome-to-pynodes-s-documentation"]], "Content:": [[1, "content"]], "Installation:": [[1, "installation"]], "Basic Usage:": [[1, "basic-usage"]], "API": [[0, "api"]]}, "indexentries": {"node (class in pynodes)": [[0, "pynodes.Node"]], "add_child() (pynodes.node method)": [[0, "pynodes.Node.add_child"]], "check_lineage() (pynodes.node static method)": [[0, "pynodes.Node.check_lineage"]], "create_random_nodes() (pynodes.node class method)": [[0, "pynodes.Node.create_random_nodes"]], "get_child() (pynodes.node method)": [[0, "pynodes.Node.get_child"]], "get_sibling() (pynodes.node method)": [[0, "pynodes.Node.get_sibling"]], "has_children() (pynodes.node method)": [[0, "pynodes.Node.has_children"]], "has_parent() (pynodes.node method)": [[0, "pynodes.Node.has_parent"]], "has_siblings() (pynodes.node method)": [[0, "pynodes.Node.has_siblings"]], "is_child() (pynodes.node method)": [[0, "pynodes.Node.is_child"]], "is_sibling() (pynodes.node method)": [[0, "pynodes.Node.is_sibling"]], "level (pynodes.node property)": [[0, "pynodes.Node.level"]], "module": [[0, "module-pynodes"]], "parents (pynodes.node property)": [[0, "pynodes.Node.parents"]], "path (pynodes.node property)": [[0, "pynodes.Node.path"]], "pretty_print() (pynodes.node method)": [[0, "pynodes.Node.pretty_print"]], "pynodes": [[0, "module-pynodes"]], "reset_stats() (pynodes.node class method)": [[0, "pynodes.Node.reset_stats"]], "siblings (pynodes.node property)": [[0, "pynodes.Node.siblings"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "index"], "filenames": ["api.rst", "index.rst"], "titles": ["API", "Welcome to pynodes\u2019s documentation!"], "terms": {"i": [0, 1], "python": 0, "librari": 0, "manag": 0, "node": [0, 1], "class": [0, 1], "A": 0, "an": [0, 1], "object": 0, "which": 0, "relat": 0, "other": 0, "given": 0, "tree": 0, "chart": 0, "venv": 1, "pip": [], "instal": [], "import": 1, "name": 0, "str": 0, "parent": [0, 1], "none": 0, "sourc": [0, 1], "should": 0, "subclass": 0, "onli": 0, "add_child": [0, 1], "child": 0, "add": 0, "new": 0, "current": 0, "instanc": [0, 1], "static": 0, "check_lineag": 0, "list": 0, "bool": 0, "check": 0, "straight": 0, "lineag": 0, "1": 0, "ancestor": 0, "2": 0, "3": 0, "n": 0, "grand": 0, "children": 0, "classmethod": 0, "create_random_nod": 0, "type_": 0, "cmd": 0, "depth": 0, "int": 0, "0": 0, "creat": 0, "random": 0, "test": 0, "purpos": 0, "properti": 0, "path": 0, "return": 0, "represent": 0, "self": 0, "pretty_print": [0, 1], "print": 0, "from": 0, "reset_stat": 0, "reset": 0, "all": 0, "classvar": 0, "member": 0, "index": [], "modul": [], "search": [], "page": [], "level": 0, "sibl": 0, "get_child": 0, "find": 0, "specifi": 0, "noth": 0, "found": 0, "get_sibl": 0, "has_children": 0, "ha": 0, "one": 0, "least": 0, "has_par": 0, "has_sibl": 0, "is_child": 0, "is_sibl": 0, "code": 1, "host": 1, "my": 1, "own": 1, "gitea": 1, "link": [], "text": [], "usag": [], "basic": [], "pynod": 0, "api": 1, "thi": 1, "project": 1, "under": 1, "activ": 1, "develop": 1, "person": 1, "pass": 1, "bob": 1, "ev": 1, "alic": 1, "pretti": [], "alice_again": 1, "rais": 1, "error": 1, "cool": [], "bit": [], "some": [], "option": 0, "default": 0, "git": 1, "clone": 1, "http": 1, "lutix": 1, "org": 1, "ftg": 1, "paramet": 0, "param": [], "compar": 0, "cookbook": [], "crawl": [], "web": [], "The": [], "most": [], "simpl": [], "wai": [], "us": [], "our": [], "program": [], "argument": [], "simpli": [], "run": [], "main": [], "py": [], "u": [], "url": [], "webpag": [], "slowli": [], "To": [], "delai": [], "your": [], "crawler": [], "d": [], "10": [], "wait": [], "second": [], "between": [], "fetch": [], "blog": [], "you": [], "want": [], "flag": [], "while": [], "ignor": [], "match": [], "regex": [], "contain": []}, "objects": {"": [[0, 0, 0, "-", "pynodes"]], "pynodes": [[0, 1, 1, "", "Node"]], "pynodes.Node": [[0, 2, 1, "", "add_child"], [0, 2, 1, "", "check_lineage"], [0, 2, 1, "", "create_random_nodes"], [0, 2, 1, "", "get_child"], [0, 2, 1, "", "get_sibling"], [0, 2, 1, "", "has_children"], [0, 2, 1, "", "has_parent"], [0, 2, 1, "", "has_siblings"], [0, 2, 1, "", "is_child"], [0, 2, 1, "", "is_sibling"], [0, 3, 1, "", "level"], [0, 3, 1, "", "parents"], [0, 3, 1, "", "path"], [0, 2, 1, "", "pretty_print"], [0, 2, 1, "", "reset_stats"], [0, 3, 1, "", "siblings"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"]}, "titleterms": {"welcom": 1, "pynod": 1, "": 1, "document": 1, "basic": 1, "usag": 1, "indic": [], "tabl": [], "instal": 1, "api": 0, "content": 1}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Welcome to pynodes\u2019s documentation!": [[1, "welcome-to-pynodes-s-documentation"]], "Content:": [[1, "content"]], "Installation:": [[1, "installation"]], "Basic Usage:": [[1, "basic-usage"]], "API": [[0, "api"]]}, "indexentries": {"node (class in pynodes)": [[0, "pynodes.Node"]], "add_child() (pynodes.node method)": [[0, "pynodes.Node.add_child"]], "check_lineage() (pynodes.node static method)": [[0, "pynodes.Node.check_lineage"]], "create_random_nodes() (pynodes.node class method)": [[0, "pynodes.Node.create_random_nodes"]], "get_child() (pynodes.node method)": [[0, "pynodes.Node.get_child"]], "get_sibling() (pynodes.node method)": [[0, "pynodes.Node.get_sibling"]], "has_children() (pynodes.node method)": [[0, "pynodes.Node.has_children"]], "has_parent() (pynodes.node method)": [[0, "pynodes.Node.has_parent"]], "has_siblings() (pynodes.node method)": [[0, "pynodes.Node.has_siblings"]], "is_child() (pynodes.node method)": [[0, "pynodes.Node.is_child"]], "is_sibling() (pynodes.node method)": [[0, "pynodes.Node.is_sibling"]], "level (pynodes.node property)": [[0, "pynodes.Node.level"]], "module": [[0, "module-pynodes"]], "parents (pynodes.node property)": [[0, "pynodes.Node.parents"]], "path (pynodes.node property)": [[0, "pynodes.Node.path"]], "pretty_print() (pynodes.node method)": [[0, "pynodes.Node.pretty_print"]], "pynodes": [[0, "module-pynodes"]], "reset_stats() (pynodes.node class method)": [[0, "pynodes.Node.reset_stats"]], "siblings (pynodes.node property)": [[0, "pynodes.Node.siblings"]]}}) \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index e76e590..91d0d40 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -48,14 +48,10 @@ Basic Usage: alice.pretty_print() -.. code-block:: - :caption: Pretty print of the tree - - Alice - -- Bob - -- Eve - - + Alice + -- Bob + -- Eve + diff --git a/pynodes.py b/pynodes.py index 7a65fa2..e36326d 100644 --- a/pynodes.py +++ b/pynodes.py @@ -232,26 +232,4 @@ class Node: return self.name if __name__ == "__main__": - -# while True: -# master_node = Node.create_random_nodes(depth=3, type_='cmd') -# node_list = [master_node, master_node.children[0], -# master_node.children[0].children[0]] -# random.shuffle(node_list) -# print([n.name for n in node_list]) -# print(Node.check_lineage(node_list)) -# input('pause') - class Person(Node): - pass - - bob = Person('Bob') - eve = Person('Eve') - alice = Person('Alice') - - # Alice is parent of bob and eve - alice.add_child(bob) - alice.add_child(eve) - - alice.pretty_print(option = 'id') - - print(alice.id) + pass diff --git a/docs/source/.index.rst.swp b/tests/.test_nodes.py.swp similarity index 86% rename from docs/source/.index.rst.swp rename to tests/.test_nodes.py.swp index e11ccbf66b066bdc13872b8a74f76626f36330fd..c5de6e4b0128d3b87627954b575fe2ee6c7b4822 100644 GIT binary patch literal 12288 zcmeI2L2DC16vtn^w~ErUPXi`7WE0y8p%BDkQ9&ga1@$mYva`+TW@p%)7IIPAFW?98 zYv||jtaw)N19u!>JL z4k1xl)27Wft!&e2s>TzWr?D68F&6cwiIE#E5)Hl=t=U$*I1syxk!4+^ zjPeyKYSaz(2-uR+sjjZG_={UcMyqseK-o*OL>8H>EGDvB@T9B)hCr?|-8-X)u{ zQiYxxrFekvQ);Shp;U7hcj-$v<@(Ay+o^YD;8;df&8o!fFiEucrbt^=C|g6UTS{d% whgTcvh`gQvzQMt`$3C3fQG^iJ^E>raw?TutJzV3aIv$(QZ|8u?4gdfE literal 12288 zcmeI2O>ZML7{|Tk1}vcR1)imdG-zj%rWGn9b|s2duo8}x6yzEe+)EtKyRHuoKGCoWeVZ3=amIv-BN@&h)&2JY6td9mJG>&97D9=SjdFYny# zgdEQX*Z><~18jf|umLu}2H3zEG7#!>;!WhcG|&0+{Ce(=>-?54Y=8~00XDz}*Z><~ z18jf|umLu}2H3zEG$0EhzPwk6ukS>DtI1jfOYWCc_ID=AA+0UJ@7Vo3usV+>tF{w0Uif!unhja zUx?qq=ioDN3%mnHU>m#$GVmm5gL}Xd_zP?N1N;Jh2H%74z_;KV5FLC4xUm5?zy{a= z8(;%$fDN#LGhl$`O^C%ON)ozqppM;d*}>xe=}PCS8J*>_4%(WG`c8!~rP^r|$nH}p z6$Pi1NK?vDubT`in~$=r36pVxv~EInn~>G^kq%iDyLqXrVpScec6{qB;P&%@9W>8Z zsL6%2r&>BSdo?;qnt~7v`-|vZIh5MaCF(2Ztyyg~k*zkZ&<$NxJNE2Jq>zsDH94gGR-4sPP+M}7$`k)H3hQ?E}HwQ*16(dZf+p zA`K>iunWGlld2#Ys8SL|@R-ckr8bAj>l2-i;1eeb`@fA5*QBHMF0E~5>zmnHk9ytS cMjF>XKXJ#GKx51YVKI@5lshHkQ5sCee`v~*F8}}l diff --git a/tests/test_nodes.py b/tests/test_nodes.py new file mode 100644 index 0000000..94b330c --- /dev/null +++ b/tests/test_nodes.py @@ -0,0 +1,21 @@ +from pathlib import Path +import sys +# to include the main lib of the tests +sys.path.append(str(Path(__file__).parent.parent)) + +from pynodes import Node + +if __name__ == '__main__': + class Person(Node): + pass + + bob = Person('Bob') + eve = Person('Eve') + alice = Person('Alice') + + # Alice is parent of bob and eve + alice.add_child(bob) + alice.add_child(eve) + + alice.pretty_print(option = 'id') + diff --git a/tests/tests.py b/tests/tests.py index 48b7b92..7a79355 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -1,20 +1,9 @@ -import inspect +from pathlib import Path +import sys +# to include the main lib of the tests +sys.path.append(str(Path(__file__).parent.parent)) -def f(*args, **kwargs): - print(kwargs) - -class SquareNumber(int): - def __new__(cls): - return super().__new__(cls) - - -class Test: - def __new__(cls, *args): - print(args[0]) - return super().__new__(cls) - - def __init__(self, first_arg: str = 'first', second_arg: str = 'second' ): - self.name = first_arg +import pynodes if __name__ == '__main__': - t = Test(first_arg = 'hello', second_arg = 'world') + pass