Installing composites#

From the distributed packages#

Wheels are published on PyPI for Windows, Linux and macOS, for Python 3.10 and newer, and installed with:

python -m pip install composites

NumPy is the only run-time requirement.

From the source code#

The module composites.core is written in Cython and compiled to C++, such that installing from the source code requires a C++ compiler, e.g. MSVC on Windows, GCC on Linux or Clang on macOS. Cython is installed automatically as a build requirement, see pyproject.toml, which also holds the package metadata and the version:

git clone https://github.com/saullocastro/composites
cd composites
python -m pip install .

For development, the extension can be built in place instead, such that the tests and the documentation use the source tree when run from its root directory; setup.py also writes composites/version.py with the version of pyproject.toml:

python setup.py build_ext --inplace
python -m pytest tests

The documentation is built with the requirements of ci_requirements_doc.txt, the notebooks also requiring pandoc:

python -m sphinx -b html doc/source doc/build/html

In the browser, with Pyodide#

From version 0.9.21, a WebAssembly wheel is published on PyPI for Pyodide 314 (CPython 3.14), such that composites runs in the browser, e.g. in JupyterLite or in a web page with Pyodide:

import micropip
await micropip.install('composites')

from composites import laminated_plate, to_json
lam = laminated_plate([0, 45, -45, 90], plyt=0.125e-3,
                      laminaprop=(142e9, 8.7e9, 0.28, 5.1e9, 5.1e9, 3.2e9))
print(lam.ABD)
s = to_json(lam)  # strict JSON, readable with JSON.parse in JavaScript

Using composites from Cython#

The declarations of the classes and functions of composites.core are distributed with the package in core.pxd, such that Cython code can use them with, e.g.:

from composites.core cimport Laminate

The function composites.get_include() returns the directory of the installed package, which contains core.pxd.