flexfloat 0.3.0__tar.gz → 0.3.1__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.
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.bumpversion.cfg +1 -1
- flexfloat-0.3.1/.github/workflows/docs.yml +66 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.github/workflows/pr-labeler.yml +1 -1
- flexfloat-0.3.1/.github/workflows/release.yml +143 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.github/workflows/version-bump.yml +23 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/MANIFEST.in +8 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/PKG-INFO +8 -1
- flexfloat-0.3.1/docs/Makefile +56 -0
- flexfloat-0.3.1/docs/README.md +89 -0
- flexfloat-0.3.1/docs/make.bat +78 -0
- flexfloat-0.3.1/docs/source/_autosummary/flexfloat.BigIntBitArray.rst +6 -0
- flexfloat-0.3.1/docs/source/_autosummary/flexfloat.BitArray.rst +6 -0
- flexfloat-0.3.1/docs/source/_autosummary/flexfloat.FlexFloat.rst +6 -0
- flexfloat-0.3.1/docs/source/_autosummary/flexfloat.ListBoolBitArray.rst +6 -0
- flexfloat-0.3.1/docs/source/_autosummary/flexfloat.ListInt64BitArray.rst +6 -0
- flexfloat-0.3.1/docs/source/_autosummary/flexfloat.math.rst +6 -0
- flexfloat-0.3.1/docs/source/_static/custom.css +148 -0
- flexfloat-0.3.1/docs/source/_templates/autosummary/class.rst +31 -0
- flexfloat-0.3.1/docs/source/_templates/layout.html +1 -0
- flexfloat-0.3.1/docs/source/api/bitarray.rst +175 -0
- flexfloat-0.3.1/docs/source/api/core.rst +131 -0
- flexfloat-0.3.1/docs/source/api/math.rst +136 -0
- flexfloat-0.3.1/docs/source/api/types.rst +14 -0
- flexfloat-0.3.1/docs/source/conf.py +220 -0
- flexfloat-0.3.1/docs/source/examples/index.rst +8 -0
- flexfloat-0.3.1/docs/source/index.rst +148 -0
- flexfloat-0.3.1/docs/source/installation.rst +113 -0
- flexfloat-0.3.1/docs/source/quickstart.rst +161 -0
- flexfloat-0.3.1/docs/source/user_guide/concepts.rst +221 -0
- flexfloat-0.3.1/docs/source/user_guide/index.rst +13 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/__init__.py +3 -1
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/core.py +238 -14
- flexfloat-0.3.1/flexfloat/math.py +799 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat.egg-info/PKG-INFO +8 -1
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat.egg-info/SOURCES.txt +27 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat.egg-info/requires.txt +8 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/pyproject.toml +9 -1
- flexfloat-0.3.1/tests/test_comparison.py +341 -0
- flexfloat-0.3.1/tests/test_math.py +815 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_power.py +13 -12
- flexfloat-0.3.0/.github/workflows/release.yml +0 -87
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.github/workflows/build-check.yml +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.github/workflows/manual-release.yml +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.github/workflows/test.yml +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.github/workflows/version-check.yml +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/.gitignore +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/LICENSE +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/README.md +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/bitarray/__init__.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/bitarray/bitarray.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/bitarray/bitarray_bigint.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/bitarray/bitarray_bool.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/bitarray/bitarray_int64.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/bitarray/bitarray_mixins.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/py.typed +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat/types.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat.egg-info/dependency_links.txt +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/flexfloat.egg-info/top_level.txt +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/scripts/validate_cicd.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/scripts/version_manager.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/setup.cfg +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/setup.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/__init__.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_addition.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_bigint_bitarray.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_bitarray.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_bitarray_implementations.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_conversions.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_division.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_flexfloat.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_multiplication.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_str_representation.py +0 -0
- {flexfloat-0.3.0 → flexfloat-0.3.1}/tests/test_subtraction.py +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: Build and Deploy Documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
release:
|
|
7
|
+
types: [published]
|
|
8
|
+
workflow_dispatch: # Allow manual triggering
|
|
9
|
+
|
|
10
|
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
pages: write
|
|
14
|
+
id-token: write
|
|
15
|
+
|
|
16
|
+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
17
|
+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
18
|
+
concurrency:
|
|
19
|
+
group: "pages"
|
|
20
|
+
cancel-in-progress: false
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
# Build job
|
|
24
|
+
build:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
fetch-depth: 0 # Full history needed for versioning
|
|
31
|
+
|
|
32
|
+
- name: Setup Python
|
|
33
|
+
uses: actions/setup-python@v5
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.11"
|
|
36
|
+
|
|
37
|
+
- name: Install dependencies
|
|
38
|
+
run: |
|
|
39
|
+
python -m pip install --upgrade pip
|
|
40
|
+
pip install -e ".[docs]"
|
|
41
|
+
|
|
42
|
+
- name: Setup Pages
|
|
43
|
+
id: pages
|
|
44
|
+
uses: actions/configure-pages@v4
|
|
45
|
+
|
|
46
|
+
- name: Build documentation
|
|
47
|
+
run: |
|
|
48
|
+
cd docs
|
|
49
|
+
make html
|
|
50
|
+
env:
|
|
51
|
+
# Set environment variable to ensure clean build
|
|
52
|
+
SPHINXBUILD: sphinx-build
|
|
53
|
+
|
|
54
|
+
- name: Upload artifact
|
|
55
|
+
uses: actions/upload-pages-artifact@v3
|
|
56
|
+
with:
|
|
57
|
+
path: ./docs/build/html
|
|
58
|
+
|
|
59
|
+
# Deployment job
|
|
60
|
+
deploy:
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
needs: build
|
|
63
|
+
steps:
|
|
64
|
+
- name: Deploy to GitHub Pages
|
|
65
|
+
id: deployment
|
|
66
|
+
uses: actions/deploy-pages@v4
|
|
@@ -96,7 +96,7 @@ jobs:
|
|
|
96
96
|
**🚀 Release Status**: This PR is labeled with the recommended version bump type. To trigger a release:
|
|
97
97
|
1. **Add the \`release\` label** to this PR when ready
|
|
98
98
|
2. The version will be automatically bumped when the \`release\` label is added
|
|
99
|
-
3. When merged, it will create a Git tag, GitHub release, and publish to PyPI
|
|
99
|
+
3. When merged, it will automatically create a Git tag, GitHub release, and publish to PyPI
|
|
100
100
|
|
|
101
101
|
**To prevent release**: Simply don\'t add the \`release\` label.
|
|
102
102
|
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [closed]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
release:
|
|
9
|
+
# Only run if the PR was merged and had the 'release' label
|
|
10
|
+
if: |
|
|
11
|
+
github.event.pull_request.merged == true &&
|
|
12
|
+
contains(github.event.pull_request.labels.*.name, 'release')
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
id-token: write # For trusted publishing to PyPI
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout main branch
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
24
|
+
ref: main
|
|
25
|
+
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.11"
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: |
|
|
33
|
+
python -m pip install --upgrade pip
|
|
34
|
+
pip install build twine
|
|
35
|
+
|
|
36
|
+
- name: Configure Git
|
|
37
|
+
run: |
|
|
38
|
+
git config --local user.email "action@github.com"
|
|
39
|
+
git config --local user.name "GitHub Action"
|
|
40
|
+
|
|
41
|
+
- name: Get version from pyproject.toml
|
|
42
|
+
id: get_version
|
|
43
|
+
run: |
|
|
44
|
+
VERSION=$(grep -E '^version = ' pyproject.toml | cut -d'"' -f2)
|
|
45
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
46
|
+
echo "Release version: $VERSION"
|
|
47
|
+
|
|
48
|
+
- name: Run tests
|
|
49
|
+
run: |
|
|
50
|
+
pip install -e ".[dev]"
|
|
51
|
+
pytest tests/
|
|
52
|
+
|
|
53
|
+
- name: Build package
|
|
54
|
+
run: |
|
|
55
|
+
python -m build
|
|
56
|
+
|
|
57
|
+
- name: Create Git tag
|
|
58
|
+
run: |
|
|
59
|
+
git tag -a "v${{ steps.get_version.outputs.version }}" -m "Release v${{ steps.get_version.outputs.version }}"
|
|
60
|
+
git push origin "v${{ steps.get_version.outputs.version }}"
|
|
61
|
+
|
|
62
|
+
- name: Generate release notes
|
|
63
|
+
id: release_notes
|
|
64
|
+
run: |
|
|
65
|
+
# Get the merge commit message
|
|
66
|
+
MERGE_COMMIT_MSG="${{ github.event.pull_request.title }}"
|
|
67
|
+
PR_BODY="${{ github.event.pull_request.body }}"
|
|
68
|
+
PR_NUMBER="${{ github.event.pull_request.number }}"
|
|
69
|
+
PR_AUTHOR="${{ github.event.pull_request.user.login }}"
|
|
70
|
+
|
|
71
|
+
# Determine version bump type from labels
|
|
72
|
+
BUMP_TYPE="patch"
|
|
73
|
+
LABELS="${{ join(github.event.pull_request.labels.*.name, ' ') }}"
|
|
74
|
+
if echo "$LABELS" | grep -q "major"; then
|
|
75
|
+
BUMP_TYPE="major"
|
|
76
|
+
elif echo "$LABELS" | grep -q "minor"; then
|
|
77
|
+
BUMP_TYPE="minor"
|
|
78
|
+
elif echo "$LABELS" | grep -q "patch"; then
|
|
79
|
+
BUMP_TYPE="patch"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Create release notes
|
|
83
|
+
cat << EOF > release_notes.md
|
|
84
|
+
## Changes in v${{ steps.get_version.outputs.version }}
|
|
85
|
+
|
|
86
|
+
This release was automatically created from PR #${PR_NUMBER} by @${PR_AUTHOR}.
|
|
87
|
+
|
|
88
|
+
**Version bump type**: ${BUMP_TYPE}
|
|
89
|
+
|
|
90
|
+
### Pull Request Details
|
|
91
|
+
**${MERGE_COMMIT_MSG}**
|
|
92
|
+
|
|
93
|
+
${PR_BODY}
|
|
94
|
+
|
|
95
|
+
### Artifacts
|
|
96
|
+
- **Python Wheel**: \`flexfloat-${{ steps.get_version.outputs.version }}-py3-none-any.whl\`
|
|
97
|
+
- **Source Distribution**: \`flexfloat-${{ steps.get_version.outputs.version }}.tar.gz\`
|
|
98
|
+
|
|
99
|
+
The package has been automatically published to [PyPI](https://pypi.org/project/flexfloat/${{ steps.get_version.outputs.version }}/).
|
|
100
|
+
EOF
|
|
101
|
+
|
|
102
|
+
echo "Release notes generated"
|
|
103
|
+
|
|
104
|
+
- name: Create GitHub Release
|
|
105
|
+
id: create_release
|
|
106
|
+
uses: softprops/action-gh-release@v2
|
|
107
|
+
with:
|
|
108
|
+
tag_name: "v${{ steps.get_version.outputs.version }}"
|
|
109
|
+
name: "Release v${{ steps.get_version.outputs.version }}"
|
|
110
|
+
body_path: release_notes.md
|
|
111
|
+
draft: false
|
|
112
|
+
prerelease: false
|
|
113
|
+
files: |
|
|
114
|
+
./dist/flexfloat-${{ steps.get_version.outputs.version }}-py3-none-any.whl
|
|
115
|
+
./dist/flexfloat-${{ steps.get_version.outputs.version }}.tar.gz
|
|
116
|
+
|
|
117
|
+
- name: Publish to PyPI
|
|
118
|
+
uses: pypa/gh-action-pypi-publish@v1.12.4
|
|
119
|
+
with:
|
|
120
|
+
verbose: true
|
|
121
|
+
|
|
122
|
+
- name: Comment on PR
|
|
123
|
+
uses: actions/github-script@v7
|
|
124
|
+
with:
|
|
125
|
+
script: |
|
|
126
|
+
await github.rest.issues.createComment({
|
|
127
|
+
owner: context.repo.owner,
|
|
128
|
+
repo: context.repo.repo,
|
|
129
|
+
issue_number: context.issue.number,
|
|
130
|
+
body: `🚀 **Release Published Successfully!**
|
|
131
|
+
|
|
132
|
+
**Version**: v${{ steps.get_version.outputs.version }}
|
|
133
|
+
|
|
134
|
+
**Release**: [View on GitHub](https://github.com/${context.repo.owner}/${context.repo.repo}/releases/tag/v${{ steps.get_version.outputs.version }})
|
|
135
|
+
|
|
136
|
+
**PyPI**: [View on PyPI](https://pypi.org/project/flexfloat/${{ steps.get_version.outputs.version }}/)
|
|
137
|
+
|
|
138
|
+
The package is now available for installation:
|
|
139
|
+
\`\`\`bash
|
|
140
|
+
pip install flexfloat==${{ steps.get_version.outputs.version }}
|
|
141
|
+
\`\`\`
|
|
142
|
+
`
|
|
143
|
+
});
|
|
@@ -67,6 +67,29 @@ jobs:
|
|
|
67
67
|
git commit -m "Bump version to ${{ steps.bump_version.outputs.new_version }} [skip ci]"
|
|
68
68
|
git push origin ${{ github.event.pull_request.head.ref }}
|
|
69
69
|
|
|
70
|
+
- name: Comment on PR about release process
|
|
71
|
+
uses: actions/github-script@v7
|
|
72
|
+
with:
|
|
73
|
+
script: |
|
|
74
|
+
await github.rest.issues.createComment({
|
|
75
|
+
owner: context.repo.owner,
|
|
76
|
+
repo: context.repo.repo,
|
|
77
|
+
issue_number: context.issue.number,
|
|
78
|
+
body: `🏷️ **Release Label Added - Version Bump Complete**
|
|
79
|
+
|
|
80
|
+
✅ **Version bumped to**: v${{ steps.bump_version.outputs.new_version }} (${{ steps.bump_type.outputs.bump_type }} release)
|
|
81
|
+
|
|
82
|
+
📦 **What happens when this PR is merged:**
|
|
83
|
+
1. A Git tag \`v${{ steps.bump_version.outputs.new_version }}\` will be created
|
|
84
|
+
2. A GitHub release will be published
|
|
85
|
+
3. The package will be automatically published to PyPI
|
|
86
|
+
4. Release notes will be generated from this PR's title and description
|
|
87
|
+
|
|
88
|
+
🚀 **Ready for release!** This PR is now configured for automatic release when merged to main.
|
|
89
|
+
|
|
90
|
+
To cancel the release, simply remove the \`release\` label.`
|
|
91
|
+
});
|
|
92
|
+
|
|
70
93
|
revert-version-bump:
|
|
71
94
|
if: |
|
|
72
95
|
github.event.action == 'unlabeled' &&
|
|
@@ -10,6 +10,14 @@ recursive-include flexfloat *.typed
|
|
|
10
10
|
recursive-include tests *.py
|
|
11
11
|
recursive-include scripts *.py
|
|
12
12
|
|
|
13
|
+
recursive-include docs *.bat
|
|
14
|
+
recursive-include docs *.css
|
|
15
|
+
recursive-include docs *.html
|
|
16
|
+
recursive-include docs *.md
|
|
17
|
+
recursive-include docs *.py
|
|
18
|
+
recursive-include docs *.rst
|
|
19
|
+
recursive-include docs Makefile
|
|
20
|
+
|
|
13
21
|
global-exclude *.pyc
|
|
14
22
|
global-exclude __pycache__
|
|
15
23
|
global-exclude .pytest_cache
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flexfloat
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: A library for arbitrary precision floating point arithmetic
|
|
5
5
|
Author: Ferran Sanchez Llado
|
|
6
6
|
License: MIT
|
|
@@ -30,6 +30,13 @@ Requires-Dist: build>=0.10; extra == "dev"
|
|
|
30
30
|
Requires-Dist: twine>=4.0; extra == "dev"
|
|
31
31
|
Requires-Dist: check-manifest>=0.49; extra == "dev"
|
|
32
32
|
Requires-Dist: PyYAML>=6.0; extra == "dev"
|
|
33
|
+
Provides-Extra: docs
|
|
34
|
+
Requires-Dist: sphinx>=7.0; extra == "docs"
|
|
35
|
+
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
|
|
36
|
+
Requires-Dist: sphinx-copybutton>=0.5; extra == "docs"
|
|
37
|
+
Requires-Dist: myst-parser>=2.0; extra == "docs"
|
|
38
|
+
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
|
|
39
|
+
Requires-Dist: requests>=2.25.0; extra == "docs"
|
|
33
40
|
Dynamic: license-file
|
|
34
41
|
|
|
35
42
|
# FlexFloat
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Minimal makefile for Sphinx documentation
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
# You can set these variables from the command line, and also
|
|
5
|
+
# from the environment for the first two.
|
|
6
|
+
SPHINXOPTS ?=
|
|
7
|
+
SPHINXBUILD ?= sphinx-build
|
|
8
|
+
SOURCEDIR = source
|
|
9
|
+
BUILDDIR = build
|
|
10
|
+
|
|
11
|
+
# Put it first so that "make" without argument is like "make help".
|
|
12
|
+
help:
|
|
13
|
+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
14
|
+
|
|
15
|
+
.PHONY: help Makefile
|
|
16
|
+
|
|
17
|
+
# Clean build directory
|
|
18
|
+
clean:
|
|
19
|
+
rm -rf $(BUILDDIR)/*
|
|
20
|
+
|
|
21
|
+
# Build HTML documentation
|
|
22
|
+
html:
|
|
23
|
+
@$(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O)
|
|
24
|
+
|
|
25
|
+
# Build HTML documentation with live reload (requires sphinx-autobuild)
|
|
26
|
+
livehtml:
|
|
27
|
+
sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O)
|
|
28
|
+
|
|
29
|
+
# Build PDF documentation (requires LaTeX)
|
|
30
|
+
pdf:
|
|
31
|
+
@$(SPHINXBUILD) -b latex "$(SOURCEDIR)" "$(BUILDDIR)/latex" $(SPHINXOPTS) $(O)
|
|
32
|
+
@make -C $(BUILDDIR)/latex all-pdf
|
|
33
|
+
|
|
34
|
+
# Build EPUB documentation
|
|
35
|
+
epub:
|
|
36
|
+
@$(SPHINXBUILD) -b epub "$(SOURCEDIR)" "$(BUILDDIR)/epub" $(SPHINXOPTS) $(O)
|
|
37
|
+
|
|
38
|
+
# Check links in documentation
|
|
39
|
+
linkcheck:
|
|
40
|
+
@$(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)/linkcheck" $(SPHINXOPTS) $(O)
|
|
41
|
+
|
|
42
|
+
# Build documentation for all supported formats
|
|
43
|
+
all: html epub
|
|
44
|
+
|
|
45
|
+
# Check documentation for issues
|
|
46
|
+
check:
|
|
47
|
+
@$(SPHINXBUILD) -b dummy "$(SOURCEDIR)" "$(BUILDDIR)/dummy" -W $(SPHINXOPTS) $(O)
|
|
48
|
+
|
|
49
|
+
# Build documentation treating warnings as errors
|
|
50
|
+
strict:
|
|
51
|
+
@$(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)/html" -W $(SPHINXOPTS) $(O)
|
|
52
|
+
|
|
53
|
+
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
54
|
+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
55
|
+
%: Makefile
|
|
56
|
+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# FlexFloat Documentation
|
|
2
|
+
|
|
3
|
+
This directory contains the Sphinx documentation for FlexFloat.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- Python 3.11 or higher
|
|
10
|
+
- FlexFloat package installed
|
|
11
|
+
|
|
12
|
+
### Setup
|
|
13
|
+
|
|
14
|
+
1. Install documentation dependencies:
|
|
15
|
+
```bash
|
|
16
|
+
pip install -e ".[docs]"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. Build the documentation:
|
|
20
|
+
```bash
|
|
21
|
+
cd docs
|
|
22
|
+
make html
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
3. View the documentation:
|
|
26
|
+
```bash
|
|
27
|
+
# Open docs/build/html/index.html in your browser
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Building Documentation
|
|
31
|
+
|
|
32
|
+
### Basic Build
|
|
33
|
+
```bash
|
|
34
|
+
cd docs
|
|
35
|
+
make html # Build HTML documentation
|
|
36
|
+
make clean # Clean build directory
|
|
37
|
+
make linkcheck # Check for broken links
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Advanced Options
|
|
41
|
+
```bash
|
|
42
|
+
make strict # Build with warnings as errors
|
|
43
|
+
make livehtml # Build with live reload (requires sphinx-autobuild)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Customization
|
|
47
|
+
|
|
48
|
+
### Theme and Styling
|
|
49
|
+
- Theme: Sphinx RTD Theme
|
|
50
|
+
- Custom CSS: `source/_static/custom.css`
|
|
51
|
+
|
|
52
|
+
### Configuration
|
|
53
|
+
Main configuration is in `source/conf.py`:
|
|
54
|
+
- Project metadata
|
|
55
|
+
- Extensions
|
|
56
|
+
- Theme options
|
|
57
|
+
- Version information
|
|
58
|
+
|
|
59
|
+
### Adding Content
|
|
60
|
+
|
|
61
|
+
#### New Pages
|
|
62
|
+
1. Create `.rst` files in appropriate directories
|
|
63
|
+
2. Add to relevant `toctree` directives
|
|
64
|
+
3. Follow existing structure and style
|
|
65
|
+
|
|
66
|
+
#### API Documentation
|
|
67
|
+
API docs are automatically generated from docstrings using:
|
|
68
|
+
- `sphinx.ext.autodoc`
|
|
69
|
+
- `sphinx.ext.autosummary`
|
|
70
|
+
- `sphinx.ext.napoleon` (for Google/NumPy style docstrings)
|
|
71
|
+
|
|
72
|
+
#### Examples
|
|
73
|
+
Add examples in `source/examples/` directory with practical use cases.
|
|
74
|
+
|
|
75
|
+
### Manual Deployment
|
|
76
|
+
```bash
|
|
77
|
+
# Build documentation
|
|
78
|
+
make html
|
|
79
|
+
|
|
80
|
+
# Deploy to GitHub Pages (manual)
|
|
81
|
+
# Copy docs/build/html/* to gh-pages branch
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Resources
|
|
85
|
+
|
|
86
|
+
- [Sphinx Documentation](https://www.sphinx-doc.org/)
|
|
87
|
+
- [reStructuredText Primer](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html)
|
|
88
|
+
- [Sphinx RTD Theme](https://sphinx-rtd-theme.readthedocs.io/)
|
|
89
|
+
- [Read the Docs](https://docs.readthedocs.io/)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
@ECHO OFF
|
|
2
|
+
|
|
3
|
+
pushd %~dp0
|
|
4
|
+
|
|
5
|
+
REM Command file for Sphinx documentation
|
|
6
|
+
|
|
7
|
+
if "%SPHINXBUILD%" == "" (
|
|
8
|
+
set SPHINXBUILD=sphinx-build
|
|
9
|
+
)
|
|
10
|
+
set SOURCEDIR=source
|
|
11
|
+
set BUILDDIR=build
|
|
12
|
+
|
|
13
|
+
%SPHINXBUILD% >NUL 2>NUL
|
|
14
|
+
if errorlevel 9009 (
|
|
15
|
+
echo.
|
|
16
|
+
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
|
17
|
+
echo.installed, then set the SPHINXBUILD environment variable to point
|
|
18
|
+
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
|
19
|
+
echo.may add the Sphinx directory to PATH.
|
|
20
|
+
echo.
|
|
21
|
+
echo.If you don't have Sphinx installed, grab it from
|
|
22
|
+
echo.https://www.sphinx-doc.org/
|
|
23
|
+
exit /b 1
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
if "%1" == "" goto help
|
|
27
|
+
|
|
28
|
+
if "%1" == "help" (
|
|
29
|
+
:help
|
|
30
|
+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
31
|
+
goto end
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
if "%1" == "clean" (
|
|
35
|
+
echo.Cleaning build directory...
|
|
36
|
+
rmdir /s /q %BUILDDIR% >nul 2>&1
|
|
37
|
+
echo.Build directory cleaned.
|
|
38
|
+
goto end
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
if "%1" == "html" (
|
|
42
|
+
echo.Building HTML documentation...
|
|
43
|
+
%SPHINXBUILD% -b html %SOURCEDIR% %BUILDDIR%\html %SPHINXOPTS% %O%
|
|
44
|
+
if errorlevel 1 exit /b 1
|
|
45
|
+
echo.
|
|
46
|
+
echo.Build finished. The HTML pages are in %BUILDDIR%\html.
|
|
47
|
+
goto end
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
if "%1" == "livehtml" (
|
|
51
|
+
echo.Starting live HTML build server...
|
|
52
|
+
sphinx-autobuild %SOURCEDIR% %BUILDDIR%\html %SPHINXOPTS% %O%
|
|
53
|
+
goto end
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
if "%1" == "linkcheck" (
|
|
57
|
+
echo.Checking external links...
|
|
58
|
+
%SPHINXBUILD% -b linkcheck %SOURCEDIR% %BUILDDIR%\linkcheck %SPHINXOPTS% %O%
|
|
59
|
+
if errorlevel 1 exit /b 1
|
|
60
|
+
echo.
|
|
61
|
+
echo.Link check complete; look for any errors in the above output or in %BUILDDIR%\linkcheck\output.txt.
|
|
62
|
+
goto end
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
if "%1" == "strict" (
|
|
66
|
+
echo.Building HTML documentation with warnings as errors...
|
|
67
|
+
%SPHINXBUILD% -b html %SOURCEDIR% %BUILDDIR%\html -W %SPHINXOPTS% %O%
|
|
68
|
+
if errorlevel 1 exit /b 1
|
|
69
|
+
echo.
|
|
70
|
+
echo.Build finished successfully with no warnings.
|
|
71
|
+
goto end
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
|
75
|
+
goto end
|
|
76
|
+
|
|
77
|
+
:end
|
|
78
|
+
popd
|