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.
- pkstruct-0.1.2/.github/ISSUE_TEMPLATE/bug_report.md +46 -0
- pkstruct-0.1.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
- pkstruct-0.1.2/.github/ISSUE_TEMPLATE/feature_request.md +37 -0
- pkstruct-0.1.2/.github/pull_request_template.md +29 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/.gitignore +2 -1
- {pkstruct-0.1.1 → pkstruct-0.1.2}/CHANGELOG.md +16 -0
- pkstruct-0.1.2/CODE_OF_CONDUCT.md +113 -0
- pkstruct-0.1.2/CONTRIBUTING.md +133 -0
- pkstruct-0.1.2/MAINTAINERS.md +62 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/MANIFEST.in +2 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/PKG-INFO +41 -18
- {pkstruct-0.1.1 → pkstruct-0.1.2}/README.md +31 -11
- {pkstruct-0.1.1 → pkstruct-0.1.2}/pyproject.toml +22 -8
- pkstruct-0.1.1/AGENTS.md +0 -38
- pkstruct-0.1.1/requirements-dev.txt +0 -9
- {pkstruct-0.1.1 → pkstruct-0.1.2}/LICENSE +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/SECURITY.md +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_display.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_help.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_linear_shortcuts.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_str.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/_tree_shortcuts.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/connectivity.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/directed.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/exceptions.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/graph.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/mst.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/scc.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/shortest_path.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/tests/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/tests/test_graph.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/tests/test_graph_advanced.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/topo_sort.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/traversal.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/visualization.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/graphs/weighted.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/deques/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/deques/deque.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/deques/linked_deque.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/exceptions.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/_base.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/circular_linked_list.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/doubly_linked_list.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/nodes.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/linked_lists/singly_linked_list.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/circular_queue.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/linked_queue.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/priority_queue.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/queues/queue.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/array_stack.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/linked_stack.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/stacks/stack.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/test_edge_cases.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/test_linked_list.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/tests/test_visualization.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/benchmark.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/debug_tools.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/helpers.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/utils/iterators.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/ascii_visualizer.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/linked_list_visualizer.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/py.typed +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/benchmarking/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/debugging/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/exceptions/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/serializers/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/threading/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/validators/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/shared/visualization/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/avl.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/balancing.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/bplus.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/bst.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/btree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/exceptions.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/fenwick_tree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/interval_tree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/node.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/red_black.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/segment_tree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_avl.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_bplus.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_bst.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_btree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_fenwick_tree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_interval_tree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_red_black.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tests/test_segment_tree.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/traversal.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/tree_helpers.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/utils/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/utils/complexity_helpers.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/visualization/__init__.py +0 -0
- {pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/trees/visualization/ascii_renderer.py +0 -0
- {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.
|
|
@@ -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.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pkstruct
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
5
|
-
Project-URL: Homepage, https://github.com/
|
|
6
|
-
Project-URL: Repository, https://github.com/
|
|
7
|
-
Project-URL: Documentation, https://pkstruct
|
|
8
|
-
Project-URL: Bug Tracker, https://github.com/
|
|
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
|
-
**
|
|
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
|
[](https://pypi.org/project/pkstruct/)
|
|
66
69
|
[](https://pypi.org/project/pkstruct/)
|
|
67
70
|
[](LICENSE)
|
|
68
|
-
[](https://github.com/prnvvv/pkstruct)
|
|
69
72
|
[](https://github.com/python/mypy)
|
|
70
73
|
[](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/
|
|
763
|
+
git clone https://github.com/prnvvv/pkstruct.git
|
|
742
764
|
cd pkstruct
|
|
743
765
|
pip install -e ".[dev]"
|
|
744
766
|
|
|
745
|
-
# Run 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
|
-
|
|
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
|
-
**
|
|
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
|
[](https://pypi.org/project/pkstruct/)
|
|
8
8
|
[](https://pypi.org/project/pkstruct/)
|
|
9
9
|
[](LICENSE)
|
|
10
|
-
[](https://github.com/prnvvv/pkstruct)
|
|
11
11
|
[](https://github.com/python/mypy)
|
|
12
12
|
[](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/
|
|
702
|
+
git clone https://github.com/prnvvv/pkstruct.git
|
|
684
703
|
cd pkstruct
|
|
685
704
|
pip install -e ".[dev]"
|
|
686
705
|
|
|
687
|
-
# Run 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
|
-
|
|
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.
|
|
8
|
-
description = "
|
|
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 = [
|
|
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 = [
|
|
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/
|
|
46
|
-
Repository = "https://github.com/
|
|
47
|
-
Documentation = "https://pkstruct
|
|
48
|
-
"Bug Tracker" = "https://github.com/
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pkstruct-0.1.1 → pkstruct-0.1.2}/src/pkstruct/linear/visualization/linked_list_visualizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|