mirror of
https://github.com/microsoft/qlib.git
synced 2026-11-11 21:41:06 +08:00
* security: constrain config-driven code execution * fix: address security test and lint failures * ci: restore dependency and title lint compatibility * ci: handle current MLflow and Windows OSQP changes * ci: use lxml release with cross-platform wheels * fix: defer optional CVXPY solver imports * style: document intentional lazy import * ci: skip broken released OSQP on Windows Python 3.8 * test: make MLflow client timing check robust * ci: retry nondeterministic benchmark smoke test * fix: cap filelock before fork safety regression * fix: use filelock release compatible with multiprocessing * fix(security): restrict operator lookup and validate trusted roots * fix(security): preserve numeric expressions and legacy model imports * fix: preserve TRA initialization and document config migration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: preserve safe expression syntax and cache semantics Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: use explicit scoped trust for file modules Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: satisfy CI lint without weakening trust checks Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: handle escaped file paths in module refusal errors Match the repr-formatted module path in refusal messages and cover Windows, UNC, quoted, and newline-containing paths on every platform. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: preserve expression parser error logging Log ExpressionSyntaxError with its field and traceback before re-raising, while preserving custom operator NameError and SyntaxError handling. Add five regression cases covering logging, exception identity, and failed cache entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: isolate expression logger capture Capture parser logs directly on qlib.data without propagating to parent and root capture handlers. Restore logger state with monkeypatch and retain exact single-record, traceback, and exception-identity assertions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(security): preserve malformed feature boundaries and reject unsupported literals * test(security): cover malformed dollar-prefixed expressions --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Yang Liu <DG-git-dev@users.noreply.github.com>
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import argparse
|
|
|
|
import qlib
|
|
from ruamel.yaml import YAML
|
|
from qlib.utils import init_instance_by_config
|
|
|
|
|
|
def main(seed, config_file="configs/config_alstm.yaml"):
|
|
# set random seed
|
|
with open(config_file) as f:
|
|
yaml = YAML(typ="safe", pure=True)
|
|
config = yaml.load(f)
|
|
|
|
# seed_suffix = "/seed1000" if "init" in config_file else f"/seed{seed}"
|
|
seed_suffix = ""
|
|
config["task"]["model"]["kwargs"].update(
|
|
{"seed": seed, "logdir": config["task"]["model"]["kwargs"]["logdir"] + seed_suffix}
|
|
)
|
|
|
|
# initialize workflow
|
|
qlib.init(**config["qlib_init"])
|
|
dataset = init_instance_by_config(config["task"]["dataset"])
|
|
model = init_instance_by_config(config["task"]["model"])
|
|
|
|
# train model
|
|
model.fit(dataset)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# set params from cmd
|
|
parser = argparse.ArgumentParser(allow_abbrev=False)
|
|
parser.add_argument("--seed", type=int, default=1000, help="random seed")
|
|
parser.add_argument("--config_file", type=str, default="configs/config_alstm.yaml", help="config file")
|
|
args = parser.parse_args()
|
|
main(**vars(args))
|