This repository was archived by the owner on Jan 19, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Automatisierte Herleitung von Optional Annotations #443
Labels
enhancement 💡
New feature or request
Comments
JSON-Format für erzeugte Annotationen (wie {
"optionals": {
"sklearn/sklearn._config/config_context/working_memory": {
"target": "sklearn/sklearn._config/config_context/working_memory",
"defaultType": "string",
"defaultValue": "bla"
}
}
} |
Usage-Daten auf sciebo: https://uni-bonn.sciebo.de/f/1825964771 |
from __future__ import annotations
from enum import Enum, auto
def __get_parameter_type(values: list[tuple[str, int]]) -> (ParameterType, str):
if len(values) == 0:
return ParameterType.Unused, None
elif len(values) == 1:
return ParameterType.Constant, values[0][0]
n = len(values)
m = sum([count for value, count in values])
seconds_most_used_value, most_used_value = sorted(values, key=lambda tup: tup[1])[-2:]
if most_used_value[1] - seconds_most_used_value[1] <= m/n:
return ParameterType.Required, None
else:
return ParameterType.Optional, most_used_value[0]
class ParameterType(Enum):
Constant = 0
Optional = 1
Required = 2
Unused = 3 |
This was referenced Apr 29, 2022
Repository owner
moved this from Ready for Review
to ✔️ Done
in API Editor
May 6, 2022
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Is your feature request related to a problem? Please describe
Bisher müssen Annotations von Hand markiert werden.
Desired solution
Die Analyse der Daten, die in Form der usage.json und api.json Datei gegeben sind, soll daher nun automatisch geschehen und die Optional Annotations sollen als Teil der annotations.json datei exportiert werden.
Mehr Informationen zu den Details sind hier zu finden.
Additional context
Die Analazye eines Paramters ergeben das einer der Werte "überdurchschnittlich" oft verwendet wird.
Hier kann beispielweise die Anzahl der Aufrufe der beiden meist verwendeten Werte verglichen werden.
Der am meisten verwendete Wert sollte signifikant häufiger auftreten.
Sei n = Anzahl der Paramteter Werte.
Sei m die Anzahl der Aufrufe.
Die Differenz zwischen den Aufrufen des am meisten verwendete Wert und des zweit meist verwendeten Wert sollte dabei nicht kleiner als m/n sein.
Dieses Kriterium gilt als Orientierung und nicht als finale Bedingung. Das Kriterium muss leicht ersetzbar sein.
Implementations Informationen
In _generate_annotations.py:
def __get_optional_annotations(usages: UsageStore, api: API) -> dict["optionals", dict[str, dict[str, str]]]:
Rückgabetyp siehe Kommentar von Lars.
Der Aufruf soll anschließend den anderen in generate_annotations() beigefügt werden.
Edit: Change 2m/n to m/n since the first formula would not work for n=2.
The text was updated successfully, but these errors were encountered: