algokit-py 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algokit-py
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: A minimal Python algorithms library with clean implementations of search algorithms
5
5
  Author: Chanaka Prasanna
6
6
  License: MIT
@@ -12,14 +12,27 @@ Description-Content-Type: text/markdown
12
12
 
13
13
  # algokit-py
14
14
 
15
- A lightweight Python algorithms library with clean, well-documented implementations.
15
+ A lightweight Python algorithms library with clean, well-documented, and tested implementations.
16
+ Designed for learning, interviews, and real-world algorithm reasoning.
16
17
 
17
18
  ## Features
19
+
20
+ ### Search Algorithms
18
21
  - Linear Search
19
- - Binary Search
22
+ - Binary Search (iterative, invariant-based)
23
+
24
+ ### Sorting Algorithms
25
+ - Insertion Sort (in-place, stable)
20
26
 
21
27
  ## Usage
22
28
 
29
+ ### Install
30
+
31
+ ```python
32
+ pip install algokit-py
33
+ ```
34
+
35
+ ### Search
23
36
  ```python
24
37
  from algokit_py.search import linear_search, binary_search
25
38
 
@@ -27,26 +40,11 @@ print(linear_search([1, 2, 3], 2))
27
40
  print(binary_search([1, 2, 3], 2))
28
41
  ```
29
42
 
30
-
31
- We will improve this later.
32
-
33
- ---
34
-
35
- ## STEP 6: Local Install Test (Very Important)
36
-
37
- From **project root**:
38
-
39
- ```powershell
40
- pip install -e .
41
- ```
42
-
43
- Then test:
44
-
45
- ```powershell
46
- python -c "from algokit_py.search import binary_search; print(binary_search([1,2,3], 2))"
47
- ```
48
-
49
- You must see:
43
+ ### Sorting
50
44
  ```python
51
- 1
45
+ from algokit_py.sort import insertion_sort
46
+
47
+ data = [3, 1, 2]
48
+ insertion_sort(data)
49
+ print(data) # [1, 2, 3]
52
50
  ```
@@ -0,0 +1,38 @@
1
+ # algokit-py
2
+
3
+ A lightweight Python algorithms library with clean, well-documented, and tested implementations.
4
+ Designed for learning, interviews, and real-world algorithm reasoning.
5
+
6
+ ## Features
7
+
8
+ ### Search Algorithms
9
+ - Linear Search
10
+ - Binary Search (iterative, invariant-based)
11
+
12
+ ### Sorting Algorithms
13
+ - Insertion Sort (in-place, stable)
14
+
15
+ ## Usage
16
+
17
+ ### Install
18
+
19
+ ```python
20
+ pip install algokit-py
21
+ ```
22
+
23
+ ### Search
24
+ ```python
25
+ from algokit_py.search import linear_search, binary_search
26
+
27
+ print(linear_search([1, 2, 3], 2))
28
+ print(binary_search([1, 2, 3], 2))
29
+ ```
30
+
31
+ ### Sorting
32
+ ```python
33
+ from algokit_py.sort import insertion_sort
34
+
35
+ data = [3, 1, 2]
36
+ insertion_sort(data)
37
+ print(data) # [1, 2, 3]
38
+ ```
@@ -3,6 +3,7 @@ algokit_py - A minimal Python algorithms library
3
3
  """
4
4
 
5
5
  from algokit_py.search import binary_search, linear_search
6
+ from algokit_py.sort import insertion_sort
6
7
 
7
8
  __version__ = "0.1.0"
8
- __all__ = ["binary_search", "linear_search"]
9
+ __all__ = ["binary_search", "linear_search","insertion_sort"]
@@ -16,10 +16,11 @@ At every step, the algorithm maintains a range that is guaranteed to contain the
16
16
  from typing import Sequence, TypeVar
17
17
 
18
18
  T = TypeVar('T')
19
- # here we use Sequence because binary seach does not support for unindexed iterables
19
+ # here we use Sequence because binary search does not support for not indexed iterables.
20
+ # Binary search requires a sorted sequence.
20
21
  def binary_search(sequence: Sequence[T], target: T)-> int:
21
22
  """
22
- This function will perform the binary search
23
+ This function will perform the binary search. Sequence must be a sorted sequence
23
24
 
24
25
  :param sequence: sorted and indexed sequence
25
26
  :param target: value that you want to find
@@ -0,0 +1 @@
1
+ from .insertion import insertion_sort
@@ -0,0 +1,26 @@
1
+ from typing import MutableSequence, TypeVar
2
+
3
+ T = TypeVar('T')
4
+ def insertion_sort(sequence: MutableSequence[T])-> None:
5
+ """
6
+ At the start of iteration i, the subarray sequence[0:i] is sorted.
7
+
8
+ :param sequence
9
+ :return None
10
+
11
+ Worst Case Time Complexity: O(n²)
12
+ Space Complexity: O(1)
13
+ """
14
+ length = len(sequence)
15
+ for i in range(1, length):
16
+ key = sequence[i]
17
+ j = i-1
18
+ while sequence[j] > key and j >= 0:
19
+ sequence[j+1]= sequence[j]
20
+ j -= 1
21
+ sequence[j + 1] = key
22
+
23
+
24
+
25
+
26
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algokit-py
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: A minimal Python algorithms library with clean implementations of search algorithms
5
5
  Author: Chanaka Prasanna
6
6
  License: MIT
@@ -12,14 +12,27 @@ Description-Content-Type: text/markdown
12
12
 
13
13
  # algokit-py
14
14
 
15
- A lightweight Python algorithms library with clean, well-documented implementations.
15
+ A lightweight Python algorithms library with clean, well-documented, and tested implementations.
16
+ Designed for learning, interviews, and real-world algorithm reasoning.
16
17
 
17
18
  ## Features
19
+
20
+ ### Search Algorithms
18
21
  - Linear Search
19
- - Binary Search
22
+ - Binary Search (iterative, invariant-based)
23
+
24
+ ### Sorting Algorithms
25
+ - Insertion Sort (in-place, stable)
20
26
 
21
27
  ## Usage
22
28
 
29
+ ### Install
30
+
31
+ ```python
32
+ pip install algokit-py
33
+ ```
34
+
35
+ ### Search
23
36
  ```python
24
37
  from algokit_py.search import linear_search, binary_search
25
38
 
@@ -27,26 +40,11 @@ print(linear_search([1, 2, 3], 2))
27
40
  print(binary_search([1, 2, 3], 2))
28
41
  ```
29
42
 
30
-
31
- We will improve this later.
32
-
33
- ---
34
-
35
- ## STEP 6: Local Install Test (Very Important)
36
-
37
- From **project root**:
38
-
39
- ```powershell
40
- pip install -e .
41
- ```
42
-
43
- Then test:
44
-
45
- ```powershell
46
- python -c "from algokit_py.search import binary_search; print(binary_search([1,2,3], 2))"
47
- ```
48
-
49
- You must see:
43
+ ### Sorting
50
44
  ```python
51
- 1
45
+ from algokit_py.sort import insertion_sort
46
+
47
+ data = [3, 1, 2]
48
+ insertion_sort(data)
49
+ print(data) # [1, 2, 3]
52
50
  ```
@@ -8,5 +8,8 @@ algokit_py.egg-info/top_level.txt
8
8
  algokit_py/search/__init__.py
9
9
  algokit_py/search/binary.py
10
10
  algokit_py/search/linear.py
11
+ algokit_py/sort/__init__.py
12
+ algokit_py/sort/insertion.py
11
13
  tests/test_binary.py
14
+ tests/test_insertion.py
12
15
  tests/test_linear.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "algokit-py"
7
- version = "0.1.0"
7
+ version = "0.2.0"
8
8
  description = "A minimal Python algorithms library with clean implementations of search algorithms"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -0,0 +1,32 @@
1
+
2
+ from algokit_py.sort import insertion_sort
3
+
4
+
5
+ def test_insertion_sort_basic():
6
+ data = [3, 1, 2]
7
+ insertion_sort(data)
8
+ assert data == [1, 2, 3]
9
+
10
+
11
+ def test_insertion_sort_already_sorted():
12
+ data = [1, 2, 3, 4]
13
+ insertion_sort(data)
14
+ assert data == [1, 2, 3, 4]
15
+
16
+
17
+ def test_insertion_sort_reverse():
18
+ data = [4, 3, 2, 1]
19
+ insertion_sort(data)
20
+ assert data == [1, 2, 3, 4]
21
+
22
+
23
+ def test_insertion_sort_single_element():
24
+ data = [5]
25
+ insertion_sort(data)
26
+ assert data == [5]
27
+
28
+
29
+ def test_insertion_sort_empty():
30
+ data = []
31
+ insertion_sort(data)
32
+ assert data == []
@@ -1,40 +0,0 @@
1
- # algokit-py
2
-
3
- A lightweight Python algorithms library with clean, well-documented implementations.
4
-
5
- ## Features
6
- - Linear Search
7
- - Binary Search
8
-
9
- ## Usage
10
-
11
- ```python
12
- from algokit_py.search import linear_search, binary_search
13
-
14
- print(linear_search([1, 2, 3], 2))
15
- print(binary_search([1, 2, 3], 2))
16
- ```
17
-
18
-
19
- We will improve this later.
20
-
21
- ---
22
-
23
- ## STEP 6: Local Install Test (Very Important)
24
-
25
- From **project root**:
26
-
27
- ```powershell
28
- pip install -e .
29
- ```
30
-
31
- Then test:
32
-
33
- ```powershell
34
- python -c "from algokit_py.search import binary_search; print(binary_search([1,2,3], 2))"
35
- ```
36
-
37
- You must see:
38
- ```python
39
- 1
40
- ```
File without changes