-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into feature/planning/expose-ems-and-storage-powe…
…r-capacities-flex-model Signed-off-by: Victor <victor@seita.nl>
- Loading branch information
Showing
10 changed files
with
152 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
ARG PYTHON_VERSION | ||
|
||
FROM python:${PYTHON_VERSION}-slim-bookworm as update | ||
|
||
# Install dependencies | ||
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
build-essential \ | ||
git \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Copy the source code | ||
|
||
COPY . /app | ||
WORKDIR /app | ||
|
||
CMD ["python", "--version"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#!/bin/bash | ||
|
||
###################################################################### | ||
# This script sets up the docker environment for updating packages | ||
###################################################################### | ||
|
||
set -e | ||
set -x | ||
|
||
# Check if docker is installed | ||
if ! [ -x "$(command -v docker)" ]; then | ||
echo "Docker is not installed. Please install docker and try again." | ||
exit 1 | ||
fi | ||
|
||
# Check if we can run docker without sudo | ||
if ! docker ps > /dev/null 2>&1; then | ||
echo "Docker is not running without sudo. Please add your user to the docker group and try again." | ||
echo "You may use the following command to do so:" | ||
echo "sudo usermod -aG docker $USER" | ||
echo "You will need to log out and log back in for this to take effect." | ||
exit 1 | ||
fi | ||
|
||
SOURCE_DIR=$(pwd)/../ | ||
|
||
TEMP_DIR=$(mktemp -d) | ||
|
||
# Copy the build files to the temp directory | ||
cp -r ../ci $TEMP_DIR/ci | ||
cp -r ../requirements $TEMP_DIR/requirements | ||
cp -r ../Makefile $TEMP_DIR | ||
|
||
cd $TEMP_DIR | ||
|
||
PYTHON_VERSIONS=(3.8 3.9 3.10 3.11) | ||
|
||
for PYTHON_VERSION in "${PYTHON_VERSIONS[@]}" | ||
do | ||
# Check if container exists and remove it | ||
docker container inspect flexmeasures-update-packages-$PYTHON_VERSION > /dev/null 2>&1 && docker rm --force flexmeasures-update-packages-$PYTHON_VERSION | ||
# Build the docker image | ||
docker build --build-arg=PYTHON_VERSION=$PYTHON_VERSION -t flexmeasures-update-packages:$PYTHON_VERSION . -f ci/Dockerfile.update | ||
# Build flexmeasures | ||
# We are disabling running tests here, because we only want to update the packages. Running tests would require us to setup a postgres database, | ||
# which is not necessary for updating packages. | ||
docker run --name flexmeasures-update-packages-$PYTHON_VERSION -it flexmeasures-update-packages:$PYTHON_VERSION make upgrade-deps skip-test=yes | ||
# Copy the requirements to the source directory | ||
docker cp flexmeasures-update-packages-$PYTHON_VERSION:/app/requirements/$PYTHON_VERSION $SOURCE_DIR/requirements/ | ||
# Remove the container | ||
docker rm flexmeasures-update-packages-$PYTHON_VERSION | ||
# Remove the image | ||
docker rmi flexmeasures-update-packages:$PYTHON_VERSION | ||
done | ||
|
||
# Clean up docker builder cache | ||
echo "You can clean up the docker builder cache with the following command:" | ||
echo "docker builder prune --all -f" | ||
|
||
# Remove the temp directory | ||
rm -rf $TEMP_DIR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
Dependency Management | ||
======================= | ||
|
||
Requirements | ||
------------- | ||
|
||
FlexMeasures is built on the shoulder of giants, namely other open source libraries. | ||
Look into the `requirements` folder to see what is required to run FlexMeasures (`app.in`) or to test it, or to build this documentation. | ||
|
||
The `.in` files specify our general demands, and in `.txt` files, we keep a set of pinned dependency versions, so we can all work on the same background (crucial to compare behavior of installations to each other). | ||
|
||
To install these pinned requirements, run: | ||
|
||
.. code-block:: bash | ||
$ make install-for-dev | ||
Check out `Makefile` for other useful commands, but this should get you going. | ||
|
||
To upgrade the pinned versions, we can run: | ||
|
||
|
||
.. code-block:: bash | ||
$ make upgrade-deps | ||
Python versions | ||
---------------- | ||
|
||
In addition, we support a range of Python versions (as you can see in the `requirements` folder. | ||
|
||
Now ― you probably have only one Python version installed. Let's say you add a dependency, or update the minimum required version. How to update the pinned sets of requirements across all Python versions? | ||
|
||
.. code-block:: bash | ||
$ cd ci; ./update-packages.sh | ||
This script will use docker to do these upgrades per Python version. | ||
|
||
Still, we'd also like to be able to test FlexMeasures across all these versions. | ||
We've added that capability to our CI pipeline (GitHub Actions), so you could clone it an make a PR, in order to run them. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
from typing import Any | ||
|
||
from altair.vegalite.schema import Interpolate | ||
|
||
|
||
def validate_special_attributes(key: str, value: Any): | ||
"""Validate attributes with a special meaning in FlexMeasures.""" | ||
if key == "interpolate": | ||
Interpolate.validate(value) |