knit-graphs 0.0.6__py3-none-any.whl → 0.0.8__py3-none-any.whl

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 (47) hide show
  1. knit_graphs-0.0.6.dist-info/licenses/LICENSE → LICENSE +21 -21
  2. README.md +75 -0
  3. docs/Makefile +20 -0
  4. docs/make.bat +35 -0
  5. docs/source/api/knit_graphs.Course.rst +7 -0
  6. docs/source/api/knit_graphs.Knit_Graph.rst +7 -0
  7. docs/source/api/knit_graphs.Knit_Graph_Visualizer.rst +7 -0
  8. docs/source/api/knit_graphs.Loop.rst +7 -0
  9. docs/source/api/knit_graphs.Pull_Direction.rst +7 -0
  10. docs/source/api/knit_graphs.Yarn.rst +7 -0
  11. docs/source/api/knit_graphs.artin_wale_braids.Crossing_Direction.rst +7 -0
  12. docs/source/api/knit_graphs.artin_wale_braids.Loop_Braid_Graph.rst +7 -0
  13. docs/source/api/knit_graphs.artin_wale_braids.Wale.rst +7 -0
  14. docs/source/api/knit_graphs.artin_wale_braids.Wale_Braid.rst +7 -0
  15. docs/source/api/knit_graphs.artin_wale_braids.Wale_Braid_Word.rst +7 -0
  16. docs/source/api/knit_graphs.artin_wale_braids.Wale_Group.rst +7 -0
  17. docs/source/api/knit_graphs.artin_wale_braids.rst +23 -0
  18. docs/source/api/knit_graphs.basic_knit_graph_generators.rst +7 -0
  19. docs/source/api/knit_graphs.rst +32 -0
  20. docs/source/conf.py +335 -0
  21. docs/source/index.rst +71 -0
  22. docs/source/installation.rst +67 -0
  23. knit_graphs/Course.py +156 -104
  24. knit_graphs/Knit_Graph.py +249 -186
  25. knit_graphs/Knit_Graph_Visualizer.py +675 -0
  26. knit_graphs/Loop.py +141 -155
  27. knit_graphs/Pull_Direction.py +68 -23
  28. knit_graphs/Yarn.py +424 -267
  29. knit_graphs/__init__.py +3 -3
  30. knit_graphs/_base_classes.py +173 -0
  31. knit_graphs/artin_wale_braids/Crossing_Direction.py +74 -15
  32. knit_graphs/artin_wale_braids/Loop_Braid_Graph.py +95 -62
  33. knit_graphs/artin_wale_braids/Wale.py +169 -93
  34. knit_graphs/artin_wale_braids/Wale_Braid.py +50 -30
  35. knit_graphs/artin_wale_braids/Wale_Braid_Word.py +99 -54
  36. knit_graphs/artin_wale_braids/Wale_Group.py +136 -88
  37. knit_graphs/basic_knit_graph_generators.py +251 -0
  38. knit_graphs-0.0.8.dist-info/LICENSE +21 -0
  39. {knit_graphs-0.0.6.dist-info → knit_graphs-0.0.8.dist-info}/METADATA +33 -24
  40. knit_graphs-0.0.8.dist-info/RECORD +42 -0
  41. {knit_graphs-0.0.6.dist-info → knit_graphs-0.0.8.dist-info}/WHEEL +1 -1
  42. knit_graphs/__about__.py +0 -4
  43. knit_graphs/knit_graph_generators/__init__.py +0 -0
  44. knit_graphs/knit_graph_generators/basic_knit_graph_generators.py +0 -248
  45. knit_graphs/knit_graph_visualizer/Stitch_Visualizer.py +0 -427
  46. knit_graphs/knit_graph_visualizer/__init__.py +0 -0
  47. knit_graphs-0.0.6.dist-info/RECORD +0 -22
docs/source/conf.py ADDED
@@ -0,0 +1,335 @@
1
+ """
2
+ Configuration file for the Sphinx documentation builder.
3
+ =============================================================================
4
+ SPHINX DOCUMENTATION CONFIGURATION
5
+ =============================================================================
6
+ This file configures how Sphinx generates documentation from your Python code.
7
+ For the full list of built-in configuration values, see:
8
+ https://www.sphinx-doc.org/en/master/usage/configuration.html
9
+ """
10
+
11
+ import os
12
+ import sys
13
+ from datetime import datetime
14
+ from importlib.metadata import PackageNotFoundError, version
15
+
16
+ # =============================================================================
17
+ # PATH SETUP
18
+ # =============================================================================
19
+ # Add the project root and source directory to Python path so Sphinx can import your modules
20
+
21
+ # Path to your source code (adjust if not using src/ layout)
22
+ sys.path.insert(0, os.path.abspath('..')) # Project root
23
+ sys.path.insert(0, os.path.abspath('../src')) # Source directory
24
+ sys.path.insert(0, os.path.abspath('.')) # Docs directory
25
+
26
+ # =============================================================================
27
+ # PROJECT INFORMATION
28
+ # =============================================================================
29
+
30
+ project = 'knit-graphs'
31
+ copyright = f'{datetime.now().year}, Megan Hofmann'
32
+ author = 'Megan Hofmann'
33
+
34
+ try:
35
+ # Get version from installed package metadata
36
+ # This reads from pyproject.toml when the package is installed
37
+ version = version("knit-graphs")
38
+ except PackageNotFoundError:
39
+ # Package is not installed (e.g., during development)
40
+ # This happens when running from source without installation
41
+ version = "0.0.0+dev"
42
+
43
+ release = version
44
+
45
+ # =============================================================================
46
+ # GENERAL CONFIGURATION
47
+ # =============================================================================
48
+
49
+ # Extensions to enable (these add functionality to Sphinx)
50
+ extensions = [
51
+ # Core Sphinx extensions
52
+ 'sphinx.ext.autodoc', # Generate docs from docstrings
53
+ 'sphinx.ext.autosummary', # Generate summary tables automatically
54
+ 'sphinx.ext.viewcode', # Add [source] links to documentation
55
+ 'sphinx.ext.napoleon', # Support Google/NumPy docstring styles
56
+ 'sphinx.ext.intersphinx', # Link to other project docs (e.g., Python docs)
57
+ 'sphinx.ext.githubpages', # Publish to GitHub Pages (.nojekyll file)
58
+ 'sphinx.ext.todo', # Support TODO items in docs
59
+ 'sphinx.ext.coverage', # Check documentation coverage
60
+ 'sphinx.ext.doctest', # Test code snippets in documentation
61
+
62
+ # Third-party extensions (these need to be installed)
63
+ 'sphinx_autodoc_typehints', # Better type hint rendering
64
+ 'myst_parser', # Support for Markdown files (optional)
65
+ ]
66
+
67
+ # =============================================================================
68
+ # SOURCE FILE CONFIGURATION
69
+ # =============================================================================
70
+
71
+ # File extensions that Sphinx will process
72
+ source_suffix = {
73
+ '.rst': None, # RestructuredText (default)
74
+ '.md': 'myst_parser', # Markdown (requires myst_parser extension)
75
+ }
76
+
77
+ # The master toctree document (main page)
78
+ master_doc = 'index'
79
+
80
+ # Files and directories to exclude from processing
81
+ exclude_patterns = [
82
+ '_build', # Build output directory
83
+ 'Thumbs.db', # Windows thumbnail cache
84
+ '.DS_Store', # macOS metadata
85
+ '**.ipynb_checkpoints', # Jupyter notebook checkpoints
86
+ ]
87
+
88
+ # =============================================================================
89
+ # HTML OUTPUT CONFIGURATION
90
+ # =============================================================================
91
+
92
+ # The theme to use for HTML pages
93
+ html_theme = 'sphinx_rtd_theme' # Read the Docs theme (clean, professional)
94
+
95
+ # Directories containing static files (CSS, JS, images)
96
+ html_static_path = ['_static']
97
+
98
+
99
+ # Theme-specific options
100
+ html_theme_options = {
101
+ 'logo_only': False, # Show project name with logo
102
+ 'display_version': True, # Show version in sidebar
103
+ 'prev_next_buttons_location': 'bottom', # Navigation button placement
104
+ 'style_external_links': True, # Style external links differently
105
+ 'vcs_pageview_mode': '', # Version control integration
106
+ 'style_nav_header_background': '#2980B9', # Header background color
107
+
108
+ # Table of contents options
109
+ 'collapse_navigation': True, # Collapse subsections in nav
110
+ 'sticky_navigation': True, # Keep navigation visible on scroll
111
+ 'navigation_depth': 4, # Maximum navigation depth
112
+ 'includehidden': True, # Include hidden toctrees
113
+ 'titles_only': False, # Show subsection titles in nav
114
+ }
115
+
116
+ # Additional HTML options
117
+ html_title = f'{project} Documentation' # Browser window title
118
+ html_short_title = project # Short title for navigation
119
+
120
+
121
+ # html_logo = '_static/logo.png'
122
+ # html_favicon = '_static/favicon.ico'
123
+
124
+ # Show "Edit on GitHub" links (requires proper URL)
125
+ # html_context = {
126
+ # 'github_user': 'your-username',
127
+ # 'github_repo': 'your-repo-name',
128
+ # 'github_version': 'main',
129
+ # 'doc_path': 'docs',
130
+ # }
131
+
132
+ # =============================================================================
133
+ # AUTODOC CONFIGURATION
134
+ # =============================================================================
135
+ # Controls how automatic documentation is generated from Python code
136
+
137
+ # Default options for all autodoc directives
138
+ autodoc_default_options = {
139
+ 'members': True, # Include all members
140
+ 'member-order': 'bysource', # Order members as they appear in source
141
+ 'special-members': '__init__', # Include __init__ methods
142
+ 'undoc-members': True, # Include members without docstrings
143
+ 'exclude-members': '__weakref__', # Exclude certain members
144
+ 'show-inheritance': True, # Show class inheritance
145
+ 'inherited-members': True, # Include inherited methods
146
+ }
147
+
148
+ # How to display class signatures
149
+ autodoc_class_signature = "mixed" # Show __init__ parameters with class
150
+
151
+ # Order of members in documentation
152
+ autodoc_member_order = 'bysource' # bysource, alphabetical, or groupwise
153
+
154
+ # Mock imports for modules that might not be available during doc building
155
+ # Add any modules that cause import errors during doc building
156
+ autodoc_mock_imports = [
157
+ # 'numpy',
158
+ # 'pandas',
159
+ # 'some_optional_dependency',
160
+ ]
161
+
162
+ # =============================================================================
163
+ # AUTOSUMMARY CONFIGURATION
164
+ # =============================================================================
165
+ # Controls automatic generation of summary tables
166
+
167
+ autosummary_generate = True # Generate stub pages for autosummary
168
+ autosummary_imported_members = True # Include imported members
169
+
170
+ # =============================================================================
171
+ # NAPOLEON CONFIGURATION (DOCSTRING STYLES)
172
+ # =============================================================================
173
+ # Configures support for Google and NumPy style docstrings
174
+
175
+ napoleon_google_docstring = True # Parse Google-style docstrings
176
+ napoleon_numpy_docstring = True # Parse NumPy-style docstrings
177
+ napoleon_include_init_with_doc = True # Include __init__ docstring with class
178
+ napoleon_include_private_with_doc = False # Don't document private members
179
+ napoleon_include_special_with_doc = True # Document special methods (__str__, etc.)
180
+ napoleon_use_admonition_for_examples = False # Style for Examples sections
181
+ napoleon_use_admonition_for_notes = False # Style for Notes sections
182
+ napoleon_use_admonition_for_references = False # Style for References sections
183
+ napoleon_use_ivar = False # Use :ivar: for instance variables
184
+ napoleon_use_param = True # Use :param: for parameters
185
+ napoleon_use_rtype = True # Use :rtype: for return types
186
+ napoleon_preprocess_types = False # Preprocess type annotations
187
+ napoleon_type_aliases = None # Custom type aliases
188
+ napoleon_attr_annotations = True # Include attribute annotations
189
+
190
+ # =============================================================================
191
+ # INTERSPHINX CONFIGURATION
192
+ # =============================================================================
193
+ # Links to external documentation
194
+
195
+ intersphinx_mapping = {
196
+ 'python': ('https://docs.python.org/3', None),
197
+ 'numpy': ('https://numpy.org/doc/stable/', None),
198
+ 'pandas': ('https://pandas.pydata.org/pandas-docs/stable/', None),
199
+ 'matplotlib': ('https://matplotlib.org/stable/', None),
200
+ 'scipy': ('https://docs.scipy.org/doc/scipy/', None),
201
+ 'sklearn': ('https://scikit-learn.org/stable/', None),
202
+ 'typing': ('https://typing.readthedocs.io/en/latest/', None),
203
+ }
204
+
205
+ # =============================================================================
206
+ # TYPE HINTS CONFIGURATION
207
+ # =============================================================================
208
+ # Controls how type hints are displayed in documentation
209
+
210
+ typehints_fully_qualified = False # Use short names for types
211
+ always_document_param_types = True # Always show parameter types
212
+ typehints_document_rtype = True # Document return types
213
+ typehints_use_rtype = True # Use :rtype: directive for return types
214
+
215
+ # =============================================================================
216
+ # TODO EXTENSION CONFIGURATION
217
+ # =============================================================================
218
+
219
+ todo_include_todos = True # Include TODO items in documentation
220
+ todo_emit_warnings = True # Warn about TODO items during build
221
+
222
+ # =============================================================================
223
+ # COVERAGE EXTENSION CONFIGURATION
224
+ # =============================================================================
225
+ # Checks what's documented vs what's not
226
+
227
+ coverage_ignore_modules = [
228
+ # Add modules to ignore in coverage reports
229
+ ]
230
+ coverage_ignore_functions = [
231
+ # Add functions to ignore in coverage reports
232
+ ]
233
+ coverage_ignore_classes = [
234
+ # Add classes to ignore in coverage reports
235
+ ]
236
+
237
+ # =============================================================================
238
+ # ADDITIONAL CUSTOMIZATION
239
+ # =============================================================================
240
+
241
+ # Control how module names are displayed
242
+ add_module_names = False # Don't prepend module names to functions
243
+
244
+ # Show author information in output
245
+ show_authors = False # Don't show author info by default
246
+
247
+ # Syntax highlighting style
248
+ pygments_style = 'sphinx' # Code highlighting theme
249
+
250
+ # Language for content that doesn't specify a language
251
+ language = 'en'
252
+
253
+
254
+ # =============================================================================
255
+ # CUSTOM FUNCTIONS AND SETUP
256
+ # =============================================================================
257
+
258
+ def autodoc_skip_member(app, what, name, obj, skip, options):
259
+ """
260
+ Custom function to control which members are included in documentation.
261
+
262
+ Args:
263
+ app: The Sphinx application instance
264
+ what: The type of the object (module, class, function, etc.)
265
+ name: The fully qualified name of the object
266
+ obj: The object itself
267
+ skip: Boolean indicating if this member should be skipped
268
+ options: The options given to the directive
269
+
270
+ Returns:
271
+ Boolean indicating whether to skip this member
272
+ """
273
+ # Add custom logic to skip certain members
274
+ # Example: Skip private methods that start with underscore
275
+ # if name.startswith('_') and not name.startswith('__'):
276
+ # return True
277
+
278
+ return skip
279
+
280
+
281
+ def setup(app):
282
+ """
283
+ Custom Sphinx setup function.
284
+ This function is called when Sphinx initializes and allows you to
285
+ add custom functionality, connect to events, etc.
286
+
287
+ Args:
288
+ app: The Sphinx application instance
289
+ """
290
+ # Connect custom functions to Sphinx events
291
+ app.connect('autodoc-skip-member', autodoc_skip_member)
292
+
293
+ # Return extension metadata
294
+ return {
295
+ 'version': version,
296
+ 'parallel_read_safe': True,
297
+ 'parallel_write_safe': True,
298
+ }
299
+
300
+ # =============================================================================
301
+ # CHECKLIST FOR SPHINX SETUP
302
+ # =============================================================================
303
+ # When using this configuration:
304
+ #
305
+ # 1. BASIC SETUP:
306
+ # - [ ] Update project, author, and copyright information
307
+ # - [ ] Set correct version/release values
308
+ # - [ ] Verify source code paths are correct
309
+ # - [ ] Create docs/_static/ directory for custom files
310
+ #
311
+ # 2. CONTENT CREATION:
312
+ # - [ ] Create docs/index.rst (main page)
313
+ # - [ ] Create docs/installation.rst (installation guide)
314
+ # - [ ] Create docs/usage.rst (usage examples)
315
+ # - [ ] Create docs/api.rst (API reference)
316
+ #
317
+ # 3. CUSTOMIZATION:
318
+ # - [ ] Choose and configure theme options
319
+ # - [ ] Add logo and favicon to _static/
320
+ # - [ ] Create custom CSS/JS if needed
321
+ # - [ ] Configure intersphinx for your dependencies
322
+ #
323
+ # 4. TESTING:
324
+ # - [ ] Run: poetry run sphinx-build docs/ docs/_build/html/
325
+ # - [ ] Check output in docs/_build/html/index.html
326
+ # - [ ] Fix any warnings or errors
327
+ #
328
+ # 5. GITHUB PAGES:
329
+ # - [ ] Ensure githubpages extension is enabled
330
+ # - [ ] Configure GitHub repository Pages settings
331
+ # - [ ] Test deployment with GitHub Actions workflow
332
+ #
333
+ # COMMON COMMANDS:
334
+ # poetry run sphinx-apidoc -o docs/source/api src/your_project_name/ --force --module-first # Generate API docs
335
+ # poetry run sphinx-build docs/source/ docs/build/html/ # Build documentation
docs/source/index.rst ADDED
@@ -0,0 +1,71 @@
1
+ knit-graphs
2
+ ===========
3
+
4
+ A graph representation of knitted structures where each loop is a node and edges represent yarn and stitch relationships.
5
+
6
+ .. image:: https://img.shields.io/github/workflow/status/mhofmann-Khoury/knit-graphs/CI
7
+ :target: https://github.com/mhofmann-Khoury/knit-graphs/actions
8
+ :alt: Build Status
9
+
10
+ .. image:: https://img.shields.io/pypi/v/knit-graphs
11
+ :target: https://pypi.org/project/knit-graphs/
12
+ :alt: PyPI Version
13
+
14
+ .. image:: https://img.shields.io/pypi/pyversions/knit-graphs
15
+ :target: https://pypi.org/project/knit-graphs/
16
+ :alt: Python Versions
17
+
18
+ Quick Start
19
+ -----------
20
+
21
+ Installation
22
+ ~~~~~~~~~~~~
23
+
24
+ Install from PyPI:
25
+
26
+ .. code-block:: bash
27
+
28
+ pip install knit-graphs
29
+
30
+ Or install from source:
31
+
32
+ .. code-block:: bash
33
+
34
+ git clone https://github.com/mhofmann-Khoury/knit-graphs.git
35
+ cd your-repo
36
+ poetry install
37
+
38
+ Documentation Contents
39
+ ----------------------
40
+
41
+ .. toctree::
42
+ :maxdepth: 2
43
+ :caption: User Guide
44
+
45
+ installation
46
+
47
+
48
+ .. toctree::
49
+ :maxdepth: 4
50
+ :caption: API Reference
51
+
52
+ api/knit_graphs
53
+
54
+ Support and Community
55
+ ---------------------
56
+
57
+ * **GitHub Repository**: https://github.com/mhofmann-Khoury/knit-graphs
58
+ * **Issue Tracker**: https://github.com/mhofmann-Khoury/knit-graphs/issues
59
+ * **PyPI Package**: https://pypi.org/project/knit-graphs/
60
+
61
+ License
62
+ -------
63
+
64
+ This project is licensed under the MIT License.
65
+
66
+ Indices and tables
67
+ ==================
68
+
69
+ * :ref:`genindex`
70
+ * :ref:`modindex`
71
+ * :ref:`search`
@@ -0,0 +1,67 @@
1
+ Installation
2
+ ============
3
+
4
+ Requirements
5
+ ------------
6
+
7
+ * Python 3.11 or higher
8
+ * pip or Poetry package manager
9
+ * networkx for Graph data structures.
10
+ * plotly for Knit Graph visualization
11
+
12
+ Install from PyPI
13
+ -----------------
14
+
15
+ The easiest way to install the package is from PyPI:
16
+
17
+ .. code-block:: bash
18
+
19
+ pip install knit-graphs
20
+
21
+ Or using Poetry:
22
+
23
+ .. code-block:: bash
24
+
25
+ poetry add knit-graphs
26
+
27
+ Install from Source
28
+ -------------------
29
+
30
+ To install the latest development version from source:
31
+
32
+ .. code-block:: bash
33
+
34
+ git clone https://github.com/mhofmann-Khoury/knit-graphs.git
35
+ cd your-repo
36
+ pip install -e .
37
+
38
+ Or with Poetry:
39
+
40
+ .. code-block:: bash
41
+
42
+ git clone https://github.com/mhofmann-Khoury/knit-graphs.git
43
+ cd your-repo
44
+ poetry install
45
+
46
+ Development Installation
47
+ ------------------------
48
+
49
+ For development and contributing:
50
+
51
+ .. code-block:: bash
52
+
53
+ git clone https://github.com/mhofmann-Khoury/knit-graphs.git
54
+ cd your-repo
55
+ poetry install --with dev,docs
56
+
57
+ This installs the package with all development dependencies including testing and documentation tools.
58
+
59
+ Verify Installation
60
+ -------------------
61
+
62
+ To verify the installation worked correctly:
63
+
64
+ .. code-block:: python
65
+
66
+ import knit-graphs
67
+ print(knit-graphs.__version__)