All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.0 - 2024-10-14
- Drop Python 3.9 support. (#112)
0.22.0 - 2024-09-04
- The Opener and Function workspace does not try to create folder for data samples anymore. (#100)
- Remove base Docker image. Substrafl now uses python-slim as base image. (#101)
0.21.4 - 2024-06-03
No significant changes.
0.21.3 - 2024-03-27
0.21.2 - 2024-03-07
- Update dependencies
0.21.1 - 2024-02-26
- Updated dependencies
0.21.0 - 2023-10-06
- Remove
model
andmodels
for input and output identifiers in tests. Replace byshared
instead. (#84) - BREAKING: Remove minimal and workflow docker images (#86)
- Remove python lib from Docker image (#86)
- Support on Python 3.11 (#85)
- Contributing, contributors & code of conduct files (#77)
0.20.0 - 2022-12-19
- Add optional argument to
register
decorator to choose a custom function name. Allow to register the same function several time with a different name (#74) - Rank is now passed in a task properties dictionary from the backend (instead of the rank argument) (#75)
0.19.0 - 2022-11-22
-
BREAKING CHANGE (#65)
- Register functions to substratools can be done with a decorator.
def my_function1: pass def my_function2: pass if __name__ == '__main__': tools.execute(my_function1, my_function2)
become
@tools.register def my_function1: pass @tools.register def my_function2: pass if __name__ == '__main__': tools.execute()
-
BREAKING CHANGE (#63)
- Rename algo to function.
tools.algo.execute
becometools.execute
- The previous algo class pass to the function
tools.algo.execute
is now several functions pass as arguments totools.execute
. The function given by the cli--function-name
is executed.
if __name__ == '__main__': tools.algo.execute(MyAlgo())
become
if __name__ == '__main__': tools.execute(my_function1, my_function2)
- Remove depreciated
pytest-runner
from setup.py (#71) - Replace backslash by slash in TaskResources to fix windows compatibility (#70)
- Update flake8 repository in pre-commit configuration (#69)
- BREAKING CHANGE: Update substratools Docker image (#112)
0.18.0 - 2022-09-26
- feat: allow CLI parameters to be read from a file
-
BREAKING CHANGES:
- the opener only exposes
get_data
andfake_data
methods. - the results of the above method is passed under the
datasamples
keys within theinputs
dict arg of all tools methods (train, predict, aggregate, score). - all method (train, predict, aggregate, score) now takes a
task_properties
argument (dict) in addition toinputs
andoutputs
. - The
rank
of a task previously passed under therank
key within the inputs is now given in thetask_properties
dict under therank
key.
- the opener only exposes
-
BREAKING CHANGE: The metric is now a generic algo, replace
import substratools as tools
class MyMetric(tools.Metrics):
# ...
if __name__ == '__main__':
tools.metrics.execute(MyMetric())
by
import substratools as tools
class MyMetric(tools.MetricAlgo):
# ...
if __name__ == '__main__':
tools.algo.execute(MyMetric())
0.17.0 - 2022-09-19
- feat: all algo classes rely on a generic algo class
0.16.0 - 2022-09-12
-
Remove documentation as it is not used. It will be replaced later on.
-
BREAKING CHANGES: the user must now pass the method name to execute within the dockerfile of both
algo
andmetric
under the--method-name
argument. The method name still needs to be one of thealgo
ormetric
allowed method name: train, predict, aggregate, score.ENTRYPOINT ["python3", "metrics.py"]
shall be replaced by:
ENTRYPOINT ["python3", "metrics.py", "--method-name", "score"]
-
BREAKING CHANGES: rename connect-tools to substra-tools (except the github folder)
0.15.0 - 2022-08-29
-
BREAKING CHANGES:
- methods from algo, composite algo, aggregate and metrics now take
inputs
(TypeDict) andoutputs
(TypeDict) as arguments - the user must load and save all the inputs and outputs of those methods (except for the datasamples)
load_predictions
andget_predictions
methods have been removed from the openerload_trunk_model
,save_trunk_model
,load_head_model
,save_head_model
have been removed from thetools.CompositeAlgo
classload_model
andsave_model
have been removed from bothtools.Algo
andtools.AggregateAlgo
classes
- methods from algo, composite algo, aggregate and metrics now take
0.14.0 - 2022-08-09
- BREAKING CHANGE: drop Python 3.7 support
- fix: metric with type np.float32() is not Json serializable #47
0.13.0 - 2022-05-22
- BREAKING CHANGE: change --debug (bool) to --log-level (str)
0.12.0 - 2022-04-29
- nvidia rotating keys
- (BREAKING) algos receive arguments are generic inputs/outputs dict
0.11.0 - 2022-04-11
- alias in pyhton 3.7 for python3
- ci: build docker images as part of CI checks
- ci: push latest image from main branch
- chore: make Dockerfiles independent from each other