Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ardumont/swh-docs
  • anlambert/swh-docs
  • douardda/swh-docs
  • vlorentz/swh-docs
  • vsellier/swh-docs
  • lunar/swh-docs
  • cmatrix/swh-docs
  • bchauvet/swh-docs
  • guillaume/swh-docs
  • HarshvMahawar/swh-docs
  • swh/devel/swh-docs
  • olasd/swh-docs
  • pabs/swh-docs
  • rboyer/swh-docs
  • marmoute/swh-docs
  • varasterix/swh-docs
16 results
Show changes
Commits on Source (290)
Showing
with 295 additions and 402 deletions
# Changes here will be overwritten by Copier
_commit: v0.3.3
_src_path: https://gitlab.softwareheritage.org/swh/devel/swh-py-template.git
description: Software Heritage Documentation
distribution_name: swh-docs
have_cli: false
have_workers: false
package_root: swh/docs
project_name: swh.docs
python_minimal_version: '3.7'
readme_format: rst
# Enable black and pre-commit
# black
d71d13ea72434aa9337e2331ba0fbb034ad39acb
a2b344ef0b824894d2d7bbbed249f3ac68f89eb1
*.egg-info/
*.pyc
.coverage
.eggs/
.hypothesis
.mypy_cache
.tox
__pycache__
build/
/.eggs/
/.tox/
/swh.docs.egg-info/
/swh/__pycache__/
/swh/docs/__pycache__/
/swh/docs/sphinx/__pycache__/
/version.txt
apidoc/
dist/
# these are symlinks created by a hook in swh-docs' main sphinx conf.py
docs/README.rst
docs/README.md
# this should be a symlink for people who want to build the sphinx doc
# without using tox, generally created by the swh-env/bin/update script
docs/Makefile.sphinx
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: check-json
- id: check-yaml
- repo: https://github.com/python/black
rev: 25.1.0
hooks:
- id: black
- repo: https://github.com/PyCQA/isort
rev: 6.0.0
hooks:
- id: isort
- repo: https://github.com/pycqa/flake8
rev: 5.0.4
rev: 7.1.1
hooks:
- id: flake8
additional_dependencies: [flake8-bugbear==22.9.23]
additional_dependencies: [flake8-bugbear==24.12.12, flake8-pyproject]
- repo: https://github.com/codespell-project/codespell
rev: v2.2.2
rev: v2.4.1
hooks:
- id: codespell
name: Check source code spelling
stages: [commit]
additional_dependencies:
- tomli
stages: [pre-commit]
- id: codespell
name: Check commit message spelling
additional_dependencies:
- tomli
stages: [commit-msg]
- repo: local
hooks:
......@@ -28,13 +45,13 @@ repos:
pass_filenames: false
language: system
types: [python]
- repo: https://github.com/PyCQA/isort
rev: 5.10.1
hooks:
- id: isort
- repo: https://github.com/python/black
rev: 22.10.0
hooks:
- id: black
- id: twine-check
name: twine check
description: call twine check when pushing an annotated release tag
entry: bash -c "ref=$(git describe) &&
[[ $ref =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] &&
(python3 -m build --sdist && twine check $(ls -t dist/* | head -1)) || true"
pass_filenames: false
stages: [pre-push]
language: python
additional_dependencies: [twine, build]
Copyright (C) 2015-2018 The Software Heritage developers
Copyright (C) 2015-2023 The Software Heritage developers
See http://www.softwareheritage.org/ for more information.
......@@ -6,7 +6,7 @@ In the interest of fostering an open and welcoming environment, we as Software
Heritage contributors and maintainers pledge to making participation in our
project and our community a harassment-free experience for everyone, regardless
of age, body size, disability, ethnicity, sex characteristics, gender identity
and expression, level of experience, education, socio-economic status,
and expression, level of experience, education, socioeconomic status,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
......
include Makefile
include requirements*.txt
include version.txt
......@@ -7,6 +7,8 @@ all:
@echo Please be patient.
tox -vv -r -e sphinx-dev
clean:
make -C docs clean
# inline *build* dependencies to allow installing requirements-swh-dev.txt without build
# isolation
......@@ -16,7 +18,7 @@ BUILD_DEPS :=
BUILD_DEPS += cffi
# swh.search
BUILD_DEPS += tree-sitter
BUILD_DEPS += tree-sitter\<0.22.0
# swh.loader.bzr>breezy
BUILD_DEPS += configobj
......@@ -24,6 +26,12 @@ BUILD_DEPS += configobj
# swh.docs
BUILD_DEPS += pifpaf
# psycopg-c
BUILD_DEPS += tomli
# docutils >= 0.21
BUILD_DEPS += flit-core
pip-install-swh-dev:
python3 -m pip install --upgrade pip wheel setuptools setuptools-scm
python3 -m pip install --upgrade $(BUILD_DEPS)
......
......@@ -2,7 +2,7 @@
# automatically build sphinx documentation.
APIDOC_DIR = apidoc
APIDOC_OPTS = --ext-viewcode --separate
APIDOC_OPTS = --ext-viewcode --separate --implicit-namespaces
SPHINXBUILD = sphinx-build
SPHINXAPIDOC = sphinx-apidoc
SPHINX_OPTS = -t standalone_package_doc
......@@ -12,7 +12,7 @@ SPHINX_SRCDIR = .
# relative to docs/ dir. Hence "." exclude the docs/ dir itself
APIDOC_EXCLUDES = conftest.py setup.py
APIDOC_EXCLUDES += */tests/* */migrations/* */wsgi.py */conftest.py
APIDOC_EXCLUDES += */deposit/settings/* */web/settings/* */dataset/*
APIDOC_EXCLUDES += */deposit/settings/* */web/settings/*
APIDOC_EXCLUDES += bin build dist utils node_modules
APIDOC_SWH_EXCLUDES = $(patsubst %,"../%",$(APIDOC_EXCLUDES))
......@@ -34,7 +34,7 @@ sphinx/%: $(apidoc_dep)
apidoc: $(apidoc_dep)
apidoc-stamp:
$(SPHINXAPIDOC) $(APIDOC_OPTS) -o $(APIDOC_DIR) .. $(APIDOC_SWH_EXCLUDES)
$(SPHINXAPIDOC) $(APIDOC_OPTS) -o $(APIDOC_DIR) `if [ -d ../src/swh ]; then echo ../src/swh; else echo ../swh; fi` $(APIDOC_SWH_EXCLUDES)
# to silent Sphinx warnings about apidoc documents not included in any toctree
find $(shell pwd)/apidoc -name "*.rst" | xargs sed -i '1i:orphan:\n'
touch $@
......
swh-docs
========
Software Heritage Technical Documentation
=========================================
This module contains (the logics for generating) the Software Heritage
development documentation.
technical documentation.
Specifically, it contains some general information about Software Heritage
internals (stuff that would not fit in any other specific software component of
the Software Heritage stack) and bundle them together component-specific
documentation coming from other modules of the stack.
All documentation is written and typeset using [Sphinx][1]. General
All documentation is written and typeset using Sphinx_. General
documentation is shipped as part of this module. Module-specific documentation
is centralized here via symlinks to the `docs/` dirs of individual modules.
is centralized here via symlinks to the ``docs/`` dirs of individual modules.
Therefore to build the full documentation you need a working and
complete [Software Heritage development environment][2].
complete `Software Heritage development environment`_.
How to build the doc
--------------------
Install the [Software Heritage development environment][2]
Install the `Software Heritage development environment`_:
.. code-block:: shell
$ git clone https://gitlab.softwareheritage.org/swh/devel/swh-environment.git
$ cd swh-environment
$ ./bin/update # this will clone needed git repos, inc. swh-docs
$ cd swh-docs
$ git clone https://forge.softwareheritage.org/source/swh-environment
$ cd swh-environment
$ ./bin/update # this will clone needed git repos, inc. swh-docs
$ cd swh-docs
Ensure you have the required tools to generate images (graphviz_'s ``dot``,
plantuml_ and inkscape_). On a Debian system:
Ensure you have the required tools to generate images ([graphviz][3]'s `dot`,
[plantuml][4] and [inkscape][5]). On a Debian system:
.. code-block:: shell
$ sudo apt install plantuml graphviz
$ sudo apt install plantuml graphviz
These additional packages are required on Debian 10.x (and newer) systems:
These additional packages are required on Debian 10.x systems:
- libapr1-dev
- libaprutil1-dev
- libsvn-dev
......@@ -40,61 +44,74 @@ These additional packages are required on Debian 10.x systems:
- dia
- postgresql-autodoc
It is also recommended to build the doc using [tox][6], so ensure you have it
It is also recommended to build the doc using tox_, so ensure you have it
installed, eg. on a Debian system:
$ sudo apt install tox
.. code-block:: shell
$ sudo apt install tox
Then (from the ``swh-environment/swh-docs/`` directory):
Then (from the `swh-environment/swh-docs/` directory):
.. code-block:: shell
$ tox -e sphinx-dev
$ tox run -e sphinx-dev
This tox environment will build the documentation from the sources available in
the parent directory (`swh-environment`).
the parent directory (``swh-environment``).
Behind the scene, this tox environment will run the sphinx documentation
building process via [pifpaf][7] to encapsulate the need os Postgresql to
building process via pifpaf_ to encapsulate the need os Postgresql to
generate database schemas. The documentation building process itself consists
mainly in 3 steps:
### 1. Generate documentation assets for all modules
$ cd swh-environment
$ make docs-assets
.. code-block:: shell
This will *not* build the documentation in each module (there is `make docs`
$ cd swh-environment
$ pifpaf run postgresql -- make docs-assets
This will *not* build the documentation in each module (there is ``make docs``
for that).
### 2. Build the api docs for all swh python packages
$ cd swh-docs/docs
$ make apidoc
.. code-block:: shell
$ cd swh-docs/docs
$ pifpaf run postgresql -- make apidoc
### 3. Build the documentation
$ cd swh-docs/docs
$ make
.. code-block:: shell
$ cd swh-docs/docs
$ make
The HTML documentation is now available starting from `_build/html/index.html`.
The HTML documentation is now available starting from
``_build/html/index.html``.
Cleaning up
-----------
$ cd docs
$ make distclean
.. code-block:: shell
The former (`make clean`) will only clean the local Sphinx build, without
touching other modules. The latter (`make distclean`) will also clean Sphinx
$ cd docs
$ make distclean
The former (``make clean``) will only clean the local Sphinx build, without
touching other modules. The latter (``make distclean``) will also clean Sphinx
builds in all other modules.
Publishing the doc
------------------
The publication of the documentation is now managed by the [CI][7].
The publication of the documentation is now managed by the CI_.
Building standalone package documentation
......@@ -105,20 +122,25 @@ Each documentation local to a swh package can also be built with [tox][6].
For instance to build the standalone documentation of ``swh-web``, proceed as
follows:
$ cd swh-environment/swh-web
$ tox -e sphinx-dev
.. code-block:: shell
$ cd swh-environment/swh-web
$ tox run -e sphinx-dev
Sphinx warnings related to unresolved references located in other swh packages are suppressed because expected.
Sphinx warnings related to unresolved references located in other swh packages
are suppressed because expected.
Please also note that Sphinx warnings are turned into errors in that case.
The HTML documentation is now available starting from `docs/_build/html/index.html`.
The HTML documentation is now available starting from
``docs/_build/html/index.html``.
[1]: http://www.sphinx-doc.org/
[2]: https://forge.softwareheritage.org/source/swh-environment/
[3]: https://graphviz.org
[4]: http://plantuml.com
[5]: https://inkscape.org/
[6]: https://tox.readthedocs.io/
[7]: https://jenkins.softwareheritage.org/job/DDOC/
.. _Sphinx: http://www.sphinx-doc.org/
.. _`Software Heritage development environment`: https://gitlab.softwareheritage.org/swh/devel/swh-environment.git
.. _graphviz: https://graphviz.org
.. _plantuml: http://plantuml.com
.. _inkscape: https://inkscape.org/
.. _tox: https://tox.readthedocs.io/
.. _CI: https://jenkins.softwareheritage.org/job/DDOC/
.. _pifpaf: https://github.com/jd/pifpaf
*-stamp
_build/
/swh-*
devel/swh-*
errors.log
!/swh-loader.rst
sources/
user/software-origins/dynamic/*.inc
apidoc/
SPHINXOPTS ?=
SPHINXOPTCOLOR ?= --color
SPHINXBUILD = sphinx-build
SOURCEDIR = .
BUILDDIR = _build
HTMLDIR = $(BUILDDIR)/html
SWHPKGDIR ?= sources/swh/
INSTALL_HOST = pergamon.internal.softwareheritage.org
INSTALL_DIR = /srv/softwareheritage/docs/webroot/devel
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?= --jobs auto
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build
HTMLDIR = $(BUILDDIR)/html
INSTALL_HOST = pergamon.internal.softwareheritage.org
INSTALL_DIR = /srv/softwareheritage/docs/webroot
INSTALL_GROUP = swhdev
INSTALL_PERMS = g+rwX
SPHINXAPIDOC = sphinx-apidoc
APIDOC_DIR = apidoc
APIDOC_OPTS = --ext-viewcode --separate --no-toc
APIDOC_EXCLUDES = */tests */migrations */wsgi.py */conftest.py */setup.py
APIDOC_EXCLUDES += deposit/settings/* web/settings/* dataset/*
APIDOC_SWH_EXCLUDES = $(patsubst %,"$(SWHPKGDIR)/%",$(APIDOC_EXCLUDES))
html: sphinx/html
sphinx/html: links-stamp apidoc-stamp images-stamp rec-build-stamp
links-stamp:
mkdir -p sources/swh
bin/ln-sphinx-subprojects
touch $@
.PHONY: help images apidoc dynamic-rst html clean install
apidoc: apidoc-stamp
apidoc-stamp: links-stamp
$(SPHINXAPIDOC) \
--implicit-namespaces \
--templatedir=../swh/docs/templates/ \
--maxdepth=3 \
$(APIDOC_OPTS) \
-o $(APIDOC_DIR) \
$(SWHPKGDIR) \
$(APIDOC_SWH_EXCLUDES)
touch $@
# remove warning about swh.rst not being included in any toctree
sed -i '1s/^/:orphan:\n\n/' $(APIDOC_DIR)/swh.rst
all: html
images-stamp:
$(MAKE) -C images
$(MAKE) -C swh-deposit/images
touch $@
dynamic-rst:
make -C user dynamic-rst
# Build documentation recursively in all packages, to make sure that auxiliary,
# non-sphinx managed documentation artifacts (e.g., schema diagrams) are also
# built.
rec-build-stamp: $(wildcard ../../swh-*/docs/*.rst)
$(MAKE) -C ../../ docs-assets
touch $@
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
sphinx/%: Makefile images apidoc dynamic-rst
@$(SPHINXBUILD) -M $* "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
clean: sphinx/clean
bin/ln-sphinx-subprojects --remove
$(MAKE) -C images clean
rm -f *-stamp
rm -f $(APIDOC_DIR)/*
sphinx/clean:
@$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
distclean: clean
make -C ../../ docs-clean
images:
$(MAKE) -C devel images-stamp
$(MAKE) -C sysadm images-stamp
help: sphinx/help
apidoc:
$(MAKE) -C devel apidoc
sphinx/clean:
$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(SPHINXOPTCOLOR)
html: sphinx/html
sphinx/%:
$(SPHINXBUILD) -b $* "$(SOURCEDIR)" "$(BUILDDIR)/$*" $(SPHINXOPTS) $(SPHINXOPTCOLOR)
clean: sphinx/clean
$(MAKE) -C devel clean
$(MAKE) -C sysadm clean
$(MAKE) -C user clean
install: html
test -d $(HTMLDIR)
......@@ -77,5 +50,3 @@ install: html
"find $(INSTALL_DIR) -not -group $(INSTALL_GROUP) -exec chgrp -v $(INSTALL_GROUP) {} + ; \
find $(INSTALL_DIR) -not -perm -ug=rw,o=r -exec chmod -v ug+rw,o+r {} + ; \
find $(INSTALL_DIR) -type d -not -perm -g=xs,ou=x -exec chmod -v g+xs,ou+x {} +"
.PHONY: help html clean distclean install images-stamp
/* Alegreya font setup */
/* alegreya-400normal - latin */
@font-face {
font-family: 'Alegreya';
font-style: normal;
font-display: swap;
font-weight: 400;
src:
local('Alegreya Regular '),
local('Alegreya-Regular'),
url(fonts/alegreya-latin-400.woff2) format('woff2'),
url(fonts/alegreya-latin-400.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-400italic - latin */
@font-face {
font-family: 'Alegreya';
font-style: italic;
font-display: swap;
font-weight: 400;
src:
local('Alegreya Regular italic'),
local('Alegreya-Regularitalic'),
url(fonts/alegreya-latin-400italic.woff2) format('woff2'),
url(fonts/alegreya-latin-400italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-500normal - latin */
@font-face {
font-family: 'Alegreya';
font-style: normal;
font-display: swap;
font-weight: 500;
src:
local('Alegreya Medium '),
local('Alegreya-Medium'),
url(fonts/alegreya-latin-500.woff2) format('woff2'),
url(fonts/alegreya-latin-500.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-500italic - latin */
@font-face {
font-family: 'Alegreya';
font-style: italic;
font-display: swap;
font-weight: 500;
src:
local('Alegreya Medium italic'),
local('Alegreya-Mediumitalic'),
url(fonts/alegreya-latin-500italic.woff2) format('woff2'),
url(fonts/alegreya-latin-500italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-700normal - latin */
@font-face {
font-family: 'Alegreya';
font-style: normal;
font-display: swap;
font-weight: 700;
src:
local('Alegreya Bold '),
local('Alegreya-Bold'),
url(fonts/alegreya-latin-700.woff2) format('woff2'),
url(fonts/alegreya-latin-700.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-700italic - latin */
@font-face {
font-family: 'Alegreya';
font-style: italic;
font-display: swap;
font-weight: 700;
src:
local('Alegreya Bold italic'),
local('Alegreya-Bolditalic'),
url(fonts/alegreya-latin-700italic.woff2) format('woff2'),
url(fonts/alegreya-latin-700italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-800normal - latin */
@font-face {
font-family: 'Alegreya';
font-style: normal;
font-display: swap;
font-weight: 800;
src:
local('Alegreya ExtraBold '),
local('Alegreya-ExtraBold'),
url(fonts/alegreya-latin-800.woff2) format('woff2'),
url(fonts/alegreya-latin-800.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-800italic - latin */
@font-face {
font-family: 'Alegreya';
font-style: italic;
font-display: swap;
font-weight: 800;
src:
local('Alegreya ExtraBold italic'),
local('Alegreya-ExtraBolditalic'),
url(fonts/alegreya-latin-800italic.woff2) format('woff2'),
url(fonts/alegreya-latin-800italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-900normal - latin */
@font-face {
font-family: 'Alegreya';
font-style: normal;
font-display: swap;
font-weight: 900;
src:
local('Alegreya Black '),
local('Alegreya-Black'),
url(fonts/alegreya-latin-900.woff2) format('woff2'),
url(fonts/alegreya-latin-900.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-900italic - latin */
@font-face {
font-family: 'Alegreya';
font-style: italic;
font-display: swap;
font-weight: 900;
src:
local('Alegreya Black italic'),
local('Alegreya-Blackitalic'),
url(fonts/alegreya-latin-900italic.woff2) format('woff2'),
url(fonts/alegreya-latin-900italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-100normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 100;
src:
local('Alegreya Sans Thin '),
local('Alegreya Sans-Thin'),
url(fonts/alegreya-sans-latin-100.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-100.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-100italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 100;
src:
local('Alegreya Sans Thin italic'),
local('Alegreya Sans-Thinitalic'),
url(fonts/alegreya-sans-latin-100italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-100italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-300normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 300;
src:
local('Alegreya Sans Light '),
local('Alegreya Sans-Light'),
url(fonts/alegreya-sans-latin-300.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-300.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-300italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 300;
src:
local('Alegreya Sans Light italic'),
local('Alegreya Sans-Lightitalic'),
url(fonts/alegreya-sans-latin-300italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-300italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-400normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 400;
src:
local('Alegreya Sans Regular '),
local('Alegreya Sans-Regular'),
url(fonts/alegreya-sans-latin-400.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-400.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-400italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 400;
src:
local('Alegreya Sans Regular italic'),
local('Alegreya Sans-Regularitalic'),
url(fonts/alegreya-sans-latin-400italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-400italic.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table td,
table.swh-logos-table th {
text-align: center;
}
/* alegreya-sans-500normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 500;
src:
local('Alegreya Sans Medium '),
local('Alegreya Sans-Medium'),
url(fonts/alegreya-sans-latin-500.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-500.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table img {
margin-bottom: 5px;
}
/* alegreya-sans-500italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 500;
src:
local('Alegreya Sans Medium italic'),
local('Alegreya Sans-Mediumitalic'),
url(fonts/alegreya-sans-latin-500italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-500italic.woff) format('woff'); /* Modern Browsers */
}
/* alegreya-sans-700normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 700;
src:
local('Alegreya Sans Bold '),
local('Alegreya Sans-Bold'),
url(fonts/alegreya-sans-latin-700.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-700.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table tr td:nth-child(1) {
width: min-content;
}
/* alegreya-sans-700italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 700;
src:
local('Alegreya Sans Bold italic'),
local('Alegreya Sans-Bolditalic'),
url(fonts/alegreya-sans-latin-700italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-700italic.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table tr td:nth-child(1) p {
margin-bottom: 0;
}
/* alegreya-sans-800normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 800;
src:
local('Alegreya Sans ExtraBold '),
local('Alegreya Sans-ExtraBold'),
url(fonts/alegreya-sans-latin-800.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-800.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table ul {
text-align: left;
margin-bottom: auto;
}
/* alegreya-sans-800italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 800;
src:
local('Alegreya Sans ExtraBold italic'),
local('Alegreya Sans-ExtraBolditalic'),
url(fonts/alegreya-sans-latin-800italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-800italic.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table .py {
font-family: inherit;
font-weight: inherit;
font-size: inherit;
white-space: inherit;
background-color: inherit;
border: inherit;
border-radius: inherit;
padding: inherit;
}
/* alegreya-sans-900normal - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: normal;
font-display: swap;
font-weight: 900;
src:
local('Alegreya Sans Black '),
local('Alegreya Sans-Black'),
url(fonts/alegreya-sans-latin-900.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-900.woff) format('woff'); /* Modern Browsers */
table.swh-logos-table .py .pre {
white-space: inherit;
}
/* alegreya-sans-900italic - latin */
@font-face {
font-family: 'Alegreya Sans';
font-style: italic;
font-display: swap;
font-weight: 900;
src:
local('Alegreya Sans Black italic'),
local('Alegreya Sans-Blackitalic'),
url(fonts/alegreya-sans-latin-900italic.woff2) format('woff2'),
url(fonts/alegreya-sans-latin-900italic.woff) format('woff'); /* Modern Browsers */
.landing-page hr {
margin-top: 5em;
margin-bottom: 5em;
}
table.swh-logos-table td,
table.swh-logos-table th {
text-align: center;
.landing-part {
--sd-color-card-border-hover: var(--sd-color-primary);
padding-bottom: 50vh;
background-image: url("data:image/svg+xml,%3Csvg width='78.27' height='77.395' version='1.1' viewBox='0 0 78.27 77.395' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='blur'%3E%3CfeGaussianBlur in='SourceGraphic' stdDeviation='1' /%3E%3C/filter%3E%3Cg transform='matrix(1.25 0 0 -1.25 -15.707 134.24)' fill-opacity='.10' filter='url(%23blur)'%3E%3Cpath d='m30.574 68.987 1.337-1.343 4.826 1.607-1.61-4.823 1.34-1.34 2.95 8.844z'/%3E%3Cpath d='m27.188 67.914 5.746-10.675 1.252 1.252-5.747 10.674z'/%3E%3Cpath d='m24.636 57.152 1.608 4.823-1.34 1.34-2.949-8.846 8.842 2.949-1.338 1.343z'/%3E%3Cpath d='m44.012 65.874 2.274-5.144h1.894l-4.167 8.935-4.17-8.038 1.895-0.154z'/%3E%3Cpath d='m38.214 58.771 12-3.485v1.77l-12 3.484z'/%3E%3Cpath d='m44.012 49.269-2.273 4.461h-1.895l4.169-8.252 4.167 8.379-1.896-0.018z'/%3E%3Cpath d='m57.288 69.377-8.843 2.95 2.945-8.844 1.342 1.338-1.607 4.825 4.823-1.609z'/%3E%3Cpath d='m61.884 67.095-10.674-5.748 1.251-1.25 10.675 5.746z'/%3E%3Cpath d='m61.616 62.367 1.609-4.822-4.822 1.607-1.34-1.34 8.843-2.948-2.948 8.842z'/%3E%3Cpath d='m58.214 81.089-8.219-4.168 8.396-4.17 0.033 1.896-4.653 2.274 4.443 2.273z'/%3E%3Cpath d='m61.606 70.73 3.486 12h-1.771l-3.484-12z'/%3E%3Cpath d='m67.214 72.752 7.967 4.169-8.522 4.168-0.095-1.896 4.873-2.272-4.223-2.274z'/%3E%3Cpath d='m56.894 84.299-1.339 1.342-4.824-1.608 1.608 4.823-1.34 1.341-2.948-8.844z'/%3E%3Cpath d='m60.28 85.371-5.746 10.675-1.253-1.253 5.748-10.673z'/%3E%3Cpath d='m62.832 96.134-1.608-4.823 1.341-1.339 2.947 8.843-8.842-2.949 1.339-1.341z'/%3E%3Cpath d='m45.73 91.364-2.274-4.365-2.274 4.731h-1.894l4.168-8.521 4.17 8.245z'/%3E%3Cpath d='m50.214 94.515-12 3.485v-1.77l12-3.485z'/%3E%3Cpath d='m43.456 103.6 2.274-4.873h1.895l-4.169 8.664-4.169-8.175 1.896-0.083z'/%3E%3Cpath d='m36.076 89.803-1.341-1.34 1.608-4.823-4.823 1.608-1.34-1.34 8.844-2.949z'/%3E%3Cpath d='m25.582 86.192 10.674 5.746-1.251 1.251-10.675-5.746z'/%3E%3Cpath d='m25.85 90.918-1.608 4.823 4.824-1.608 1.339 1.341-8.844 2.948 2.949-8.844z'/%3E%3Cpath d='m29.214 72.196 8.338 4.169-8.338 4.169v-1.896l4.547-2.273-4.547-2.274z'/%3E%3Cpath d='m24.146 70.73 3.485 11h-1.769l-3.485-11z'/%3E%3Cpath d='m12.565 76.365 8.3384 4.169v-1.896l-4.5472-2.273 4.5472-2.274v-1.895z'/%3E%3C/g%3E%3C/svg%3E"); background-repeat: no-repeat;
background-position: center bottom 17.5vh;
background-size: 25vh;
}
table.swh-logos-table img {
margin-bottom: 5px;
.landing-part:last-of-type {
padding-bottom: 0;
background: none;
min-height: 90vh;
}
table.swh-logos-table ul {
text-align: left;
margin-bottom: auto;
.landing-part hr {
display: none;
}
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted
File deleted