Recent Releases of virelay
virelay - v1.0.0 Release
General Updates in v1.0.0
- Moved the Python project file into the root directory of the repository:
- During the build of the documentation on ReadTheDocs, the ViRelAy package needs to be available, as it is referenced in the configuration file of the documentation. Unfortunately, ReadTheDocs requires the
pyproject.tomlfile to be in the root directory of the repository. Therefore, thepyproject.tomlfile has been moved from thesource/backenddirectory to the root directory of the repository. - Also, the
uv.lock,.python-versionsand thetox.inifiles have been moved to the root directory. - All references to the these files, as well as relative paths in the code, the tox configuration file, the GitHub Actions workflow files, and the documentation were updated accordingly.
- Some necessary changes where made to the
pyproject.tomlfile to ensure that the package can still be built and installed correctly.
- During the build of the documentation on ReadTheDocs, the ViRelAy package needs to be available, as it is referenced in the configuration file of the documentation. Unfortunately, ReadTheDocs requires the
- Updated the ViRelAy screenshot used in the PyPI read me:
- The read me of the repository is also used as the project description, which is displayed on the PyPI project page. The read me contains two screenshots of ViRelAy's UI: One of the light-mode UI and one of the dark-mode UI. The read me uses a GitHub feature that allows us to display the light-mode screenshot when the user uses GitHub's light-mode, and the dark-mode screenshot when the user uses GitHub's dark-mode. PyPI does not support this feature and would display both screenshots. Therefore, the dark-mode screenshot was removed from the read me before it was included in the package using the "Hatch Fancy PyPI Readme" plugin.
- To put emphasis on the fact that ViRelAy supports both light-mode and dark-mode, both screenshots are now replaced with a single image that contains a split-screen montage of ViRelAy's light-mode and dark-mode UIs.
- The source files for the ViRelAy logo and the ViRelAy UI have been cleaned up:
- Logo Source File:
- Converted the title of the logo to a path, because the font is from Google Fonts and not available in the SVG. It would be possible to embed the font, but this would increase the size of the SVG significantly and would require us to include the license.
- The logo is available as two versions: with and without title. The source file, however, only contained the version with the title. To produce the PNG with only the logo, the title would have to be hidden and the page size adjusted manually. This is cumbersome, for this reason, a second page was added to the SVG that contains the logo without the title.
- Named and cleaned up all objects and groups in the SVG.
- UI Source Files: Previously, there were three source files: one for the light-mode UI, one for the dark-mode UI, and one that contained a split-screen montage of both. These were all converted to a single source file that contains multiple pages, one for each UI mode (light and dark) and one for the split-screen montage.
- Cleaned up the CSPell configuration by removing unnecessary words from its dictionary that are no longer used in the project.
- Cleaned up the
.gitignorefile by removing unnecessary entries that are no longer used in the project and sorting the remaining entries by category and alphabetically. - Restructured the
testsdirectory to better organize unit tests and linter configurations:- The configurations for the linters have been moved to a new directory called
tests/linters. - The configuration for the HTML-Validate linter was converted to a Node.js package, so that it is easier to use and maintain.
- The configurations for PyTest and Coverage.py were extracted from the tox configuration file and placed into their own files in the
tests/unit_testsdirectory. - All references to the old configuration files in the
tests/configdirectory have been updated to point to the new locations.
- The configurations for the linters have been moved to a new directory called
- Fixed the Usage of uv in the tox Configuration
- A major problem in the tox configuration was fixed. Previously, tox-uv was always using the system Python version instead of the Python versions installed via uv. This meant that the Python versions specified in the environment names and the
base_pythonoption were ignored. This meant that the unit tests were not run with the correct Python version and the environments that used thebase_pythonoption were not created with the correct Python version. Previously, a fix was attempted by setting theuv_python_preferencetoonly-managed, but this was not the entire solution. What finally fixed the issue was to always use the commands directly instead of running them through theuv runcommand.
- A major problem in the tox configuration was fixed. Previously, tox-uv was always using the system Python version instead of the Python versions installed via uv. This meant that the Python versions specified in the environment names and the
Backend REST API Updates in v1.0.0
- Sorted the Python imports. They are now categorized by standard library imports, third-party library imports, and local imports, each separated by a blank line. Each category is sub-categorized into regular imports and "from-imports", which are not separated by blank lines. Each sub-category is sorted alphabetically. Both the imports of the
virelaypackage and the imports of the unit tests in thetestspackage were sorted. - Converted the
dev-dependenciessection in thepyproject.tomlfile to adependency-groupssection, which is the new way to define dependencies, which is standardized across all Python tools. Thedev-dependenciessection was deprecated and will be removed in the future. Separate dependency groups were created for the testing, linting, and documentation dependencies. Thedevdependency group includes all other dependency groups, so that thedevgroup can be used to install all dependencies at once. - The fix to the tox configuration caused some problems with the MyPy configuration to emerge: MyPy could not find the type information for PyTest and Sphinx. This was fixed by adding the
pytest-mypypackage and ignoring thesphinxpackage in the MyPy configuration. - Removed support for Python 3.10, as they are no longer supported by the latest versions of some of the dependencies.
- The supported Python versions are now 3.11, 3.12, and 3.13.
- References to the supported versions were removed from the documentation.
- The tox configuration was updated to no longer run the unit tests with Python 3.10.
- The GitHub Actions workflow for testing was updated to no longer run the unit tests with Python 3.10.
- Updated the versions of Python that are specified in the
.python-versionsfile and thepyproject.tomlfile to the latest patch versions of Python 3.11, 3.12, and 3.13:- Python 3.13.2 → 3.13.5,
- Python 3.12.9 → 3.12.11, and
- Python 3.11.11 → 3.11.13
- Updated the dependencies of the backend REST API to their respective latest versions.
Frontend Updates in v1.0.0
- Updated the dependencies of the frontend project to their respective latest versions.
CI/CD Updates in v1.0.0
- The actions used in the GitHub Actions workflow configuration file were updated to their latest versions.
- Updated the Node.js version used in the GitHub Actions workflow to the latest LTS version, which is currently 20.18.0.
- Updated the uv version used in the GitHub Actions workflow to the latest version, which is currently 0.8.5.
- The
uv.lockfile is now disabled when synchronizing the package versions during deployment. This causes uv to assume that the lock file will not change and will raise an error if it does. This way, the deployment will fail if the lock file is not up-to-date and not silently ignore the changes and deploy anyway. - During the deployment, the tags are now explicitly fetched from the remote repository, so that the build system is able to determine the latest version of the package, which is used to set the version of the package being build and deployed.
Documentation Updates in v1.0.0
- Updated the documentation:
- Updated the
.readthedocs.yamlto fix the way that the virtual environment is created using uv. Also, the Python version was updated to 3.13 and the Ubuntu version was updated to always use the latest version. - A custom CSS file was added to the documentation to change the alignment of the documentation text to be justified and to automatically break long words. This was done to improve the readability of the documentation and to align it with usual scientific documents.
- The width of the labels in the bibliography was set to a fixed size, so that the labels all have the same width. This was done, because they looked inconsistent and messy before.
- The images of the documentation were moved from the
docs/imagesdirectory to a newdocs/source/imagesdirectory, because they belong to the source of the documentation. - Updated the
modules.rsttemplate of the AutoSummary Sphinx extensions: - Now,
:signatures: noneis used instead of:nosignatures:, which is now recommended by the Sphinx AutoSummary documentation. - Removed the extra spaces using dashes in the blocks (e.g.,
{%- if attributes %}instead of{% if attributes %}). - Added special members like
__bool__,__call__, and__delete__, so that they are included in the documentation, if they are present. - The rubric titles now just use a string (e.g.,
.. rubric:: Module Attributesinstead of.. rubric:: {{ _('Module Attributes') }}) - The template file was moved to a sub-directory
_templates/autosummary, because this way it is automatically recognized by the Sphinx Autosummary extension and no longer needs to be referenced inapi-reference/index.rstfile. - The usage of
:signatures: noneinstead of:nosignatures:was also applied to theapi-reference/index.rstfile. - The configuration for Sphinx was updated:
- The
sphinx.ext.imgmathand thesphinxcontrib.datatemplatesextensions were removed, because there were not used in the documentation. - The
docs/source/conf.pyfile was generally updated to reflect the changes that were made to the Sphinx configuration in CoRelAy. - The invocation of Sphinx in tox to build the documentation was updated to include the
--fresh-envoption, so that the documentation is always built in a fresh environment. This solves some issues with the documentation build, where the documentation was not updated correctly after changes were made to the source code or the documentation itself.
- Updated the
- Updated the read me:
- Fixed the order of the properties in the BibTeX entry of the project paper.
- Added badges for the build status of the documentation and the latest version of the package available on PyPI.
- The example scripts in the documentation previously had dependencies that were not compatible with the ViRelAy Python project, as some of their dependencies were incompatible with dependencies of the ViRelAy project. Now, all of the dependencies in the incompatible upstream projects were updated.
- The dependencies of the example scripts were now directly integrated as extra dependencies in the
pyproject.tomlfile under the nameexamples. - These extra dependencies were also integrated into the
devdependency group, so that they are during development. - The documentation was updated to explain that the dependencies can now directly be installed by installing ViRelAy with the
examplesextra dependencies. - Previously, the examples scripts had to be linted and type-checked separately from the ViRelAy project, as the incompatible dependencies had to be installed separately. Now, the example scripts are linted and type-checked together with the ViRelAy project and the unit tests.
- The instructions for running the linters and the static type checker in the documentation were updated to show how to lint and type-check the example scripts.
- The tox configuration was also updated to now lint and type-check the example scripts together with the ViRelAy project and the unit tests.
- As they are now linted as part of the ViRelAy project, some code duplication issues were raised by PyLint, which were fixed by disabling the
duplicate-codePyLint check for the example scripts. Since the scripts are standalone scripts and not modules, it would be difficult to refactor them to avoid the code duplication, as they are not meant to be used as modules. - Also, since some of the updated dependencies are now typed, some typing problems were raised by MyPy, which were fixed by correcting the relevant type hints in either the example scripts or the ViRelAy project.
- As CoRelAy has received a major update, the
meta_analysis.pyscript was updated to use the new syntax for declaring slots. Also, the same script is available as an example in the CoRelAy documentation, so the two versions of the script were synchronized.
- The dependencies of the example scripts were now directly integrated as extra dependencies in the
- Python
Published by lecode-official 10 months ago
virelay - v0.6.1 Release
General
- Renamed the
masterbranch tomainin order to avoid any links to sensitive topics.- All references to the
masterbranch in the repository were updated tomain.
- All references to the
- Changed the URLs in the read me that point to the GitHub repository to be absolute URLs, which is necessary, because PyPI cannot resolve the relative GitHub URLs. This means that the images are not displayed in the read me and the links cannot be clicked.
- Some of the images in the read me use a feature of GitHub, which allows to display different images based on whether GitHub is in dark mode or light mode. This feature is not supported by PyPI, so both images are displayed in PyPI, which is not ideal. Fortunately, we are already using the Hatch Fancy PyPI Readme plugin for Hatchling, which allows us to make substitutions in the read me. The
pyproject.tomlconfiguration was updated to remove any dark-mode-only images in the read me. PyPI only has a light mode, so the light-mode-only images remain in the read me.
- Some of the images in the read me use a feature of GitHub, which allows to display different images based on whether GitHub is in dark mode or light mode. This feature is not supported by PyPI, so both images are displayed in PyPI, which is not ideal. Fortunately, we are already using the Hatch Fancy PyPI Readme plugin for Hatchling, which allows us to make substitutions in the read me. The
- Python
Published by lecode-official about 1 year ago
virelay - v0.6.0 Release
Backend REST API Updates
- The Python versions supported by the backend REST API were updated:
- Python 3.13.0 → 3.13.2,
- Python 3.12.7 → 3.12.9,
- Python 3.11.10 → 3.11.11, and
- Python 3.10.15 → 3.10.16.
- The dependencies of the backend REST API were updated to their respective latest version.
- All linter errors that arose due to the updates were fixed.
- Previously, before running the unit tests of the backend, the frontend needed to be built manually. This was required, because the unit tests test if the frontend could be served through the backend, for which the frontend build artifacts are required. This was a cumbersome process and it required a warning in the documentation, which was not ideal, especially for new contributors. This process was automated by adding the building of the frontend to the tox configuration.
Frontend Updates
- Previously, the previews of the sample images and heatmaps were smoothed. Now, the UI offers a new feature, which allows users to select the sampling method for the images:
- By default, the option is set to auto, which will select a method based on sizes of the sample image and the HTML element.
- The user can, however, override this option and select either smooth or pixelated image sampling.
- This will make it easier to inspect the sample images and the heatmaps: when the sample images and heatmaps are small, smoothing the image could potentially smear out important details, while pixelating large images could potentially hide small details.
- The documentation was updated to include this new feature. As the feature caused some changes in the UI, the screenshots in the documentation were updated as well.
- Fixed the alternative text of the sample and heatmap images in the sample viewer. Previously, the text was
[Object object], which is the default string that is returned when thetoStringmethod of an object is called. The alternative text of the sample images and heatmaps is generated from their sample labels. The problem was, that the labels were not strings, but objects containing the label index, the WordNetId, and the human-readable name of the label. - The frontend project was updated to Angular 19.2, Clarity Design System 6.15, and Clarity 17.9.
- The dependencies and the development dependencies of the frontend project were updated to their respective latest versions.
- The dependencies of the Node.js-based linters were updated to their respective latest versions.
- All configuration issues and linter errors that arose due to the updates were fixed.
CI/CD Updates
- The actions used in the GitHub Actions workflow configuration file were updated to their latest versions.
- Since the frontend is now built automatically using tox, the steps required to build the frontend before running the unit tests of the backend REST API were removed from the GitHub Actions workflow configuration file.
Documentation Updates
- Some minor spelling mistakes were corrected in the documentation.
- Also, the warning about having to build the frontend project before running the unit tests of the backend REST API was removed, because the frontend project is now built automatically in tox and no longer needs to be built manually.
- Python
Published by lecode-official about 1 year ago
virelay - v0.5.0 Release
General
- Added a CSpell configuration for spell-checking the contents of the repository, checked all files, and corrected all spelling mistakes.
- Removed the
LICENSEfile. Previously, there were two license files:COPYING, which contained the AGPL 3.0 license text, andLICENSE, which contained a note about where to find the license of the project and any third-party licenses. This was done, because GPL prefers the file nameCOPYING, but back then GitHub did not support that file name. Now, GitHub also supportsCOPYING. As the information about where to find the project license and the third-party licenses is also contained in the read me, theLICENSEfile was removed. - Added a
CITATION.cfffile, which contains the necessary information to cite this repository. This file is based on the Citation File Format (CFF) standard. - Moved the ViRelAy logo from the
docs/imagesdirectory a new top-level directory calleddesign, in order to clean up the repository.
Backend REST API
- Converted the project from
setuptoolsandsetup.pyto the Python package and project manager uv andpyproject.toml.- This was made necessary, because the
virelaypackage was moved into asource/backenddirectory and thefrontendproject was also moved from thevirelaypackage into thesource/frontenddirectory, and setuptools does not allow us to include data files that are not contained in the package directory. - However, this also brings many advantages, since the new build system "hatchling" provides many more features and uv is not only blazing fast, it also makes the project management easier.
- Also, the old packaging system with setuptools and
setup.pyhave become dated and have to be replaced by apyproject.tomlanyway.
- This was made necessary, because the
- Updated the Python dependencies of the backend REST API project to their respective latest versions.
- The versions of all other packages were set to be greater than or equal to the currently latest version and are restricted to be below the next major version, so that versions with breaking changes will not be installed in the future (although, this is prevented by the
uv.lockfile, which locks the currently installed versions of the packages to specific versions).
- The versions of all other packages were set to be greater than or equal to the currently latest version and are restricted to be below the next major version, so that versions with breaking changes will not be installed in the future (although, this is prevented by the
- Performed some minor updates on the backend REST API project:
- Instead of having an application class in the backend REST API, which basically only had a running method, the application now has a run function for the CLI and a run function for the UWSGI server. Starting the UWSGI server already was a function, because GUnicorn does not support the use of methods when starting the server. This makes the code more consistent.
- To facilitate the loading of multiple dataset samples simultaneously, a new endpoint was added, which allows users to provide a list of sample IDs.
- Instead of having an
Applicationclass in the backend REST API, which basically only had arunmethod, the application now has arun_cli_appfunction for the CLI and arun_wsgi_appfunction for the UWSGI server. Starting the UWSGI server already was a function, because GUnicorn does not support the use of methods when starting the server. This makes the code more consistent. - The endpoints of the REST API were available using any HTTP verb. Now, only the GET method is allowed.
- The default port of the backed REST API was changed to 8000, because 8080 is more commonly used and might conflict with other services. The documentation was updated accordingly.
- Version, author, license, and copyright information of the backend REST API was added to the
__init__.pyfile. The version is automatically updated from the current Git tag during build. - When serving the frontend files, the backend now checks if the file exists and returns HTTP 404 Not Found, if the file could not be found, instead of raising an exception, which results in an HTTP 500 Internal Server Error.
- The list of supported Python versions was updated
- Python 3.7 has already reached its end-of-life and the end-of-life of Python 3.8 is imminent. Although Python 3.9 will only reach its end of life in October 2025, it is missing the union operator
|for type hints. Although this operator is not strictly necessary, it makes the type hinting for MyPy much easier to read. Also, the latest NumPy version does not support Python 3.9 anymore. Since ViRelAy is not a library that is used by other projects and most operating systems already support Python 3.10, the minimum Python version was updated to 3.10 to make the development process easier. Python 3.11, 3.12, and 3.13 were also added to the list of supported Python versions. This means that now Python 3.10, 3.11, 3.12, 3.13 are the supported Python versions for the project. - The following changes had to be made to because of the updated Python versions and dependencies:
- In previous versions, Flask was using
application/javascriptas the MIME type for JavaScript files. This has now been changed totext/javascript. Also, in Python 3.12, Flask now usesimage/x-iconinstead ofimage/vnd.microsoft.icon. For this reason, the unit tests were updated. - The server previously used the
pkg_resourcesmodule to serve the static frontend files from the package directory. The module has been deprecated and was removed in Python 3.12, it was replaced with theimportlib.resourcesmodule.
- Python 3.7 has already reached its end-of-life and the end-of-life of Python 3.8 is imminent. Although Python 3.9 will only reach its end of life in October 2025, it is missing the union operator
- Improved the Python Linting
- The Flake8 linter was replaced by PyCodeStyle and PyDocLint, and MyPy was added as a static type checker. All four checkers are included as development dependencies in the
pyproject.tomlproject file. - New configurations for PyCodeStyle, PyDocLint, and MyPy were added and the configuration file for PyLint was updated to match the latest version of PyLint.
- The
flake8test environment was removed from thetox.inifile and the new test environmentspycodestyle,pydoclintandmypywere added, which run the linters and the static type checker. - The maximum line length was increased from 120 to 150, which makes it now easier to break some longer lines
- The Flake8 job was removed from the GitHub Actions Workflow configuration file, and the new jobs
pycodestyle,pydoclintandmypywere added, which run the tox environments for the respective linter and the static type checker. - The documentation was updated to reflect the changes in the linting process and to explain how to run the linters and the static type checker locally.
- In order to improve MyPy's ability to reason about the types and therefore find bugs, many type hints were added throughout the code. Also, types were introduced to make the dictionaries that are loaded from or written to YAML/JSON files strongly typed.
- The configuration files for the linters and the static type checker are located in a
configdirectory that is a sub-directory of thetestsdirectory. For this reason, the unit tests were also moved to a sub-directory calledunit_tests. - The entire code base was linted and type-checked, and all issues found by the linters and the type checker were fixed. Thanks to the new linters and the new type checker, several obscure bugs were found that would have gone unnoticed otherwise:
- The automatic reload of the Flask server was not working correctly, because instead of using the property
debug, the incorrect propertyauto_reloadwas used. - The ViRelAy modules were imported using the relative import syntax instead of the absolute import syntax, which may cause problems because sometimes it is not clear if an import is relative or not, relative imports can be ambiguous, they are brittle and may break when a module is moved, and since Python 3, implicit relative imports are not allowed anymore.
- The
get_label...methods of the LabelMap class returned the human-readable names of the labels instead of the labels themselves, which was not obvious from the method names. In some parts of the code, the list of human-readable names was used instead of a list of labels, which was incorrect. Now, the LabelMap has a new set of methods for retrieving the labels, and the old methods were renamed to make their purpose clearer. All instances where the methods are used were checked and corrected if necessary. - In multiple instances, variables were reused, for example, variables that were used to store a NumPy array of an image were reused when creating a Pillow Image from them. This lead to some errors, where a NumPy array was expected, but a Pillow Image was passed instead, and vice versa.
- In many cases, the documentation for methods was either missing, incomplete, or incorrect. The documentation was updated to reflect the actual behavior of the methods.
- In the tests, the names of the fixtures were reused and may therefore have accidentally overwritten each other. The names of the variables and parameters were changed to be unique.
- The unit tests were missing a
__init__.pyfile and were thus not a proper Python package. This was fixed by adding the missing file. - The
__init__.pyfile of the ViRelAy package did not contain a docstring, which was added. - The fixtures for the unit tests are nested, which means they reference each other. Since the parameter names must match the names of the fixtures and since the fixtures were all in the same file, the parameters were shadowing the fixtures. This was fixed by renaming the fixture functions to
get_..._fixtureand adding a name to the fixture attribute. - Some unit tests were incorrectly comparing
Labelobjects with strings, which is now fixed.
- The Flake8 linter was replaced by PyCodeStyle and PyDocLint, and MyPy was added as a static type checker. All four checkers are included as development dependencies in the
- The tox configuration file was updated
- The configuration file was generally cleaned up and is now completely documented.
tox-uvis used so that tox uses uv as package manager.- The new linters and the type checker are now included, and the they also lint and type-check the unit tests, the Sphinx configuration script and the example scripts in the documentation.
- Updated the unit tests to reflect the changes in the backend API and to reach 100% test coverage again.
Frontend
- Migrated the frontend project from Angular 13 and Clarity 13 to Angular 18 and Clarity 17.
- Updated the dependencies and the development dependencies of the frontend project to their respective latest versions.
- Cleaned up the frontend project:
- The directory hierarchy of the project was overhauled:
- The project was previously nested in another
srcdirectory, which is weird, because the project is not at the top-level of the repository, but in a source directory itself. For this reason, the files were moved out of thesrcdirectory, one level up, and are now in the same directory as theangular.json,package.json, andtsconfig.jsonfiles. - The
main.tsandindex.htmlfiles were moved into theappdirectory. - The
componentsandmodulesdirectories were moved out of theappdirectory into the top-level directory of the project andmoduleswas renamed topages, because it only contains components that are pages. The new structure dictates that components that represent pages are in thepagesdirectory and components that represent user controls and are used in other components are in thecomponentsdirectory. - The Sass stylesheets were moved into a top-level
stylesdirectory. - The favicon was moved into the
assetsdirectory. - The Angular and TypeScript configurations were completely overhauled and commented.
- A favicon with support for all browsers, iOS, and Android with support for light and dark themes was created.
- The module paths are now remapped to
@app,@components,@pages, and@services, which makes it nicer to import them, because no relative paths are needed anymore.
- Performed some minor updates on the frontend:
- The components are now standalone, which means that they are no longer included in any modules and can be loaded individually.
- Proper error handling for the bootstrap process was integrated.
- Also, the error handling on the project page was improved. To make it easier to display error messages, a new error message component was created.
- In addition to the light theme, a dark theme was added. The theme is automatically selected based on the user's system preferences. The screenshots in the documentation were updated accordingly.
- The toolbox and the sample viewer can now be scrolled horizontally using the mouse wheel, which makes them easier to navigate.
- When hovering over an embedding vector, the corresponding sample is now loaded after a short delay, which prevents the constant loading of samples when the user only moves the mouse over the samples.
- The samples and attributions in the selected samples viewer are now loaded all at once instead of loading the one by one.
- The selected samples viewer is now responsive and decreases its height when the browser window gets smaller
- Many data structures that were previously inline types or a mixture of built-in types now have proper types. This includes:
- A type for embedding vectors,
- a type for the hover event in the embedding visualizer,
- a type for the coordinates of the selection box in the embedding visualizer,
- an interface for the configuration of the application,
- a type for clusters of embedding vectors,
- a type for the attributions of embedding vectors,
- an interface for HTML input events, and
- an enumeration for the attribution image modes.
- The state management is now done using an enumeration for the different states that a resource can be in, instead of using booleans.
- A custom exception type for errors that occur in a service was added.
- A URL builder was created, which makes it easier to build URLs for the backend REST API in the services.
- The build output of the frontend was removed from the repository, as it will now be build as needed. The CI/CD pipeline, as well as the documentation were adapted accordingly.
- Added multiple linters for the frontend:
- ESLint, a JavaScript and TypeScript linter.
- Stylelint, a CSS and Sass linter.
- HTML-Validate, an HTML linter.
- All issues that were detected by the linters was fixed.
- The documentation was updated to include instructions on how to run the linters.
- The GitHub Actions workflow configuration was adapted to run the linters.
CI/CD
- The GitHub Actions Workflow configuration file was updated
- The Workflow configuration file was cleaned up and documented.
- The version of the
checkoutaction was updated to the latest version v4. - Instead of using the
setup-pythonaction, we now use theastral-sh/setup-uvaction to install uv, which is then used to install Python, which means that the exact same Python version that is used locally is also used in the CI/CD pipeline. - The
jobs.docs.strategy.fail-fastoption was previously used to prevent the workflow from stopping if the documentation build failed. However, this option is only supported for matrix strategies. Since thedocsjob does not use a matrix strategy, thejobs.docs.strategy.fail-fastoption was replaced with thejobs.docs.continue-on-erroroption.
- The spell-checking was also added to the GitHub Actions tests workflow. This will run the spell-checking on all files in the repository and report any misspelled words during the CI/CD process.
- Set up a new GitHub Actions workflow that automatically publishes the ViRelAy package to the Python Package Index (PyPI) when a new release is created on GitHub.
Documentation
- The Sphinx build configuration and the configuration for "Read the Docs" were updated:
- The year in the copyright notice of the documentation is now always set to the current year.
- The way the GitHub URLs for the source code links are generated has been updated and now also supports type hints, which have to be handled differently from modules, classes, methods, and functions, because they are variables.
- The Ubuntu and Python versions used by "Read the Docs" to build the documentation were also updated to the latest versions, i.e., Ubuntu 24.04 and Python 3.12.
- The configuration Python file for building the documentation
docs/source/conf.pywas using thepkg_resourcesmodule, which has been deprecated and was removed in Python 3.12. It was replaced by the much simplerModule.__file__property. - Removed LaTeX commands for accented characters from the bibliography file, as they we are using Pybtex to handle the bibliography and it has full Unicode support.
- All articles in the documentation were completely rewritten to sound more professional and many small mistakes were corrected.
- A bug was fixed, which caused some of the links to the repository to be broken. Links to the repository are specified as relative paths in the reStructuredText source files of the documentation articles. During the build step, they are prepended with the actual repository URL. This URL already contained the path to the
sourcedirectory, which meant that all links to top-level files were incorrect. - Some of the screenshots of the UI were updated to showcase the new dark-mode UI.
- A plugin was added, which causes all external links to be opened in a new tab.
- The paragraphs in the documentation are now justified.
- Updated the repository read me to reflect the changes to the project and the documentation, and added shields.io badges for the license, the build status and the latest version.
- Python
Published by lecode-official about 1 year ago
virelay - v0.4.0 Release
- Added extensive documentation, which is available on ReadTheDocs
- Added a unit testing suite for the backend API, which has 100% code coverage
- Polished and extended the scripts for generating a random test project and a real-world project
- Updated all external dependencies of the frontend to their latest version
- Replaced the deprecated
THREE.GeometrywithTHREE.BufferedGeometryin the embedding renderer - Introduced linting using PyLint and Flake8 and fixed all linting warnings
- Fixed many smaller bugs
- The
add_borderfunction of theimage_processingmodule added a border of ones when it was requested to add a zero border - Fixed a bug in the
center_ cropfunction of theimage_processingmodule, which in some situations cut off too much - Renamed blue-black-yellow color map to black-yellow for consistency
- Fixed the return type of the
render_superimposed_heatmapfunction, the return type wasPIL.Imageand is nownumpy.ndarray - Renamed the
raw_heatmapparameters toattribution_datain all relevant heatmap rendering functions of theimage_processingmodule (raw heatmap is a term, which I used to use for attribution data, but attribution data is the common term) - Added validation for the
label_index_regexand thelabel_word_net_id_regexparameters of the constructor of theImageDirectoryDatasetclass - Fixed the parsing of label indices (they were not converted to integers) in the
get_samplemethod of theImageDirectoryDatasetclass - Fixed a NumPy warning (
boolshould be used insteadnumpy.bool) - Fixed the exception caught when retrieving samples from an
Hdf5Datasetin theget_sample(this would cause theget_samplemethod to pass through theIndexErrorinstead of raising aLookupErroritself, when the sample was not found) - In the
Projectclass some methods did not fail when the project was closed and others failed with wrong exceptions when the project was closed - Fixed index bound checks when retrieving attributions using the
get_attributionmethod of theAttributionDatabase(also indirectly affected theget_attributionmethod of theProjectclass) - When retrieving analyses using the
get_analysismethod of theAnalysisDatabaseclass, NumPy Arrays are now returned, where previously HDF5 datasets were returned - In the
Projectclass, the check whether a project contains a dataset, attributions, or analyses was incorrect and is now fixed - If a project has no dataset, then retrieving samples now fails with an informative exception
- Removed the
base_embeddingandbase_embedding_axes_indicesfrom embeddings, because these were not specification compliant, and the feature was never used (this was feature was also removed from the Angular Frontend) - Renamed instances of
eigen_valuevariable names in Python code andeigenValuevariable names in TypeScript toeigenvalue - Simplified the code in the
get_attribution_heatmapmethod of theServerclass (previously it was tested twice whether the heatmap is to be superimposed onto the input image, now this check is only performed once) - Removed multiple instances of dead code (code that never ran, because the conditions to run the code were always false)
- Fixed multiple docstrings in classes, methods, and functions (this fixes incorrect documentation, typos, or partially missing documentation)
- Fixed a bug in the heatmap rendering, where the resulting heatmap had an extra dimension, which caused the conversion to a PNG to fail
- Fixed a bug in the eigenvalue plot in the frontend, where, when an embedding did not use eigenvalue decomposition or there are no eigenvalues available for the embedding, then the ViRelAy frontend raised an error, now the eigenvalue plot is simply not displayed when an embedding has no eigenvalues
- Fixed a bug in the overlay image mode of ViRelAy, when there was no negative component in an attribution, then the heatmap was displayed instead of the heatmap superimposed onto the input image
- When superimposing a heatmap onto an input image, the negative and positive components are now weighted equally, thus making the negative and positive attribution parts comparable
- The
- Python
Published by lecode-official almost 4 years ago
virelay - v0.3.1 Release
- PyPI release
- updated example in README
- updated paper reference in README
- Python
Published by chr5tphr almost 5 years ago
virelay - v0.3.0 Release
- Added a license (AGPL)
- Added a share button, which generates a link that restores the entire current state
- Python
Published by lecode-official almost 5 years ago
virelay - v0.2.0 Release
The initial stable public release.
- Python
Published by lecode-official almost 5 years ago