pkstruct 0.1.1__tar.gz → 0.1.2__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.
Files changed (107) hide show
  1. pkstruct-0.1.2/.github/ISSUE_TEMPLATE/bug_report.md +46 -0
  2. pkstruct-0.1.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. pkstruct-0.1.2/.github/ISSUE_TEMPLATE/feature_request.md +37 -0
  4. pkstruct-0.1.2/.github/pull_request_template.md +29 -0
  5. {pkstruct-0.1.1 → pkstruct-0.1.2}/.gitignore +2 -1
  6. {pkstruct-0.1.1 → pkstruct-0.1.2}/CHANGELOG.md +16 -0
  7. pkstruct-0.1.2/CODE_OF_CONDUCT.md +113 -0
  8. pkstruct-0.1.2/CONTRIBUTING.md +133 -0
  9. pkstruct-0.1.2/MAINTAINERS.md +62 -0
  10. {pkstruct-0.1.1 → pkstruct-0.1.2}/MANIFEST.in +2 -0
  11. {pkstruct-0.1.1 → pkstruct-0.1.2}/PKG-INFO +41 -18
  12. {pkstruct-0.1.1 → pkstruct-0.1.2}/README.md +31 -11
  13. {pkstruct-0.1.1 → pkstruct-0.1.2}/pyproject.toml +22 -8
  14. pkstruct-0.1.1/AGENTS.md +0 -38
  15. pkstruct-0.1.1/requirements-dev.txt +0 -9
  16. {pkstruct-0.1.1 → pkstruct-0.1.2}/LICENSE +0 -0
  17. {pkstruct-0.1.1 → pkstruct-0.1.2}/SECURITY.md +0 -0
  18. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/__init__.py +0 -0
  19. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_display.py +0 -0
  20. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_help.py +0 -0
  21. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_linear_shortcuts.py +0 -0
  22. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_str.py +0 -0
  23. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_tree_shortcuts.py +0 -0
  24. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/__init__.py +0 -0
  25. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/connectivity.py +0 -0
  26. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/directed.py +0 -0
  27. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/exceptions.py +0 -0
  28. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/graph.py +0 -0
  29. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/mst.py +0 -0
  30. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/scc.py +0 -0
  31. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/shortest_path.py +0 -0
  32. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/tests/__init__.py +0 -0
  33. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/tests/test_graph.py +0 -0
  34. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/tests/test_graph_advanced.py +0 -0
  35. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/topo_sort.py +0 -0
  36. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/traversal.py +0 -0
  37. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/visualization.py +0 -0
  38. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/weighted.py +0 -0
  39. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/__init__.py +0 -0
  40. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/deques/__init__.py +0 -0
  41. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/deques/deque.py +0 -0
  42. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/deques/linked_deque.py +0 -0
  43. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/exceptions.py +0 -0
  44. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/__init__.py +0 -0
  45. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/_base.py +0 -0
  46. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/circular_linked_list.py +0 -0
  47. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/doubly_linked_list.py +0 -0
  48. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/nodes.py +0 -0
  49. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/singly_linked_list.py +0 -0
  50. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/__init__.py +0 -0
  51. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/circular_queue.py +0 -0
  52. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/linked_queue.py +0 -0
  53. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/priority_queue.py +0 -0
  54. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/queue.py +0 -0
  55. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/__init__.py +0 -0
  56. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/array_stack.py +0 -0
  57. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/linked_stack.py +0 -0
  58. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/stack.py +0 -0
  59. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/__init__.py +0 -0
  60. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/test_edge_cases.py +0 -0
  61. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/test_linked_list.py +0 -0
  62. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/test_visualization.py +0 -0
  63. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/__init__.py +0 -0
  64. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/benchmark.py +0 -0
  65. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/debug_tools.py +0 -0
  66. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/helpers.py +0 -0
  67. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/iterators.py +0 -0
  68. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/__init__.py +0 -0
  69. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/ascii_visualizer.py +0 -0
  70. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/linked_list_visualizer.py +0 -0
  71. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/py.typed +0 -0
  72. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/__init__.py +0 -0
  73. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/benchmarking/__init__.py +0 -0
  74. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/debugging/__init__.py +0 -0
  75. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/exceptions/__init__.py +0 -0
  76. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/serializers/__init__.py +0 -0
  77. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/threading/__init__.py +0 -0
  78. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/validators/__init__.py +0 -0
  79. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/visualization/__init__.py +0 -0
  80. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/__init__.py +0 -0
  81. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/avl.py +0 -0
  82. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/balancing.py +0 -0
  83. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/bplus.py +0 -0
  84. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/bst.py +0 -0
  85. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/btree.py +0 -0
  86. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/exceptions.py +0 -0
  87. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/fenwick_tree.py +0 -0
  88. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/interval_tree.py +0 -0
  89. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/node.py +0 -0
  90. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/red_black.py +0 -0
  91. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/segment_tree.py +0 -0
  92. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/__init__.py +0 -0
  93. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_avl.py +0 -0
  94. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_bplus.py +0 -0
  95. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_bst.py +0 -0
  96. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_btree.py +0 -0
  97. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_fenwick_tree.py +0 -0
  98. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_interval_tree.py +0 -0
  99. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_red_black.py +0 -0
  100. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_segment_tree.py +0 -0
  101. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/traversal.py +0 -0
  102. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tree_helpers.py +0 -0
  103. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/utils/__init__.py +0 -0
  104. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/utils/complexity_helpers.py +0 -0
  105. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/visualization/__init__.py +0 -0
  106. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/visualization/ascii_renderer.py +0 -0
  107. {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/visualization/tree_printer.py +0 -0
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Create a report to help us improve pkstruct
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Description
10
+
11
+ A clear and concise description of what the bug is.
12
+
13
+ ## Reproduction
14
+
15
+ ```python
16
+ # Minimal, runnable code that reproduces the issue
17
+ ```
18
+
19
+ ## Expected Behavior
20
+
21
+ ```python
22
+ # What you expected to happen
23
+ ```
24
+
25
+ ## Actual Behavior
26
+
27
+ ```python
28
+ # What actually happened (include full error output)
29
+ ```
30
+
31
+ ## Environment
32
+
33
+ - Python version:
34
+ - OS:
35
+ - pkstruct version (pip show pkstruct):
36
+ - Installed via: (pip / pipx / from source)
37
+
38
+ ## Additional Context
39
+
40
+ Add any other context, screenshots, or ASCII visualizations here.
41
+
42
+ ## Checklist
43
+
44
+ - [ ] I searched existing issues before filing this report
45
+ - [ ] I am running the latest pkstruct version
46
+ - [ ] This is a pkstruct bug, not a usage question
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Questions & Discussions
4
+ url: https://github.com/prnvvv/pkstruct/discussions
5
+ about: Ask usage questions and discuss ideas here
6
+ - name: Security Issues
7
+ url: https://github.com/prnvvv/pkstruct/security/policy
8
+ about: Report security vulnerabilities here (do not open a public issue)
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest an idea for pkstruct
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Problem
10
+
11
+ A clear description of what problem this feature would solve.
12
+ Ex: I'm always frustrated when [...]
13
+
14
+ ## Proposed Solution
15
+
16
+ A clear description of what you want to happen, including API design if applicable.
17
+
18
+ ```python
19
+ # Optional: sketch of the API you envision
20
+ ```
21
+
22
+ ## Alternatives
23
+
24
+ Any alternative solutions or workarounds you've considered.
25
+
26
+ ## Scope
27
+
28
+ - [ ] New data structure
29
+ - [ ] New algorithm / method
30
+ - [ ] Performance improvement
31
+ - [ ] Documentation
32
+ - [ ] Testing
33
+ - [ ] Other (describe below)
34
+
35
+ ## Additional Context
36
+
37
+ Any other context, references, or examples.
@@ -0,0 +1,29 @@
1
+ ## Description
2
+
3
+ Please include a summary of the changes and which issue is fixed.
4
+
5
+ Fixes #(issue)
6
+
7
+ ## Type of Change
8
+
9
+ - [ ] Bug fix (non-breaking change)
10
+ - [ ] New feature (non-breaking change)
11
+ - [ ] Breaking change (fix or feature that changes existing API)
12
+ - [ ] Documentation update
13
+ - [ ] Performance improvement
14
+ - [ ] Test addition/improvement
15
+ - [ ] CI/infrastructure change
16
+
17
+ ## Checklist
18
+
19
+ - [ ] Code follows project style (ruff passes)
20
+ - [ ] Type hints added/updated (mypy passes)
21
+ - [ ] Tests added/updated for new code
22
+ - [ ] All existing tests pass (`python -m pytest`)
23
+ - [ ] CHANGELOG.md updated for user-facing changes
24
+ - [ ] Documentation updated if API changed
25
+ - [ ] I have read the CONTRIBUTING.md guide
26
+
27
+ ## Additional Notes
28
+
29
+ Any additional context, benchmark results, or design decisions.
@@ -212,6 +212,7 @@ PKSTRUCT-INFO
212
212
  # Development artifacts
213
213
  # ==========================================
214
214
  *.history
215
+ AGENTS.md
216
+ requirements-dev.txt
215
217
 
216
- .github/
217
218
  .gitlab-ci.yml
@@ -5,6 +5,22 @@ All notable changes to pkstruct will be documented in this file.
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.2] - 2026-06-16
9
+
10
+ ### Added
11
+ - CONTRIBUTING.md, CODE_OF_CONDUCT.md, MAINTAINERS.md with project governance
12
+ - Issue templates (bug report, feature request) and PR template
13
+ - `py.typed` marker already present for PEP 561 compliance
14
+
15
+ ### Changed
16
+ - README restructured: added "Why pkstruct?" section, removed maintainer-only publishing docs
17
+ - pyproject.toml: updated author list with founders, expanded keywords, added classifiers
18
+ - Badge URLs fixed to match `prnvvv/pkstruct` repository
19
+
20
+ ### Removed
21
+ - AGENTS.md and requirements-dev.txt removed from repository (gitignored)
22
+ - .github/ removed from .gitignore so templates are tracked
23
+
8
24
  ## [0.1.1] - 2026-06-02
9
25
 
10
26
  ### Added
@@ -0,0 +1,113 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment:
18
+
19
+ * Demonstrating empathy and kindness toward other people
20
+ * Being respectful of differing opinions, viewpoints, and experiences
21
+ * Giving and gracefully accepting constructive feedback
22
+ * Accepting responsibility and apologizing to those affected by our mistakes
23
+ * Focusing on what is best for the overall community
24
+
25
+ Examples of unacceptable behavior:
26
+
27
+ * The use of sexualized language or imagery, and sexual attention or advances
28
+ * Trolling, insulting or derogatory comments, and personal or political attacks
29
+ * Public or private harassment
30
+ * Publishing others' private information without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate
32
+
33
+ ## Enforcement Responsibilities
34
+
35
+ Community leaders are responsible for clarifying and enforcing our standards.
36
+ They have the right and responsibility to remove, edit, or reject comments,
37
+ commits, code, wiki edits, issues, and other contributions that are not
38
+ aligned to this Code of Conduct, and will communicate reasons for moderation
39
+ decisions when appropriate.
40
+
41
+ ## Scope
42
+
43
+ This Code of Conduct applies within all community spaces, and also applies
44
+ when an individual is representing the community in public spaces.
45
+
46
+ ## Enforcement
47
+
48
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
49
+ reported to the community leaders responsible for enforcement at
50
+ **conduct@pkstruct.dev**. All complaints will be reviewed and investigated
51
+ promptly and fairly.
52
+
53
+ All community leaders are obligated to respect the privacy and security of
54
+ the reporter of any incident.
55
+
56
+ ## Enforcement Guidelines
57
+
58
+ Community leaders will follow these Community Impact Guidelines in determining
59
+ consequences for any action they deem in violation of this Code of Conduct:
60
+
61
+ ### 1. Correction
62
+
63
+ **Community Impact**: Use of inappropriate language or other behavior deemed
64
+ unprofessional or unwelcome.
65
+
66
+ **Consequence**: A private, written warning from community leaders, providing
67
+ clarity around the nature of the violation and an explanation of why the
68
+ behavior was inappropriate. A public apology may be requested.
69
+
70
+ ### 2. Warning
71
+
72
+ **Community Impact**: A violation through a single incident or series of actions.
73
+
74
+ **Consequence**: A warning with consequences for continued behavior. No
75
+ interaction with the people involved for a specified period of time. This
76
+ includes avoiding interactions in community spaces as well as external channels
77
+ like social media. Violating these terms may lead to a temporary or permanent ban.
78
+
79
+ ### 3. Temporary Ban
80
+
81
+ **Community Impact**: A serious violation of community standards.
82
+
83
+ **Consequence**: A temporary ban from any sort of interaction or public
84
+ communication with the community for a specified period of time. No public or
85
+ private interaction with the people involved is allowed during this period.
86
+ Violating these terms may lead to a permanent ban.
87
+
88
+ ### 4. Permanent Ban
89
+
90
+ **Community Impact**: Demonstrating a pattern of violation, sustained
91
+ harassment, or aggression toward individuals or classes of individuals.
92
+
93
+ **Consequence**: A permanent ban from any sort of public interaction within
94
+ the community.
95
+
96
+ ## Attribution
97
+
98
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
99
+ version 2.1, available at
100
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
101
+
102
+ Community Impact Guidelines were inspired by
103
+ [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
104
+
105
+ For answers to common questions about this code of conduct, see the FAQ at
106
+ [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
107
+ [https://www.contributor-covenant.org/translations][translations].
108
+
109
+ [homepage]: https://www.contributor-covenant.org
110
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
111
+ [Mozilla CoC]: https://github.com/mozilla/diversity
112
+ [FAQ]: https://www.contributor-covenant.org/faq
113
+ [translations]: https://www.contributor-covenant.org/translations
@@ -0,0 +1,133 @@
1
+ # Contributing to pkstruct
2
+
3
+ Thank you for your interest in contributing to pkstruct! This document provides guidelines and instructions for contributing.
4
+
5
+ ## Code of Conduct
6
+
7
+ By participating, you agree to abide by our [Code of Conduct](CODE_OF_CONDUCT.md). Please report unacceptable behavior.
8
+
9
+ ## How to Contribute
10
+
11
+ ### Reporting Bugs
12
+
13
+ 1. Search [existing issues](https://github.com/prnvvv/pkstruct/issues) to avoid duplicates.
14
+ 2. Use the **Bug Report** issue template.
15
+ 3. Include:
16
+ - Python version and OS
17
+ - Minimal reproduction code
18
+ - Expected vs actual behavior
19
+ - Full error output if applicable
20
+
21
+ ### Suggesting Features
22
+
23
+ 1. Search [existing issues](https://github.com/prnvvv/pkstruct/issues) first.
24
+ 2. Use the **Feature Request** issue template.
25
+ 3. Explain the use case and why it belongs in pkstruct.
26
+
27
+ ### Questions
28
+
29
+ Use the **Question** issue template or start a [Discussion](https://github.com/prnvvv/pkstruct/discussions).
30
+
31
+ ## Development Setup
32
+
33
+ ```bash
34
+ git clone https://github.com/prnvvv/pkstruct.git
35
+ cd pkstruct
36
+ pip install -e ".[dev]"
37
+ ```
38
+
39
+ ## Coding Standards
40
+
41
+ - **Python**: >= 3.10
42
+ - **Type hints**: Required for all public APIs. Run `mypy src/pkstruct` — no errors allowed.
43
+ - **Style**: Run `ruff check src/pkstruct` — no violations allowed.
44
+ - **Line length**: 100 characters.
45
+ - **Imports**: Use Ruff's import ordering (`I` rule set).
46
+
47
+ ### Rules
48
+
49
+ - No `eval()` or `exec()`.
50
+ - All mutable state must be protected by `threading.RLock`.
51
+ - Public API methods must have type annotations and docstrings.
52
+ - Internal/private methods prefixed with `_`.
53
+
54
+ ## Testing
55
+
56
+ ```bash
57
+ # Run all tests
58
+ python -m pytest
59
+
60
+ # Run with coverage
61
+ python -m pytest --cov=src/pkstruct
62
+
63
+ # Run specific test file
64
+ python -m pytest src/pkstruct/linear/tests/test_linked_list.py
65
+ ```
66
+
67
+ - All new code must include tests.
68
+ - Tests should cover normal paths, edge cases, and error conditions.
69
+ - Test files go in the corresponding `tests/` directory.
70
+
71
+ ## Pull Request Process
72
+
73
+ 1. **Create an issue** first for bugs or feature requests (unless trivial).
74
+ 2. **Fork the repository** and create a branch from `main`:
75
+ ```
76
+ git checkout -b fix/issue-42-description
77
+ ```
78
+ 3. **Make your changes** following the coding standards.
79
+ 4. **Run tests** locally to ensure nothing is broken.
80
+ 5. **Run type checks** with `mypy src/pkstruct`.
81
+ 6. **Run linter** with `ruff check src/pkstruct`.
82
+ 7. **Commit** with a clear message:
83
+ ```
84
+ feat: add range_update to SegmentTree
85
+ fix: handle empty list in SinglyLinkedList.sort
86
+ docs: update README examples
87
+ ```
88
+ 8. **Push** and open a Pull Request.
89
+ 9. **Address review feedback** promptly.
90
+
91
+ ## Pull Request Checklist
92
+
93
+ - [ ] Code follows style guidelines
94
+ - [ ] Type hints added/updated
95
+ - [ ] Tests added/updated
96
+ - [ ] All tests pass
97
+ - [ ] mypy passes with no errors
98
+ - [ ] ruff passes with no violations
99
+ - [ ] CHANGELOG.md updated (if user-facing change)
100
+ - [ ] Documentation updated (if API change)
101
+
102
+ ## Review Expectations
103
+
104
+ - Maintainers review within 5 business days.
105
+ - Changes may be requested — this is normal.
106
+ - Two approving reviews required for significant changes.
107
+
108
+ ## Project Structure
109
+
110
+ ```
111
+ src/pkstruct/
112
+ ├── __init__.py # Package root, registry, help()
113
+ ├── linear/ # Linked lists, stacks, queues, deques
114
+ │ ├── linked_lists/
115
+ │ ├── stacks/
116
+ │ ├── queues/
117
+ │ ├── deques/
118
+ │ ├── tests/
119
+ │ ├── utils/
120
+ │ └── visualization/
121
+ ├── trees/ # BST, AVL, Red-Black, B-Tree, Fenwick, Segment, Interval
122
+ │ ├── tests/
123
+ │ └── visualization/
124
+ ├── graphs/ # Graph, DirectedGraph, algorithms
125
+ │ └── tests/
126
+ └── shared/ # Validators, serializers, threading, benchmarking
127
+ ```
128
+
129
+ ## Getting Help
130
+
131
+ - Open a [Discussion](https://github.com/prnvvv/pkstruct/discussions)
132
+ - Ask in issue comments
133
+ - Tag `@prnvvv` for maintainer attention
@@ -0,0 +1,62 @@
1
+ # Maintainer Guide
2
+
3
+ This document is for maintainers and release managers of pkstruct.
4
+
5
+ ## Project Leadership
6
+
7
+ - **Founder & Maintainer**: [Prannavakhanth](https://github.com/prnvvv) — prannavakhanth12@gmail.com
8
+ - **Co-Founder & Maintainer**: [Priyanka Kaliraj](https://github.com/pri-23-k) — pri2303k@gmail.com
9
+
10
+ ## Publishing a Release
11
+
12
+ ```bash
13
+ # 1. Clean any previous builds
14
+ rm -rf dist/
15
+
16
+ # 2. Build distribution packages
17
+ python -m build
18
+
19
+ # 3. Verify distribution
20
+ twine check dist/*
21
+
22
+ # 4. Upload to PyPI
23
+ twine upload dist/*
24
+
25
+ # 5. Tag the release
26
+ git tag v$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
27
+ git push origin --tags
28
+ ```
29
+
30
+ ## Before a Release
31
+
32
+ - [ ] All tests pass: `python -m pytest`
33
+ - [ ] Type check passes: `mypy src/pkstruct`
34
+ - [ ] Lint passes: `ruff check src/pkstruct`
35
+ - [ ] CHANGELOG.md is up to date
36
+ - [ ] Version is bumped in `pyproject.toml`
37
+ - [ ] README example code is verified against release
38
+
39
+ ## Versioning
40
+
41
+ pkstruct follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html):
42
+
43
+ - **Patch** (`0.1.0` → `0.1.1`): Bug fixes, minor improvements, no breaking API changes.
44
+ - **Minor** (`0.1.0` → `0.2.0`): New features, deprecations, no breaking API changes (once stable).
45
+ - **Major** (`1.0.0`): Breaking API changes.
46
+
47
+ ## Managing Issues
48
+
49
+ - Apply appropriate labels: `bug`, `enhancement`, `question`, `good first issue`.
50
+ - Respond to new issues within 48 hours.
51
+ - Close resolved issues with a comment linking to the PR.
52
+
53
+ ## Managing Pull Requests
54
+
55
+ - Review within 5 business days.
56
+ - Ensure all CI checks pass before merging.
57
+ - Use **Squash and Merge** for feature branches.
58
+ - Update CHANGELOG.md when merging user-facing changes.
59
+
60
+ ## Security Vulnerabilities
61
+
62
+ See [SECURITY.md](SECURITY.md) for the reporting process.
@@ -2,6 +2,8 @@ include README.md
2
2
  include LICENSE
3
3
  include CHANGELOG.md
4
4
  include SECURITY.md
5
+ include CODE_OF_CONDUCT.md
6
+ include CONTRIBUTING.md
5
7
  recursive-include src/pkstruct *.py *.pyi
6
8
  global-exclude __pycache__
7
9
  global-exclude *.py[co]
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkstruct
3
- Version: 0.1.1
4
- Summary: Industrial-grade data structures and algorithms toolkit for Python
5
- Project-URL: Homepage, https://github.com/pkstruct/pkstruct
6
- Project-URL: Repository, https://github.com/pkstruct/pkstruct
7
- Project-URL: Documentation, https://pkstruct.readthedocs.io
8
- Project-URL: Bug Tracker, https://github.com/pkstruct/pkstruct/issues
3
+ Version: 0.1.2
4
+ Summary: A production-grade, open-source Python library providing comprehensive data structures and algorithms with type hints, thread safety, and extensive testing
5
+ Project-URL: Homepage, https://github.com/prnvvv/pkstruct
6
+ Project-URL: Repository, https://github.com/prnvvv/pkstruct
7
+ Project-URL: Documentation, https://github.com/prnvvv/pkstruct#readme
8
+ Project-URL: Bug Tracker, https://github.com/prnvvv/pkstruct/issues
9
9
  Author: pkstruct Contributors
10
+ Author-email: Prannavakhanth <prannavakhanth12@gmail.com>, Priyanka Kaliraj <pri2303k@gmail.com>
10
11
  License: MIT License
11
12
 
12
13
  Copyright (c) 2026 Prannavakhanth
@@ -29,11 +30,13 @@ License: MIT License
29
30
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
31
  SOFTWARE.
31
32
  License-File: LICENSE
32
- Keywords: algorithms,collections,data-structures,dsa,linked-list
33
+ Keywords: algorithms,avl-tree,b-tree,binary-search-tree,bplus-tree,collections,competitive-programming,data-structures,deque,dsa,fenwick-tree,graph,graph-algorithms,interval-tree,interview,linked-list,queue,red-black-tree,segment-tree,stack,tree
33
34
  Classifier: Development Status :: 5 - Production/Stable
34
35
  Classifier: Intended Audience :: Developers
35
36
  Classifier: Intended Audience :: Education
36
37
  Classifier: License :: OSI Approved :: MIT License
38
+ Classifier: Natural Language :: English
39
+ Classifier: Operating System :: OS Independent
37
40
  Classifier: Programming Language :: Python :: 3
38
41
  Classifier: Programming Language :: Python :: 3.10
39
42
  Classifier: Programming Language :: Python :: 3.11
@@ -60,12 +63,12 @@ Description-Content-Type: text/markdown
60
63
 
61
64
  # pkstruct
62
65
 
63
- **Industrial-grade data structures and algorithms for Python 3.10**
66
+ **A production-grade, open-source Python library providing comprehensive data structures and algorithms with type hints, thread safety, and extensive testing.**
64
67
 
65
68
  [![PyPI](https://img.shields.io/pypi/v/pkstruct)](https://pypi.org/project/pkstruct/)
66
69
  [![Python](https://img.shields.io/pypi/pyversions/pkstruct)](https://pypi.org/project/pkstruct/)
67
70
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
68
- [![Tests](https://img.shields.io/badge/tests-898_✔️-success)](https://github.com/anomalyco/pkstruct)
71
+ [![Tests](https://img.shields.io/badge/tests-899_✔️-success)](https://github.com/prnvvv/pkstruct)
69
72
  [![Type Checked](https://img.shields.io/badge/mypy-strict-blue)](https://github.com/python/mypy)
70
73
  [![Code Style](https://img.shields.io/badge/code%20style-ruff-000000)](https://github.com/astral-sh/ruff)
71
74
 
@@ -73,6 +76,15 @@ Description-Content-Type: text/markdown
73
76
 
74
77
  ---
75
78
 
79
+ ## Why pkstruct?
80
+
81
+ | Need | pkstruct gives you |
82
+ |------|-------------------|
83
+ | **Interview prep** | Linked lists, trees, graphs with LeetCode-style helpers (palindrome, cycle detection, LCA, topological sort, etc.) |
84
+ | **Production code** | Thread-safe structures (`threading.RLock`), strict type hints, 898+ tests |
85
+ | **Learning DSA** | Consistent API across all structures, built-in ASCII visualization, runtime help system |
86
+ | **Competitive programming** | Drop-in collection of trees (BST, AVL, Red-Black, Fenwick, Segment, Interval) and graph algorithms (Dijkstra, Kruskal, Tarjan, etc.) |
87
+
76
88
  ## 📦 Installation
77
89
 
78
90
  ```bash
@@ -734,15 +746,25 @@ run_full_benchmark()
734
746
 
735
747
  ---
736
748
 
749
+ ## 🤝 Contributing
750
+
751
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) to get started.
752
+
753
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
754
+ - [Issue Tracker](https://github.com/prnvvv/pkstruct/issues)
755
+ - [Feature Requests](https://github.com/prnvvv/pkstruct/issues/new?template=feature_request.md)
756
+
757
+ ---
758
+
737
759
  ## 🔧 Development
738
760
 
739
761
  ```bash
740
762
  # Clone and install
741
- git clone https://github.com/anomalyco/pkstruct.git
763
+ git clone https://github.com/prnvvv/pkstruct.git
742
764
  cd pkstruct
743
765
  pip install -e ".[dev]"
744
766
 
745
- # Run tests (898 tests)
767
+ # Run tests (899 tests)
746
768
  pytest -v
747
769
 
748
770
  # Type check
@@ -752,14 +774,15 @@ mypy src/pkstruct
752
774
  ruff check src/pkstruct
753
775
  ```
754
776
 
755
- ## 📦 Publishing
756
-
757
- ```bash
758
- python -m build
759
- twine check dist/*
760
- twine upload dist/*
761
- ```
777
+ ---
762
778
 
763
779
  ## 📄 License
764
780
 
765
781
  MIT © pkstruct Contributors
782
+
783
+ ## 🙌 Credits
784
+
785
+ pkstruct is created and maintained by:
786
+
787
+ - **Prannavakhanth** ([@prnvvv](https://github.com/prnvvv)) — Founder & Lead Maintainer
788
+ - **Priyanka Kaliraj** ([@pri-23-k](https://github.com/pri-23-k)) — Co-Founder & Maintainer
@@ -2,12 +2,12 @@
2
2
 
3
3
  # pkstruct
4
4
 
5
- **Industrial-grade data structures and algorithms for Python 3.10**
5
+ **A production-grade, open-source Python library providing comprehensive data structures and algorithms with type hints, thread safety, and extensive testing.**
6
6
 
7
7
  [![PyPI](https://img.shields.io/pypi/v/pkstruct)](https://pypi.org/project/pkstruct/)
8
8
  [![Python](https://img.shields.io/pypi/pyversions/pkstruct)](https://pypi.org/project/pkstruct/)
9
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
10
- [![Tests](https://img.shields.io/badge/tests-898_✔️-success)](https://github.com/anomalyco/pkstruct)
10
+ [![Tests](https://img.shields.io/badge/tests-899_✔️-success)](https://github.com/prnvvv/pkstruct)
11
11
  [![Type Checked](https://img.shields.io/badge/mypy-strict-blue)](https://github.com/python/mypy)
12
12
  [![Code Style](https://img.shields.io/badge/code%20style-ruff-000000)](https://github.com/astral-sh/ruff)
13
13
 
@@ -15,6 +15,15 @@
15
15
 
16
16
  ---
17
17
 
18
+ ## Why pkstruct?
19
+
20
+ | Need | pkstruct gives you |
21
+ |------|-------------------|
22
+ | **Interview prep** | Linked lists, trees, graphs with LeetCode-style helpers (palindrome, cycle detection, LCA, topological sort, etc.) |
23
+ | **Production code** | Thread-safe structures (`threading.RLock`), strict type hints, 898+ tests |
24
+ | **Learning DSA** | Consistent API across all structures, built-in ASCII visualization, runtime help system |
25
+ | **Competitive programming** | Drop-in collection of trees (BST, AVL, Red-Black, Fenwick, Segment, Interval) and graph algorithms (Dijkstra, Kruskal, Tarjan, etc.) |
26
+
18
27
  ## 📦 Installation
19
28
 
20
29
  ```bash
@@ -676,15 +685,25 @@ run_full_benchmark()
676
685
 
677
686
  ---
678
687
 
688
+ ## 🤝 Contributing
689
+
690
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) to get started.
691
+
692
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
693
+ - [Issue Tracker](https://github.com/prnvvv/pkstruct/issues)
694
+ - [Feature Requests](https://github.com/prnvvv/pkstruct/issues/new?template=feature_request.md)
695
+
696
+ ---
697
+
679
698
  ## 🔧 Development
680
699
 
681
700
  ```bash
682
701
  # Clone and install
683
- git clone https://github.com/anomalyco/pkstruct.git
702
+ git clone https://github.com/prnvvv/pkstruct.git
684
703
  cd pkstruct
685
704
  pip install -e ".[dev]"
686
705
 
687
- # Run tests (898 tests)
706
+ # Run tests (899 tests)
688
707
  pytest -v
689
708
 
690
709
  # Type check
@@ -694,14 +713,15 @@ mypy src/pkstruct
694
713
  ruff check src/pkstruct
695
714
  ```
696
715
 
697
- ## 📦 Publishing
698
-
699
- ```bash
700
- python -m build
701
- twine check dist/*
702
- twine upload dist/*
703
- ```
716
+ ---
704
717
 
705
718
  ## 📄 License
706
719
 
707
720
  MIT © pkstruct Contributors
721
+
722
+ ## 🙌 Credits
723
+
724
+ pkstruct is created and maintained by:
725
+
726
+ - **Prannavakhanth** ([@prnvvv](https://github.com/prnvvv)) — Founder & Lead Maintainer
727
+ - **Priyanka Kaliraj** ([@pri-23-k](https://github.com/pri-23-k)) — Co-Founder & Maintainer
@@ -4,13 +4,25 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pkstruct"
7
- version = "0.1.1"
8
- description = "Industrial-grade data structures and algorithms toolkit for Python"
7
+ version = "0.1.2"
8
+ description = "A production-grade, open-source Python library providing comprehensive data structures and algorithms with type hints, thread safety, and extensive testing"
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
11
- authors = [{ name = "pkstruct Contributors" }]
11
+ authors = [
12
+ { name = "Prannavakhanth", email = "prannavakhanth12@gmail.com" },
13
+ { name = "Priyanka Kaliraj", email = "pri2303k@gmail.com" },
14
+ { name = "pkstruct Contributors" },
15
+ ]
12
16
  requires-python = ">=3.10"
13
- keywords = ["data-structures", "algorithms", "linked-list", "dsa", "collections"]
17
+ keywords = [
18
+ "data-structures", "algorithms", "dsa",
19
+ "linked-list", "stack", "queue", "deque",
20
+ "tree", "binary-search-tree", "avl-tree", "red-black-tree",
21
+ "b-tree", "bplus-tree", "segment-tree", "fenwick-tree", "interval-tree",
22
+ "graph", "graph-algorithms",
23
+ "competitive-programming", "interview",
24
+ "collections",
25
+ ]
14
26
  classifiers = [
15
27
  "Development Status :: 5 - Production/Stable",
16
28
  "Intended Audience :: Developers",
@@ -21,6 +33,8 @@ classifiers = [
21
33
  "Programming Language :: Python :: 3.11",
22
34
  "Programming Language :: Python :: 3.12",
23
35
  "Programming Language :: Python :: 3.13",
36
+ "Natural Language :: English",
37
+ "Operating System :: OS Independent",
24
38
  "Topic :: Software Development :: Libraries :: Python Modules",
25
39
  "Topic :: Education",
26
40
  "Topic :: Scientific/Engineering :: Information Analysis",
@@ -42,10 +56,10 @@ dev = [
42
56
  ]
43
57
 
44
58
  [project.urls]
45
- Homepage = "https://github.com/pkstruct/pkstruct"
46
- Repository = "https://github.com/pkstruct/pkstruct"
47
- Documentation = "https://pkstruct.readthedocs.io"
48
- "Bug Tracker" = "https://github.com/pkstruct/pkstruct/issues"
59
+ Homepage = "https://github.com/prnvvv/pkstruct"
60
+ Repository = "https://github.com/prnvvv/pkstruct"
61
+ Documentation = "https://github.com/prnvvv/pkstruct#readme"
62
+ "Bug Tracker" = "https://github.com/prnvvv/pkstruct/issues"
49
63
 
50
64
  [tool.hatch.build.targets.wheel]
51
65
  packages = ["src/pkstruct"]
pkstruct-0.1.1/AGENTS.md DELETED
@@ -1,38 +0,0 @@
1
- # pkstruct - Agent Guide
2
-
3
- ## Test Suite
4
- Run all tests:
5
- ```bash
6
- python -m pytest
7
- ```
8
- Tests are in `src/pkstruct/{linear,trees,graphs}/tests/` (898 tests).
9
-
10
- ## Architecture
11
- - **src-layout**: `src/pkstruct/`
12
- - **Build**: hatchling via `pyproject.toml`
13
- - **Python**: >= 3.10
14
- - **Python path**: `PYTHONPATH=src` (handled by pyproject.toml pytest config)
15
-
16
- ## Key Files
17
- | File | Purpose |
18
- |------|---------|
19
- | `_str.py` | `StrMixin` - `__str__()`, `display(sep)`, `visualize()` |
20
- | `_help.py` | `HelpMixin` - dynamic help system |
21
- | `_linear_shortcuts.py` | `LinearShortcutsMixin` - `next()`, `prev()` |
22
- | `_tree_shortcuts.py` | `TreeShortcutsMixin` - `root()`, `parent()`, `children()`, `left()`, `right()`, `sibling()`, `visualize()` |
23
- | `linear/linked_lists/_base.py` | `_LinkedListBase` - shared LL logic |
24
- | `linear/linked_lists/nodes.py` | `SinglyNode`, `DoublyNode`, `CircularNode` |
25
- | `trees/node.py` | `TreeNode`, `AVLNode`, `RBNode`, `BTreeNode`, `BPlusNode` |
26
- | `graphs/graph.py` | `Graph` class |
27
-
28
- ## Help System
29
- - `pkstruct.help()` → lists all structures
30
- - `pkstruct.help(ClassName)` → details + methods
31
- - `pkstruct.help("method_name")` → method docs across all classes
32
- - `instance.help()` / `instance.help("method")` / `instance.help(ClassName)`
33
-
34
- ## Validating Changes
35
- Before/after editing, run: `python -m pytest --tb=short -q`
36
-
37
- ## Git
38
- - No automated commits; use `git add -p` + `git commit` manually
@@ -1,9 +0,0 @@
1
- pytest>=7.4
2
- pytest-cov>=4.1
3
- pytest-xdist>=3.3
4
- pytest-benchmark>=4.0
5
- mypy>=1.7
6
- ruff>=0.1.6
7
- black>=23.11
8
- twine>=4.0
9
- build>=1.0
File without changes
File without changes
File without changes
File without changes
File without changes