.. Copyright 2020 Lawrence Livermore National Security, LLC and other Archspec Project Developers. See the top-level COPYRIGHT file for details. SPDX-License-Identifier: (Apache-2.0 OR MIT) =============== Getting Started =============== Archspec is a minimal-size python package that makes it easier to work with various aspects of a system architecture like CPU, network fabrics, etc. by providing: * A set of human-understandable names for each entity * Well defined APIs to query properties from objects or compare them .. note:: This project grew out of `Spack `_ and is currently under active development. At present it only models CPU microarchitectures but extensions to other aspects are expected in the future. --------------------- Software requirements --------------------- Archspec needs the following software: .. list-table:: :align: center * - Python - 2.7 or 3.5+ * - `six `_ - ^1.13.0 * - `click `_ - >=7.1.2 It is a multiplatform project and currently works on linux and MacOS. Porting to Windows is expected in the future. ---------------------- Installation from PyPI ---------------------- Archspec is published on `PyPI `_ so to install any release you can simply use ``pip``: .. code-block:: console $ pip install archspec[==] $ python -c "import archspec; print(archspec.__version__)" 0.1.4 This is the simplest way to install the package and getting started using it. --------------------------------- Installing from GitHub repository --------------------------------- Installing Archspec from a clone of its GitHub Repository requires `poetry `_. The preferred method to install this tool is via its custom installer outside of any virtual environment: .. code-block:: console $ curl -sSL https://install.python-poetry.org | python3 - You can refer to `Poetry's documentation `_ for further details or for other methods to install it. Once ``poetry`` is available we can proceed with cloning the repository and installing Archspec: .. code-block:: console $ which poetry /home/user/.poetry/bin/poetry $ git clone --recursive https://github.com/archspec/archspec.git $ cd archspec $ poetry install --no-dev Creating virtualenv archspec-0fr1r4aA-py2.7 in /home/culpo/.cache/pypoetry/virtualenvs Updating dependencies Resolving dependencies... (17.7s) Writing lock file Package operations: 2 installs, 0 updates, 0 removals - Installing click (7.1.2) - Installing six (1.15.0) - Installing archspec (0.1.4) $ poetry run python -c "import archspec; print(archspec.__version__)" 0.1.4 Poetry manages virtual environments for the user. Using ``poetry run`` is just one of the possibility offered by this tool, for further options you can refer to `its documentation `_. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Install Development Dependencies ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To install Archspec with its development dependencies you just need to omit the ``--no-dev`` option from the commands shown above: .. code-block:: console $ git clone --recursive https://github.com/archspec/archspec.git $ cd archspec $ poetry install Installing dependencies from lock file Package operations: 21 installs, 0 updates, 0 removals [...] - Installing pytest (4.6.9) - Installing jsonschema (3.2.0) - Installing pytest-cov (2.8.1) - Installing archspec (0.1.4) At this point you can run unit-tests, linters or other checks. When developing we recommend to use Python ^3.6 so that the latest versions of each development tool can be used: .. code-block:: console $ poetry run pytest ============================================================== test session starts =============================================================== platform linux -- Python 3.7.6, pytest-5.3.4, py-1.8.1, pluggy-0.13.1 rootdir: /home/culpo/tmp/archspec/docs-scratch/archspec plugins: cov-2.8.1 collected 255 items tests/test_archspec.py . [ 0%] tests/test_cpu.py ........................................................................................................................ [ 47%] ...................................................................................................................................... [100%] ============================================================== 255 passed in 0.73s =============================================================== $ poetry run black --check archspec tests All done! ✨ 🍰 ✨ 9 files would be left unchanged. $ poetry run pylint archspec -------------------------------------------------------------------- Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)