From 8823164511d6e3570df416caf5898eb4cc329f6a Mon Sep 17 00:00:00 2001 From: Abhishek Date: Tue, 16 Apr 2024 21:03:24 +0530 Subject: [PATCH 1/4] simple-linked-list --- .../simple_linked_list.cpython-38.pyc | Bin 0 -> 2399 bytes ...nked_list_test.cpython-38-pytest-6.2.4.pyc | Bin 0 -> 5898 bytes .../simple-linked-list/simple_linked_list.py | 56 +++++++++++++----- 3 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 practice/simple-linked-list/__pycache__/simple_linked_list.cpython-38.pyc create mode 100644 practice/simple-linked-list/__pycache__/simple_linked_list_test.cpython-38-pytest-6.2.4.pyc diff --git a/practice/simple-linked-list/__pycache__/simple_linked_list.cpython-38.pyc b/practice/simple-linked-list/__pycache__/simple_linked_list.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff0b9d8f2d6a976ddfbfd6a71f0710710dc5065f GIT binary patch literal 2399 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 literal 0 HcmV?d00001 diff --git a/practice/simple-linked-list/simple_linked_list.py b/practice/simple-linked-list/simple_linked_list.py index cbf120e..cb229ee 100644 --- a/practice/simple-linked-list/simple_linked_list.py +++ b/practice/simple-linked-list/simple_linked_list.py @@ -1,33 +1,61 @@ class Node: - def __init__(self, value): - pass + def __init__(self, value, next_node=None): + self._value = value + self._next_node = next_node def value(self): - pass + return self._value def next(self): - pass - - + return self._next_node + class LinkedList: def __init__(self, values=[]): - pass + self._head = None + self._length = 0 + # Initialize in normal order + for value in values: + self.push(value) def __len__(self): - pass + count = 0 + node = self._head + while node: + count += 1 + node = node.next() + return count def head(self): - pass + if not self._head: + raise EmptyListException("The list is empty.") + return self._head def push(self, value): - pass + new_node = Node(value, self._head) + self._head = new_node + self._length += 1 def pop(self): - pass + if self._length == 0: + raise EmptyListException("The list is empty.") + value = self._head.value() + self._head = self._head.next() + self._length -= 1 + return value def reversed(self): - pass - - + return LinkedList(list(self)) + + def __iter__(self): + node = self._head + while node: + yield node.value() + node = node.next() + class EmptyListException(Exception): + def __init__(self, message): + self.message = message pass + + + From 4c9baed37133ba799e463bc4fba789376f412c21 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Mon, 22 Apr 2024 02:22:15 +0530 Subject: [PATCH 2/4] run impacted tests only --- .github/workflows/python-app.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 48d1bde..a4e04c8 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -30,7 +30,8 @@ jobs: if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Test with pytest run: | - pytest --continue-on-collection-errors + git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/* + git diff origin/main HEAD --name-only -- practice | xargs dirname | sort | uniq | xargs pytest - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names From 1016400331f6b27c85e7616ec607e382c7dcfeb8 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Mon, 22 Apr 2024 02:39:15 +0530 Subject: [PATCH 3/4] resolved conflicts --- .github/workflows/python-app.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index a4e04c8..e1ba390 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -30,11 +30,11 @@ jobs: if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Test with pytest run: | - git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/* - git diff origin/main HEAD --name-only -- practice | xargs dirname | sort | uniq | xargs pytest + git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/* + git diff origin/main HEAD --name-only -- practice | xargs dirname | sort | uniq | xargs pytest - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics \ No newline at end of file From 6ebf61b314d6ae0183c120b29d9226a53ff884bb Mon Sep 17 00:00:00 2001 From: Abhishek Date: Mon, 22 Apr 2024 03:08:14 +0530 Subject: [PATCH 4/4] removed cache folder to resolve failing builds --- .../simple_linked_list.cpython-38.pyc | Bin 2399 -> 0 bytes ..._linked_list_test.cpython-38-pytest-6.2.4.pyc | Bin 5898 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 practice/simple-linked-list/__pycache__/simple_linked_list.cpython-38.pyc delete mode 100644 practice/simple-linked-list/__pycache__/simple_linked_list_test.cpython-38-pytest-6.2.4.pyc diff --git a/practice/simple-linked-list/__pycache__/simple_linked_list.cpython-38.pyc b/practice/simple-linked-list/__pycache__/simple_linked_list.cpython-38.pyc deleted file mode 100644 index ff0b9d8f2d6a976ddfbfd6a71f0710710dc5065f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2399 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