01
+Native cores, Python surface
++ Quadrature, linear algebra, and special functions stay in Fortran and C++. The API + you import is Python, built with f2py, SIP, and Meson. +
+diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8cb8cdf..fc0011c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,8 +6,11 @@ updates: interval: "weekly" day: "friday" - - package-ecosystem: "uv" - directory: "/" + - package-ecosystem: "npm" + directory: "/web" schedule: interval: "weekly" day: "friday" + groups: + dev-dependencies: + dependency-type: "development" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..d08c840 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,60 @@ +name: Deploy + +on: + push: + branches: [master] + pull_request: + branches: [master] + workflow_dispatch: + +# `pages: write` + `id-token: write` are what actions/deploy-pages needs to +# publish; `contents: read` is enough for the checkout. +permissions: + contents: read + pages: write + id-token: write + +# Never let two deploys race. In-progress runs finish so a half-published +# artifact is not left behind. +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: 22 + cache: npm + cache-dependency-path: package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Typecheck + run: npm run typecheck + + - name: Build + run: npm run build + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v5 + with: + path: dist + + deploy: + # Pull requests get the build + typecheck gate but must not publish. + if: github.event_name != 'pull_request' + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml deleted file mode 100644 index 0fbfe5b..0000000 --- a/.github/workflows/docs_build.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Documentation -permissions: - pages: write - id-token: write - -on: - pull_request: - branches: [ master ] - workflow_call: - inputs: &build-docs-inputs - deploy: - type: boolean - required: false - default: false - - workflow_dispatch: - inputs: *build-docs-inputs - -concurrency: - group: docs-build - -jobs: - - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v7 - - - name: Setup uv - uses: astral-sh/setup-uv@v7 - - - name: Build Documentation - run: uv run --with=zensical zensical build --clean --strict - - - name: Set Artifact Name - id: artifact-name - run: | - echo "artifact_name=${{ github.run_id }}[${{ github.run_attempt }}]--docs-artifacts" \ - | tee -a $GITHUB_OUTPUT - - - name: Upload Pages Artifacts - uses: actions/upload-pages-artifact@v5 - with: - name: ${{ steps.artifact-name.outputs.artifact_name }} - path: site/ - - - name: Deploy to GitHub Pages - if: ${{ inputs.deploy }} - uses: actions/deploy-pages@v5 - with: - artifact_name: ${{ steps.artifact-name.outputs.artifact_name }} diff --git a/.gitignore b/.gitignore index f8a207a..47fb24d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ +node_modules +dist .venv -site + +# editors / os +.DS_Store +*.log diff --git a/404.html b/404.html new file mode 100644 index 0000000..a6032e8 --- /dev/null +++ b/404.html @@ -0,0 +1,63 @@ + + + +
+ + + + + + Skip to content ++ The page you asked for is not here. It may have been moved, renamed, or it never + existed. The repository it belonged to might live under a different name now. +
+ + +Community
++ eggzec is a small group of engineers working on scientific computing in the open. Every + repository takes issues and pull requests. +
++ Start by picking up an issue, then open a draft pull request against the + repository default branch and we will review it. +
+ +
M. Saud Zahir
-
- ---
-
- Co-founder and maintainer. Software developer focused on Python, C++,
- and Java for high-performance scientific computing.
-
--
M. Laraib Ali
-
- ---
-
- Co-founder and maintainer. Backend and systems engineer specializing in
- Python and Go, Linux automation, PostgreSQL, observability, and containers.
-
--
Noor Mustafa
-
- ---
-
- Maintainer. Java-focused backend developer working with Spring, Nginx,
- IntelliJ IDEA, Kotlin, and Python.
-
-
NULAPACK
-
- ---
-
- Numerical linear algebra package with Fortran core subroutines and
- Python/C++ interfaces.
-
- [:fontawesome-solid-book: Documentation](https://nulapack.github.io/NULAPACK/)
- [:fontawesome-brands-github: GitHub](https://github.com/NULAPACK/NULAPACK)
-
-- :fontawesome-brands-github: **polpack**
-
- ---
-
- High-performance special functions and polynomial families with a
- Fortran numerical core.
-
- [:fontawesome-solid-book: Documentation](https://eggzec.github.io/polpack/)
- [:fontawesome-brands-github: GitHub](https://github.com/eggzec/polpack)
-
-- :fontawesome-brands-github: **kronrod**
-
- ---
-
- Gauss-Kronrod quadrature rule generator for reusable high-accuracy
- numerical integration.
-
- [:fontawesome-solid-book: Documentation](https://eggzec.github.io/kronrod/)
- [:fontawesome-brands-github: GitHub](https://github.com/eggzec/kronrod)
-
-- :fontawesome-brands-github: **spinterp**
-
- ---
-
- Sparse Grid Interpolation Toolbox for Python
-
- [:fontawesome-solid-book: Documentation](https://eggzec.github.io/spinterp/)
- [:fontawesome-brands-github: GitHub](https://github.com/eggzec/spinterp)
-
-- :fontawesome-brands-github: **sparse_grid**
-
- ---
-
- Pure-Python sparse grid implementation with hierarchical index generation
- and fast hat-basis evaluation.
-
- [:fontawesome-solid-book: Documentation](https://eggzec.github.io/sparse_grid/)
- [:fontawesome-brands-github: GitHub](https://github.com/eggzec/sparse_grid)
-
-- :fontawesome-brands-github: **cordic**
-
- ---
-
- CORDIC-based trigonometric, hyperbolic, exponential, logarithmic, and
- root-function evaluation library for Python.
-
- [:fontawesome-solid-book: Documentation](https://eggzec.github.io/cordic/)
- [:fontawesome-brands-github: GitHub](https://github.com/eggzec/cordic)
-
--
JavaDOE
-
- ---
-
- Java Design of Experiments library including Box-Behnken, central
- composite, and factorial designs.
-
- [:fontawesome-brands-github: GitHub](https://github.com/Java-DOE/JavaDOE)
-
-- :fontawesome-brands-github: **qweb**
-
- ---
-
- Web interface for Sun Grid Engine with job submission, monitoring, and
- cluster management endpoints.
-
- [:fontawesome-brands-github: GitHub](https://github.com/eggzec/qweb)
-
-+ + Science + Computing +
+ + + ++ We build the numerical layer: + Fortran and C++ cores wrapped for Python, with uncertainty + propagation, design of experiments, and optimization on top. Everything is + published to PyPI, documented, and tested on every push. +
+ + + +Shipping
+Projects
++ Every project below is a repository you can clone today. Most ship a package, a + documentation site, and a CI pipeline that runs the tests on every push. +
+How we work
+01
++ Quadrature, linear algebra, and special functions stay in Fortran and C++. The API + you import is Python, built with f2py, SIP, and Meson. +
+02
++ Propagate error by moments, by Monte Carlo, or by derivative. mcerp, soerp, and ad + cover all three against the same modelling code. +
+03
++ Packages go to PyPI with a versioned docs site, Ruff and pytest in CI, and coverage + reported on the pull request that changed it. +
+Toolchain
++ uv for environments, Meson and CMake for native builds, Ruff and pytest for the gate, + Zensical and Doxygen for the docs. +
+Community
++ eggzec is maintained by three engineers working across Python, C++, Fortran, Java, and + Go. Issues and pull requests are welcome on every repository. +
++ Pick a project, read the docs, open an issue. Good first contributions are tagged on + every repo that has them. +
+ +Projects
++ Sorted by what the code does rather than what language it is written in. Each card + opens the repository; documentation and package links sit alongside it where they + exist. +
++ They are all built the same way. +
++ A numerical core in Fortran or C++, a small Python API on top, and a test suite + that runs on every push. Pick one, read its README, and open an issue on + github.com/eggzec + if anything is unclear. +
+${person.role}
+${person.bio}
+${person.role}
+${person.bio}
+