diff --git a/.github/ISSUE_TEMPLATE/planned_feature_request.md b/.github/ISSUE_TEMPLATE/planned_feature_request.md new file mode 100644 index 0000000..4617b5a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/planned_feature_request.md @@ -0,0 +1,192 @@ +--- +name: Planned Implementation +about: Document a planned feature implementation for the project roadmap +title: '' +labels: 'WIP', `backlog` +assignees: '' + +--- + + +## â„šī¸ General Information + + + +**Component Name:** some_name + +**Component Location:** src/FatPy/some_params.py + +**Suggested Python Name:** calc_some_param + +**FABER WG Relation:** WG6.1 + +**Priority:** (1-10 scale) + +**Technical Complexity:** (1-10 scale) + +**Estimated Effort:** (1-10 scale) + +**Dependencies:** + +**Related Issues:** + +--- + + +## 📋 Problem Description + +Problem description goes here. + +### Mathematical Formulation + + +$\text{Simple mathematical formulation here}$ + +$$ +\text{Or more complex} \\ +\text{mathematical formulation here} +$$ + +**Latex text:** + +```plaintext +$\text{Simple mathematical formulation here}$ + +$$ +\text{Or more complex} \\ +\text{mathematical formulation here} +$$ +``` + + +## 🔧 Implementation Guideline + + + + +### Function Signature + + + +```python +import numpy as np +from numpy.typing import ArrayLike, Optional, NDArray + +def function_name( + input1: ArrayLike, + input2: Optional[ArrayLike] = None, + param1: float = 0.5, + param2: int = 10 +) -> NDArray[np.float64]: + """Brief description of the function. + + Some more detailed description of the function's purpose and behavior. + + Args: + input1: Description of the first input. + input2: Description of the second input (optional). + param1: Description of the first parameter (default is 0.5). + param2: Description of the second parameter (default is 10). + + Returns: + Description of the output. + + Raises: + ValueError: Description of when this error is raised. + TypeError: Description of when this error is raised. + """ + pass # Implementation goes here +``` + + + + + + + + + +## ✅ Validation & Testing + +#### Test Cases + + + +| Test Case | Inputs | Expected Outputs | Notes | +|-----------|--------|------------------|-------| +| Example 1 | | | | +| Example 2 | | | | + +### Acceptance Criteria + +- [ ] Implementation meets all specified requirements +- [ ] Code is well-documented and follows style guidelines +- [ ] All test cases pass successfully + + + +## 📚 References & Resources + + + +- [Reference 1](https://example.com) + diff --git a/.github/ISSUE_TEMPLATE/planned_implementation.md b/.github/ISSUE_TEMPLATE/planned_implementation.md deleted file mode 100644 index 7067eb0..0000000 --- a/.github/ISSUE_TEMPLATE/planned_implementation.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -name: Planned Implementation -about: Document a planned feature implementation for the project roadmap -title: '[IMPL] ' -labels: 'planned-implementation' -assignees: '' - ---- - - - -## â„šī¸ General Information - - - -**Component Name:** - -**Component Location:** - -**Suggested Python Name:** - -**FABER WG Relation:** - -**Brief Description:** - -**Priority:** (1-10 scale) - -**Technical Complexity:** (1-10 scale) - -**Estimated Effort:** (1-10 scale) - -**Dependencies:** - -- -- - ---- - -## Implementation Details - -### 📋 Specification - -#### Mathematical Formulation - - -#### Inputs - -| Parameter | Symbol | Type | Description | Units | Constraints | -|-----------|--------|------|-------------|-------|-------------| -| | | | | | | -| | | | | | | - -#### Outputs - -| Parameter | Symbol | Type | Description | Units | Range | -|-----------|--------|------|-------------|-------|-------| -| | | | | | | -| | | | | | | - -#### Expected Behavior - - -### 🔧 Implementation Guidelines - -#### Function Signature - -```python -# Suggested function signature -def function_name(): - pass -``` - -#### Code Structure - - - -#### Error Handling - - - -### ✅ Validation & Testing - -#### Test Cases - - - -| Test Case | Inputs | Expected Outputs | Notes | -|-----------|--------|------------------|-------| -| Example 1 | | | | -| Example 2 | | | | - -#### Validation Criteria - - - -- [ ] Mathematical accuracy verified against literature -- [ ] Edge cases handled appropriately -- [ ] Output format matches specification - -### 📚 References & Resources - - - -### 📝 Technical Notes - - - -#### Performance Considerations - -- - -#### Edge Cases to Handle - -- - -#### Special Requirements - -- diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 1ce9e98..d71dfc5 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,13 +4,10 @@ "ms-python.vscode-pylance", "charliermarsh.ruff", "ms-toolsai.jupyter", - "github.copilot", "tamasfe.even-better-toml", "aaron-bond.better-comments", - "github.vscode-github-actions", "bierner.markdown-mermaid", - "alexcvzz.vscode-sqlite", "njpwerner.autodocstring", "redhat.vscode-yaml", ] -} +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 826180c..3c6f9ff 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,21 +1,14 @@ { // Python settings "python.analysis.autoSearchPaths": true, - "python.analysis.diagnosticSeverityOverrides": { - "reportMissingImports": "none" - }, "python.analysis.extraPaths": [ "${workspaceFolder}/src" ], - "python.envFile": "${workspaceFolder}/.env", "python.terminal.activateEnvironment": true, "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", // Test settings "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, - "python.testing.cwd": "${workspaceFolder}/tests", - "python.testing.pytestPath": "${workspaceFolder}/.venv/bin/pytest", - "python.testing.autoTestDiscoverOnSaveEnabled": true, "iis.configDir": "", // AutoDocstring settings "autoDocstring.docstringFormat": "google", @@ -32,4 +25,4 @@ "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format", "tag:yaml.org,2002:python/object/apply:pymdownx.slugs.slugify mapping" ] -} +} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index beecc56..843536b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Python implementations of various fatigue life algorithms" readme = "README.md" requires-python = ">=3.12" license = { text = "MIT" } -authors = [{ name = "Jan Vyborny", email = "jan.vyborny2@gmail.com" }] +authors = [{ name = "FaberOrg", email = "jan.vyborny2@gmail.com" }] classifiers = [ "Development Status :: 3 - Alpha", @@ -18,10 +18,10 @@ classifiers = [ ] dependencies = [ - "matplotlib>=3.10.6", - "numpy>=2.3.3", - "pandas>=2.3.2", - # "scipy>=1.15.1", + "matplotlib>=3.10.8", + "numpy>=2.4.3", + "pandas>=3.0.1", + "scipy>=1.17.1", ] [project.urls] @@ -31,20 +31,18 @@ dependencies = [ "FABER" = "https://faber-cost.eu/" "LinkedIn" = "https://www.linkedin.com/company/faber-cost/about/" -[tool.uv] -dev-dependencies = [ - "mypy>=1.18.2", - "ruff>=0.13.1", - "pre-commit>=4.3.0", - "pytest>=8.4.2", +[dependency-groups] +dev = [ + "mypy>=1.19.1", + "ruff>=0.15.7", + "pre-commit>=4.5.1", + "pytest>=9.0.2", "pytest-cov>=7.0.0", "pytest-mock>=3.15.1", - "pytest-mypy>=1.0.1", - "pytest-ruff>=0.5", "mkdocs>=1.6.1", - "mkdocs-material[imaging]>=9.6.20", - "mkdocstrings[python]>=0.30.1", - "mkdocs-autorefs>=1.4.3", + "mkdocs-material[imaging]>=9.7.6", + "mkdocstrings[python]>=1.0.3", + "mkdocs-autorefs>=1.4.4", ] [tool.pytest.ini_options] @@ -52,10 +50,8 @@ pythonpath = ["src"] testpaths = ["tests"] minversion = "6.0" addopts = [ - "-rfEP", # show failures, errors, and passed with output - "-vv", # verbose output - "--ruff", # run ruff on all tests - "--mypy", # run mypy on all tests + "-rfEP", # show failures, errors, and passed with output + "-vv", # verbose output # "--no-header", # do not show header # "-s", # do not capture output diff --git a/requirements-dev.txt b/requirements-dev.txt index 7bbc546..13e1e35 100644 Binary files a/requirements-dev.txt and b/requirements-dev.txt differ diff --git a/requirements.txt b/requirements.txt index 119d5ba..e7bdf4b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -matplotlib>=3.10.0 -numpy>=2.2.2 -pandas>=2.2.3 -scipy>=1.15.1 +matplotlib>=3.10.8 +numpy>=2.4.3 +pandas>=3.0.1 +scipy>=1.17.1 \ No newline at end of file