Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ Information for developers
How to compile
--------------

To build ``libsemigroups_pybind11``, it is first required to have a system
install of ``libsemigroups``. This is explained in full detail in the
``libsemigroups``
To build libsemigroups_pybind11_, it is first required to have a system
install of libsemigroups_. This is explained in full detail in the
libsemigroups_
`documentation <https://libsemigroups.github.io/libsemigroups/md_install.html>`_.

If you only intend to contribute to ``libsemigroups_pybind11``, and not
``libsemigroups``, it is sufficient to have the conda version of
``libsemigroups``.
If you only intend to contribute to libsemigroups_pybind11_, and not
libsemigroups_, it is sufficient to have the conda version of
libsemigroups_.

If you intend to develop both ``libsemigroups`` and ``libsemigroups_pybind11``,
it is recommended to build ``libsemigroups`` from the sources. Furthermore, it is
recommended to install ``libsemigroups`` without ``hpcombi``. Then, with
``libsemigroups`` installed, the Python bindings can be ``pip`` installed. This
If you intend to develop both libsemigroups_ and libsemigroups_pybind11_,
it is recommended to build libsemigroups_ from the sources. Furthermore, it is
recommended to install libsemigroups_ without ``hpcombi``. Then, with
libsemigroups_ installed, the Python bindings can be ``pip`` installed. This
may require the environment variable ``$PKG_CONFIG_PATH`` to be edited.

To create an environment with, ``pip``, correct environment variables, and some
Expand Down Expand Up @@ -63,7 +63,7 @@ For a system-wide installation (requires sudo):
In both cases, ``-j8`` instructs the compiler to use 8 threads (adjust based on your
system).

To build the Python bindings (with CCache) inside the ``libsemigroups_pybind11``
To build the Python bindings (with CCache) inside the libsemigroups_pybind11_
directory:

.. code-block:: console
Expand All @@ -73,10 +73,10 @@ directory:
Building the skeleton of a class
--------------------------------

If you are adding the bindings for a ``libsemigroups`` class that does not yet
exist in ``libsemigroups_pybind11``, please consider running the script
If you are adding the bindings for a libsemigroups_ class that does not yet
exist in libsemigroups_pybind11_, please consider running the script
``generate_pybind11.py`` found in the ``etc/`` directory of
``libsemigroups``.
libsemigroups_.

For example:

Expand Down Expand Up @@ -105,7 +105,7 @@ ________________________________
A basic guide on how to create bindings for a simple function can be found
`here <https://pybind11.readthedocs.io/en/stable/basics.html#creating-bindings-for-a-simple-function>`__.

In the ``libsemigroups`` context, to bind the function ``bar`` from the class
In the libsemigroups_ context, to bind the function ``bar`` from the class
``foo`` to the module ``m``:

.. code-block:: cpp
Expand Down Expand Up @@ -235,13 +235,13 @@ the code for the bindings of the ``Runner`` class will start with:
pybind11::class_<Runner, Reporter> runner(m, "Runner");
^^^^^^^^

Making your functions available in ``libsemigroups_pybind11``
Making your functions available in libsemigroups_pybind11_
-------------------------------------------------------------

If you followed the instructions in the ``generate_pybind11.py`` script from the
``libsemigroups`` project, the class you have added bindings for should now be
libsemigroups_ project, the class you have added bindings for should now be
available in ``_libsemigroups_pybind11`` (note the leading underscore). How to
make this available in ``libsemigroups_pybind11`` depends on several factors.
make this available in libsemigroups_pybind11_ depends on several factors.

A class with no helpers or templates
____________________________________
Expand Down Expand Up @@ -366,7 +366,7 @@ A sample ``index.rst`` file may look like this:
=====

This page describes the functionality for the class in
``libsemigroups_pybind11``.
libsemigroups_pybind11_.


.. toctree::
Expand Down Expand Up @@ -413,7 +413,7 @@ _______________________________
Inside `<docs/source/index.rst>`__, you will find the table of contents tree
(toctree) for this project. Within that, you will find the names of files
(without the ``.rst`` extension) of different classifications of structures that
``libsemigroups_pybind11`` implements, such as congruences, digraphs, semigroups
libsemigroups_pybind11_ implements, such as congruences, digraphs, semigroups
and words. Within each of these files, there is another toctree containing
the paths to the docs of various classes.

Expand Down Expand Up @@ -497,3 +497,5 @@ whilst contributing are::
├── tests/
│ └── test_class_name.py
└── CONTRIBUTING.rst (this file!)

.. _libsemigroups_pybind11: https://libsemigroups.github.io/libsemigroups_pybind11/
11 changes: 11 additions & 0 deletions docs/source/_static/links.rst
Comment thread
Joseph-Edwards marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,14 @@
.. _Graphviz: https://www.graphviz.org
.. _pybind11: https://pybind11.readthedocs.io/en/stable/#
.. _HPCombi: https://libsemigroups.github.io/HPCombi/
.. _GAP: https://www.gap-system.org/
.. _ACE: https://gap-packages.github.io/ace/
.. _Cython: https://cython.org/
.. _cppyy: https://cppyy.readthedocs.io/en/latest/
.. _Eigen: https://libeigen.gitlab.io/
.. _pip: https://pip.pypa.io/en/stable/
.. _mamba: https://mamba.readthedocs.io/en/latest/
.. _Anaconda: https://www.anaconda.com/docs/main
.. _Miniconda: https://continuumio-docs.readthedocs-hosted.com/miniconda/

.. |libsemigroups_pybind11| replace:: :doc:`libsemigroups_pybind11 </index>`
2 changes: 1 addition & 1 deletion docs/source/authors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Contributors

- `Nicolas Thiery`_ helped the authors understand the ecosystem for integrating
C++ code into python, and to some preliminary versions of the python bindings
for libsemigroups_ using cython, and cppyy.
for libsemigroups_ using Cython_, and cppyy_.
- Chinmaya Nagpal (chinmaya1011@gmail.com) resolved a great many issues with the
packaging.
- James Swent (jws20@st-andrews.ac.uk) contributed several implementations for
Expand Down
40 changes: 20 additions & 20 deletions docs/source/changelog-v0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ Changelog - version 0
v0.10.1 (released 29/03/2023)
-----------------------------

This release increases the required version of ``libsemigroups`` to v2.7.1,
This release increases the required version of libsemigroups_ to v2.7.1,
which contains some bug fixes.

v0.10.0 (released 23/03/2023)
-----------------------------

This is a minor release adding some new functionality from ``libsemigroups``:
This is a minor release adding some new functionality from libsemigroups_:

- ukkonen: add support for ``Ukkonen`` + helpers by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/132
Expand Down Expand Up @@ -70,26 +70,26 @@ v0.7.3 (released 07/02/2023)
----------------------------

This is a minor version with some improvements and adjustments for forthcoming
changes in ``libsemigroups``.
changes in libsemigroups_.

v0.7.2 (released 12/01/2023)
----------------------------

This is a minor change related to some forthcoming changes in ``libsemigroups``.
This is a minor change related to some forthcoming changes in libsemigroups_.

v0.7.1 (released 11/01/2023)
----------------------------

This is a very minor release updating the required versions of some dependencies
to permit the ``libsemigroups_pybind11`` wheel to be built with python 3.11, and
to adapt for some recent changes in ``libsemigroups``.
to permit the |libsemigroups_pybind11| wheel to be built with python 3.11, and
to adapt for some recent changes in libsemigroups_.

v0.7.0 (released 15/12/2022)
----------------------------

This release contains a number of improvements and fixes, and adds support for
the library of finite semigroup and monoid presentations in ``libsemigroups``
and the ``Stephen`` class from ``libsemigroups``.
the library of finite semigroup and monoid presentations in libsemigroups_
and the ``Stephen`` class from libsemigroups_.

- Add functionality for the presentation helper ``replace_word`` by @MTWhyte in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/84
Expand All @@ -104,23 +104,23 @@ v0.6.0 (released 02/12/2022)
----------------------------

This release contains a number of improvements and fixes, and adds support for
the ``Konieczny`` class from ``libsemigroups``.
the ``Konieczny`` class from libsemigroups_.

- Add missing header include in cong.cpp by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/77
- Remove trivial rules by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/79
- Fix string encoding in ``KnuthBendix`` by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/82
- Add support for ``Konieczny`` from ``libsemigroups`` by @james-d-mitchell in
- Add support for ``Konieczny`` from libsemigroups_ by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/80
- Better ``__repr__`` for ``KnuthBendix`` by @james-d-mitchell in
https://github.com/libsemigroups/libsemigroups_pybind11/pull/86

v0.5.0 (released 16/11/2022)
----------------------------

This is a minor release adding support for the ``libsemigroups`` class
This is a minor release adding support for the libsemigroups_ class
``Kambites`` for computing small overlap monoids.

v0.4.3 (released 09/11/2022)
Expand All @@ -133,20 +133,20 @@ package.
v0.4.2 (released 28/10/2022)
----------------------------

Update for version 2.3.2 of ``libsemigroups`` which contains some bugfixes.
Update for version 2.3.2 of libsemigroups_ which contains some bugfixes.

v0.4.1 (released 11/10/2022)
----------------------------

Update for version 2.3.1 of ``libsemigroups`` which contains some bugfixes in
Update for version 2.3.1 of libsemigroups_ which contains some bugfixes in
the ``Sims1`` class, the ``Presentation`` class and its helper functions.

v0.4.0 (released 04/10/2022)
----------------------------

This is a minor release with a couple of new features added:

- ``libsemigroups`` constants ``POSITIVE_INFINITY``, ``NEGATIVE_INFINITY``, and
- libsemigroups_ constants ``POSITIVE_INFINITY``, ``NEGATIVE_INFINITY``, and
``UNDEFINED`` are properly supported;
- ``libsemigroups::matrix_helper::pow`` is added as a method for ``__pow__`` for
some types of matrices (those not defined over a runtime semiring);
Expand All @@ -156,15 +156,15 @@ and some minor improvements (the tests now use ``pytest`` exclusively).
v0.3.0 (released 29/09/2022)
----------------------------

This is a minor release adding support for the ``libsemigroups`` class ``Sims1``
This is a minor release adding support for the libsemigroups_ class ``Sims1``
for computing low index congruences, and some further minor changes to the
``Presentation`` class.

v0.2.2 (released 16/09/2022)
----------------------------

A very minor release to futureproof some tests against new versions of
``libsemigroups``.
libsemigroups_.

v0.2.1 (released 12/09/2022)
----------------------------
Expand All @@ -174,7 +174,7 @@ A very minor release trying to fix an issue in the release process.
v0.2.0 (released 10/09/2022)
----------------------------

This is a minor release adding support for the ``libsemigroups`` class template
This is a minor release adding support for the libsemigroups_ class template
``Presentation`` by @MTWhyte and @james-d-mitchell in:

https://github.com/libsemigroups/libsemigroups_pybind11/pull/49
Expand Down Expand Up @@ -211,13 +211,13 @@ v0.1.4 (released 12/11/2021)
----------------------------

Yet another minor release updating the C++ code for some forthcoming changes in
``libsemigroups``.
libsemigroups_.

v0.1.3 (released 11/11/2021)
----------------------------

A minor release updating the C++ code for some forthcoming changes in
``libsemigroups``.
libsemigroups_.

v0.1.2 (released 11/11/2021)
----------------------------
Expand All @@ -238,5 +238,5 @@ Some minor issues were resolved and the function ``follow_path`` was added for
v0.0.0 (released 24/09/2021)
----------------------------

First release of the package, some functionality of ``libsemigroups`` is not yet
First release of the package, some functionality of libsemigroups_ is not yet
available.
8 changes: 4 additions & 4 deletions docs/source/changelog-v1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,14 @@ v1.0.0 (released 12/08/2025)
----------------------------

This is a major release that significantly expands the API of
``libsemigroups_pybind11`` to expose much of the functionality implemented in
|libsemigroups_pybind11| to expose much of the functionality implemented in
version 3 of libsemigroups_. The extent of the changes made in this release
means that it is likely that any code written with earlier versions of
``libsemigroups_pybind11`` will no longer work.
|libsemigroups_pybind11| will no longer work.

The structure of ``libsemigroups_pybind11`` is very tightly linked to the
The structure of |libsemigroups_pybind11| is very tightly linked to the
structure of libsemigroups_. Therefore, some of the differences between
v0.10.1 and v1.0.0 of ``libsemigroups_pybind11`` will be related to the
v0.10.1 and v1.0.0 of |libsemigroups_pybind11| will be related to the
differences between v2 and v3 of libsemigroups_, such as changes to class names
and interfaces. These changes can be found in the
`libsemigroups changelog <https://libsemigroups.github.io/libsemigroups/md_changelog-v3.html>`_.
2 changes: 1 addition & 1 deletion docs/source/data-structures/adapters/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Adapters
========

This page describes some of the adapters used in ``libsemigroups_pybind11``.
This page describes some of the adapters used in |libsemigroups_pybind11|.
These are classes that permit the generic classes in libsemigroups_ to be
used with arbitrary types, provided that the adapters are implemented for these
types.
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/constants/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Constants
=========

This page describes some of the constants used in ``libsemigroups_pybind11``.
This page describes some of the constants used in |libsemigroups_pybind11|.

Constant types
--------------
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/elements/bipart/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Bipartitions and blocks
=======================

This page describes the functionality for bipartitions and blocks in
``libsemigroups_pybind11``.
|libsemigroups_pybind11|.

.. toctree::
:maxdepth: 1
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/elements/matrix/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Matrix
======

This page describes the functionality for matrices over various semirings in
``libsemigroups_pybind11``.
|libsemigroups_pybind11|.

.. toctree::
:maxdepth: 1
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/elements/pbr/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Partitioned binary relations (PBRs)
===================================

This page describes the functionality for partitioned binary relations (PBRs) in
``libsemigroups_pybind11``.
|libsemigroups_pybind11|.

.. toctree::
:maxdepth: 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Transformations
===============

This page describes the functionality for various partial transformations in
``libsemigroups_pybind11``.
|libsemigroups_pybind11|.

.. toctree::
:maxdepth: 1
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/enums/congruence-kind.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The congruence_kind enum
========================

This page describes the enum class :any:`congruence_kind` in
``libsemigroups_pybind11`` for representing the whether a congruence is one- or
|libsemigroups_pybind11| for representing the whether a congruence is one- or
two-sided.

.. seealso::
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/enums/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Enums
=====

In this section, we describe the :any:`Enum <enum.Enum>` classes available in
``libsemigroups_pybind11``.
|libsemigroups_pybind11|.

.. toctree::
:maxdepth: 1
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/enums/matrix-kind.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The MatrixKind enum
===================

This page describes the enum class :any:`MatrixKind` in
``libsemigroups_pybind11`` for representing the semiring of elements in a
|libsemigroups_pybind11| for representing the semiring of elements in a
matrix.

.. seealso::
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/enums/order.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
The Order enum
===============

This page describes the enum class :any:`Order` in ``libsemigroups_pybind11``
This page describes the enum class :any:`Order` in |libsemigroups_pybind11|
for representing the order of words.

Full API
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data-structures/enums/paths-algorithm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
The paths.algorithm enum
========================

This page describes the enum class :any:`paths.algorithm` in ``libsemigroups_pybind11``.
This page describes the enum class :any:`paths.algorithm` in |libsemigroups_pybind11|.

Full API
--------
Expand Down
Loading
Loading