From 7bca74e9b6bd030f1c84bc4ceda1124693342c40 Mon Sep 17 00:00:00 2001 From: Linlang Date: Mon, 19 Jun 2023 09:32:34 +0800 Subject: [PATCH 01/38] change_url --- qlib/tests/data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qlib/tests/data.py b/qlib/tests/data.py index 2163b4bf7e5..fe7003ff40a 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -16,7 +16,7 @@ class GetData: DATASET_VERSION = "v2" - REMOTE_URL = "https://qlibpublic.blob.core.windows.net/data/default/stock_data" + REMOTE_URL = "http://fintech.msra.cn/stock_data/downloads" QLIB_DATA_NAME = "{dataset_name}_{region}_{interval}_{qlib_version}.zip" def __init__(self, delete_zip_file=False): From 05e00cfff83b45cd05dadf16698ea1ae8e68875c Mon Sep 17 00:00:00 2001 From: Linlang Date: Mon, 19 Jun 2023 10:07:00 +0800 Subject: [PATCH 02/38] fix_CI --- .github/workflows/test_qlib_from_source.yml | 2 +- .github/workflows/test_qlib_from_source_slow.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 68dfe5b3fdb..74036d4713a 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -50,7 +50,7 @@ jobs: - name: Set up Python tools run: | - python -m pip install --upgrade cython + python -m pip install cython python -m pip install -e .[dev] - name: Lint with Black diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index f8e43fa179b..a575556a6b6 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -31,7 +31,7 @@ jobs: # pip release version 23.1 on Apr.15 2023, CI failed to run, Please refer to #1495 ofr detailed logs. # The pip version has been temporarily fixed to 23.0.1 run: | - python -m pip install pip==23.0.1 + python -m pip install pip==23.0.2 pip install --upgrade cython numpy pip install -e .[dev] From 5e7eaeff6d88184853f7de70da37455a9cc6df6b Mon Sep 17 00:00:00 2001 From: Linlang Date: Mon, 19 Jun 2023 10:11:55 +0800 Subject: [PATCH 03/38] fix_CI_2 --- .github/workflows/test_qlib_from_source.yml | 1 + .github/workflows/test_qlib_from_source_slow.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 74036d4713a..900b736097e 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -50,6 +50,7 @@ jobs: - name: Set up Python tools run: | + python -m pip install pip==23.0 python -m pip install cython python -m pip install -e .[dev] diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index a575556a6b6..b4136ab7956 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -31,7 +31,7 @@ jobs: # pip release version 23.1 on Apr.15 2023, CI failed to run, Please refer to #1495 ofr detailed logs. # The pip version has been temporarily fixed to 23.0.1 run: | - python -m pip install pip==23.0.2 + python -m pip install pip==23.0 pip install --upgrade cython numpy pip install -e .[dev] From 53c9ee011675f8171c9bdd2ee81b7a636e96a814 Mon Sep 17 00:00:00 2001 From: Linlang Date: Mon, 19 Jun 2023 10:35:11 +0800 Subject: [PATCH 04/38] fix_CI_3 --- .github/workflows/test_qlib_from_source.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 900b736097e..10df1f576eb 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -130,8 +130,9 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - azcopy copy https://qlibpublic.blob.core.windows.net/data/rl /tmp/qlibpublic/data --recursive - mv /tmp/qlibpublic/data tests/.data + azcopy copy https://qlibpublic.blob.core.windows.net/data/rl tests/.data/data --recursive + # azcopy copy https://qlibpublic.blob.core.windows.net/data/rl /tmp/qlibpublic/data --recursive + # mv /tmp/qlibpublic/data tests/.data - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} From f5728a356dd1ba6dd1e7133c233f22b5fe9749a4 Mon Sep 17 00:00:00 2001 From: Linlang Date: Mon, 19 Jun 2023 23:40:27 +0800 Subject: [PATCH 05/38] fix_CI_4 --- .github/workflows/test_qlib_from_source.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 10df1f576eb..dc86c3f6f61 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -130,9 +130,8 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - azcopy copy https://qlibpublic.blob.core.windows.net/data/rl tests/.data/data --recursive - # azcopy copy https://qlibpublic.blob.core.windows.net/data/rl /tmp/qlibpublic/data --recursive - # mv /tmp/qlibpublic/data tests/.data + wget http://fintech.msra.cn/stock_data/downloads/rl.zip + unzip -n rl.zip -d tests/.data - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} From b8ccb43f9cb3e852b057d7c0f3530d598154e907 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 08:54:48 +0800 Subject: [PATCH 06/38] fix_CI_5 --- .github/workflows/test_qlib_from_source.yml | 3 ++- .github/workflows/test_qlib_from_source_slow.yml | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index dc86c3f6f61..a15848647c3 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -37,6 +37,7 @@ jobs: if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} run: | python -m pip install torch torchvision torchaudio + python -m pip install bz2file - name: Installing pytorch for ubuntu if: ${{ matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' }} @@ -51,7 +52,7 @@ jobs: - name: Set up Python tools run: | python -m pip install pip==23.0 - python -m pip install cython + python -m pip install --upgrade cython python -m pip install -e .[dev] - name: Lint with Black diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index b4136ab7956..487ab8cb330 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -35,6 +35,11 @@ jobs: pip install --upgrade cython numpy pip install -e .[dev] + - name: Installing pytorch for macos + if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} + run: | + python -m pip install bz2file + - name: Downloads dependencies data run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn From 5896b8874bb2e028fa25882cccbc8eea149874bd Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 09:14:06 +0800 Subject: [PATCH 07/38] fix_CI_6 --- .github/workflows/test_qlib_from_source.yml | 5 ++--- .github/workflows/test_qlib_from_source_slow.yml | 7 +------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index a15848647c3..e757ff72772 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -29,15 +29,14 @@ jobs: - name: Update pip to the latest version # pip release version 23.1 on Apr.15 2023, CI failed to run, Please refer to #1495 ofr detailed logs. - # The pip version has been temporarily fixed to 23.0.1 + # The pip version has been temporarily fixed to 23.0 run: | - python -m pip install pip==23.0.1 + python -m pip install pip==23.0 - name: Installing pytorch for macos if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} run: | python -m pip install torch torchvision torchaudio - python -m pip install bz2file - name: Installing pytorch for ubuntu if: ${{ matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' }} diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 487ab8cb330..67659e20e1b 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -29,17 +29,12 @@ jobs: - name: Set up Python tools # pip release version 23.1 on Apr.15 2023, CI failed to run, Please refer to #1495 ofr detailed logs. - # The pip version has been temporarily fixed to 23.0.1 + # The pip version has been temporarily fixed to 23.0 run: | python -m pip install pip==23.0 pip install --upgrade cython numpy pip install -e .[dev] - - name: Installing pytorch for macos - if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} - run: | - python -m pip install bz2file - - name: Downloads dependencies data run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn From 67c10a9be3a0c0a8d4437714f323743452a5220e Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 09:47:46 +0800 Subject: [PATCH 08/38] fix_CI_7 --- .github/workflows/test_qlib_from_source.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index e757ff72772..cb7855b32e0 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -20,10 +20,10 @@ jobs: steps: - name: Test qlib from source - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} From 1ed650d48756c922b8688ea09b6d29d2154f8c9c Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 09:57:54 +0800 Subject: [PATCH 09/38] fix_CI_8 --- .github/workflows/test_qlib_from_source_slow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 67659e20e1b..f2e3b62e27c 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -20,10 +20,10 @@ jobs: steps: - name: Test qlib from source slow - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} From b3eb9f18b3070618d5cb460a5aac2a3ed24c37a9 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 10:13:06 +0800 Subject: [PATCH 10/38] fix_CI_9 --- .github/workflows/test_qlib_from_source_slow.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index f2e3b62e27c..c585150271f 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -24,8 +24,13 @@ jobs: - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 + if: matrix.os != 'macos-latest' || ( matrix.os == 'macos-latest' && matrix.python != '3.7' ) with: - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.python }} + uses: actions/setup-python@v4 + if: matrix.os == 'macos-latest' && matrix.python == '3.7' + with: + python-version: "3.7.16" - name: Set up Python tools # pip release version 23.1 on Apr.15 2023, CI failed to run, Please refer to #1495 ofr detailed logs. From 8803ac7297791785dd5a708ec607fba6669eab49 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 10:28:14 +0800 Subject: [PATCH 11/38] fix_CI_10 --- .github/workflows/test_qlib_from_source_slow.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index c585150271f..fb7b4e668b7 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -27,7 +27,6 @@ jobs: if: matrix.os != 'macos-latest' || ( matrix.os == 'macos-latest' && matrix.python != '3.7' ) with: python-version: ${{ matrix.python }} - uses: actions/setup-python@v4 if: matrix.os == 'macos-latest' && matrix.python == '3.7' with: python-version: "3.7.16" From 8656336c549f1d1fc4088ede814b1736ce7a80a7 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 10:35:33 +0800 Subject: [PATCH 12/38] fix_CI_11 --- .github/workflows/test_qlib_from_source_slow.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index fb7b4e668b7..1f267797062 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -23,10 +23,11 @@ jobs: uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + - uses: actions/setup-python@v4 if: matrix.os != 'macos-latest' || ( matrix.os == 'macos-latest' && matrix.python != '3.7' ) with: python-version: ${{ matrix.python }} + - uses: actions/setup-python@v4 if: matrix.os == 'macos-latest' && matrix.python == '3.7' with: python-version: "3.7.16" From 0d3ef2dd38095a4aaff5eb5127673d998d37888d Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 10:51:55 +0800 Subject: [PATCH 13/38] fix_CI_12 --- .github/workflows/test_qlib_from_source_slow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 1f267797062..3bb6188ce33 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -23,12 +23,12 @@ jobs: uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - - uses: actions/setup-python@v4 if: matrix.os != 'macos-latest' || ( matrix.os == 'macos-latest' && matrix.python != '3.7' ) + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - - uses: actions/setup-python@v4 if: matrix.os == 'macos-latest' && matrix.python == '3.7' + uses: actions/setup-python@v4 with: python-version: "3.7.16" From c667a40157d7d3820638bdb9c26c8a86c5e29a06 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 10:55:59 +0800 Subject: [PATCH 14/38] fix_CI_13 --- .github/workflows/test_qlib_from_source_slow.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 3bb6188ce33..15ea6917729 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -23,7 +23,6 @@ jobs: uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - if: matrix.os != 'macos-latest' || ( matrix.os == 'macos-latest' && matrix.python != '3.7' ) uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} From ae9940243197b63d6e9546bd19b6b60cdafb2ddc Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 10:57:25 +0800 Subject: [PATCH 15/38] fix_CI_13 --- .github/workflows/test_qlib_from_source_slow.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 15ea6917729..dd01c32b880 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -23,9 +23,9 @@ jobs: uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} + # uses: actions/setup-python@v4 + # with: + # python-version: ${{ matrix.python }} if: matrix.os == 'macos-latest' && matrix.python == '3.7' uses: actions/setup-python@v4 with: From 826010c02970adedc02b4e3d808b999430f70af0 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 11:12:23 +0800 Subject: [PATCH 16/38] fix_CI_14 --- .../workflows/test_qlib_from_source_slow.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index dd01c32b880..0c6fd5eb335 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -23,14 +23,23 @@ jobs: uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - # uses: actions/setup-python@v4 - # with: - # python-version: ${{ matrix.python }} - if: matrix.os == 'macos-latest' && matrix.python == '3.7' + if: (matrix.os == 'macos-latest' && matrix.python == '3.7') || (matrix.os == 'macos-11' && matrix.python == '3.7') uses: actions/setup-python@v4 with: python-version: "3.7.16" + - name: Set up Python ${{ matrix.python-version }} + if: (matrix.os == 'macos-latest' && matrix.python == '3.8') || (matrix.os == 'macos-11' && matrix.python == '3.8') + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Set up Python ${{ matrix.python-version }} + if: (matrix.os == 'windows-latest' || matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04') && (matrix.python == '3.7' || matrix.python == '3.8') + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Set up Python tools # pip release version 23.1 on Apr.15 2023, CI failed to run, Please refer to #1495 ofr detailed logs. # The pip version has been temporarily fixed to 23.0 From ffd0cf5174fc7b616e28d77ea2485a63de8be826 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 11:20:26 +0800 Subject: [PATCH 17/38] fix_CI_15 --- .github/workflows/test_qlib_from_source_slow.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 0c6fd5eb335..1a94384543e 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -23,19 +23,19 @@ jobs: uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os == 'macos-latest' && matrix.python == '3.7') || (matrix.os == 'macos-11' && matrix.python == '3.7') + if: (matrix.os == 'macos-latest' && matrix.python-version == '3.7') || (matrix.os == 'macos-11' && matrix.python-version == '3.7') uses: actions/setup-python@v4 with: python-version: "3.7.16" - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os == 'macos-latest' && matrix.python == '3.8') || (matrix.os == 'macos-11' && matrix.python == '3.8') + if: (matrix.os == 'macos-latest' && matrix.python-version == '3.8') || (matrix.os == 'macos-11' && matrix.python-version == '3.8') uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os == 'windows-latest' || matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04') && (matrix.python == '3.7' || matrix.python == '3.8') + if: (matrix.os == 'windows-latest' || matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04') && (matrix.python-version == '3.7' || matrix.python-version == '3.8') uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} From f9bf0581d108780d39dc34e97bb70d8ceea1433e Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 12:23:27 +0800 Subject: [PATCH 18/38] fix_CI_16 --- .github/workflows/test_qlib_from_source.yml | 10 ++++++++++ .github/workflows/test_qlib_from_source_slow.yml | 11 ++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index cb7855b32e0..ef425a1c133 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -22,7 +22,17 @@ jobs: - name: Test qlib from source uses: actions/checkout@v3 + # Since version 3.7 of python for MacOS is installed in CI, version 3.7.17, this version causes "_bz not found error". + # So we make the version number of python 3.7 for MacOS more specific. + # refs: https://github.com/actions/setup-python/issues/682 - name: Set up Python ${{ matrix.python-version }} + if: (matrix.os == 'macos-latest' && matrix.python-version == '3.7') || (matrix.os == 'macos-11' && matrix.python-version == '3.7') + uses: actions/setup-python@v4 + with: + python-version: "3.7.16" + + - name: Set up Python ${{ matrix.python-version }} + if: (matrix.os != 'macos-latest' && matrix.python-version != '3.7') || (matrix.os != 'macos-11' && matrix.python-version != '3.7') uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 1a94384543e..047d2431cd6 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -22,6 +22,9 @@ jobs: - name: Test qlib from source slow uses: actions/checkout@v3 + # Since version 3.7 of python for MacOS is installed in CI, version 3.7.17, this version causes "_bz not found error". + # So we make the version number of python 3.7 for MacOS more specific. + # refs: https://github.com/actions/setup-python/issues/682 - name: Set up Python ${{ matrix.python-version }} if: (matrix.os == 'macos-latest' && matrix.python-version == '3.7') || (matrix.os == 'macos-11' && matrix.python-version == '3.7') uses: actions/setup-python@v4 @@ -29,13 +32,7 @@ jobs: python-version: "3.7.16" - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os == 'macos-latest' && matrix.python-version == '3.8') || (matrix.os == 'macos-11' && matrix.python-version == '3.8') - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os == 'windows-latest' || matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04') && (matrix.python-version == '3.7' || matrix.python-version == '3.8') + if: (matrix.os != 'macos-latest' && matrix.python-version != '3.7') || (matrix.os != 'macos-11' && matrix.python-version != '3.7') uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} From a7cd56fd453ce5e095f7cb294e92f81fb08cb3a5 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 14:44:21 +0800 Subject: [PATCH 19/38] fix_CI_17 --- .github/workflows/test_qlib_from_source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index ef425a1c133..f3931acb849 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -140,7 +140,7 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - wget http://fintech.msra.cn/stock_data/downloads/rl.zip + curl -o "rl.zip" "http://fintech.msra.cn/stock_data/downloads/rl.zip" unzip -n rl.zip -d tests/.data - name: Install Lightgbm for MacOS From f2e4dd3b69abcc3547af377d0b12d492019247cf Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 15:28:28 +0800 Subject: [PATCH 20/38] fix_CI_18 --- .github/workflows/test_qlib_from_source.yml | 4 ++-- .github/workflows/test_qlib_from_source_slow.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index f3931acb849..90a07860445 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -32,7 +32,7 @@ jobs: python-version: "3.7.16" - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os != 'macos-latest' && matrix.python-version != '3.7') || (matrix.os != 'macos-11' && matrix.python-version != '3.7') + if: (matrix.os != 'macos-latest' || matrix.python-version != '3.7') && (matrix.os != 'macos-11' || matrix.python-version != '3.7') uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} @@ -141,7 +141,7 @@ jobs: run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn curl -o "rl.zip" "http://fintech.msra.cn/stock_data/downloads/rl.zip" - unzip -n rl.zip -d tests/.data + unzip -n rl.zip -d tests/.data/rl - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 047d2431cd6..1dfcc0179c2 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -32,7 +32,7 @@ jobs: python-version: "3.7.16" - name: Set up Python ${{ matrix.python-version }} - if: (matrix.os != 'macos-latest' && matrix.python-version != '3.7') || (matrix.os != 'macos-11' && matrix.python-version != '3.7') + if: (matrix.os != 'macos-latest' || matrix.python-version != '3.7') && (matrix.os != 'macos-11' || matrix.python-version != '3.7') uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} From 40c2c3509707b442e72e20d93533a879902a809d Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 15:50:26 +0800 Subject: [PATCH 21/38] fix_CI_19 --- .github/workflows/test_qlib_from_source.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 90a07860445..a806f4856b2 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -140,8 +140,10 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - curl -o "rl.zip" "http://fintech.msra.cn/stock_data/downloads/rl.zip" - unzip -n rl.zip -d tests/.data/rl + curl -o "/tmp/qlibpublic/data/rl.zip" "http://fintech.msra.cn/stock_data/downloads/rl.zip" + unzip -n /tmp/qlibpublic/data/rl.zip -d /tmp/qlibpublic/data/rl + mv /tmp/qlibpublic/data tests/.data + - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} From 2ebae7196463f3f87879a8cf59d874d3a9592014 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 16:06:22 +0800 Subject: [PATCH 22/38] fix_CI_20 --- .github/workflows/test_qlib_from_source.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index a806f4856b2..756568c9a35 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -140,8 +140,9 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - curl -o "/tmp/qlibpublic/data/rl.zip" "http://fintech.msra.cn/stock_data/downloads/rl.zip" - unzip -n /tmp/qlibpublic/data/rl.zip -d /tmp/qlibpublic/data/rl + curl -O "http://fintech.msra.cn/stock_data/downloads/rl.zip" + mkdir -p /tmp/qlibpublic/data + unzip -n rl.zip -d /tmp/qlibpublic/data/rl mv /tmp/qlibpublic/data tests/.data From 6640b06224422ea9cbf654786c7dd60fa46fe7bc Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 17:57:09 +0800 Subject: [PATCH 23/38] fix_CI_21 --- .github/workflows/test_qlib_from_source.yml | 9 +++++++-- .github/workflows/test_qlib_from_source_slow.yml | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 756568c9a35..36d1bb26563 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -142,8 +142,13 @@ jobs: python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn curl -O "http://fintech.msra.cn/stock_data/downloads/rl.zip" mkdir -p /tmp/qlibpublic/data - unzip -n rl.zip -d /tmp/qlibpublic/data/rl - mv /tmp/qlibpublic/data tests/.data + # unzip -n rl.zip -d /tmp/qlibpublic/data/rl + # mv /tmp/qlibpublic/data tests/.data + + - name: test + run: | + echo ${{ ls /tmp }} + echo ${{ pwd }} - name: Install Lightgbm for MacOS diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index 1dfcc0179c2..bb3d28da276 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -19,7 +19,7 @@ jobs: python-version: [3.7, 3.8] steps: - - name: Test qlib from source slow + name: Test qlib from source slow uses: actions/checkout@v3 # Since version 3.7 of python for MacOS is installed in CI, version 3.7.17, this version causes "_bz not found error". From 8df53dbc87cd2a515225718cafd8107797e953e5 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 18:00:18 +0800 Subject: [PATCH 24/38] fix_CI_22 --- .github/workflows/test_qlib_from_source.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 36d1bb26563..6c7e605eb34 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -147,9 +147,8 @@ jobs: - name: test run: | - echo ${{ ls /tmp }} - echo ${{ pwd }} - + echo "$(ls /tmp)" + echo "Current working directory: $(pwd)" - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} From 32e120283d69f6f5cfe3e1252d21a2f003364822 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 18:13:44 +0800 Subject: [PATCH 25/38] fix_CI_23 --- .github/workflows/test_qlib_from_source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 6c7e605eb34..d8b77d92676 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -142,7 +142,7 @@ jobs: python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn curl -O "http://fintech.msra.cn/stock_data/downloads/rl.zip" mkdir -p /tmp/qlibpublic/data - # unzip -n rl.zip -d /tmp/qlibpublic/data/rl + unzip -n rl.zip -d /tmp/qlibpublic/data/rl # mv /tmp/qlibpublic/data tests/.data - name: test From 610993267abed1ca7f2734b276a92ddafadd78c7 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 18:26:54 +0800 Subject: [PATCH 26/38] fix_CI_24 --- .github/workflows/test_qlib_from_source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index d8b77d92676..040d677e11a 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -141,7 +141,7 @@ jobs: run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn curl -O "http://fintech.msra.cn/stock_data/downloads/rl.zip" - mkdir -p /tmp/qlibpublic/data + mkdir -p /tmp/qlibpublic/data/rl unzip -n rl.zip -d /tmp/qlibpublic/data/rl # mv /tmp/qlibpublic/data tests/.data From bd53a659d2f6f84a5924c3683854174ac240e35a Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 19:03:03 +0800 Subject: [PATCH 27/38] fix_CI_25 --- .github/workflows/test_qlib_from_source.yml | 7 ++-- qlib/tests/data.py | 37 +++++++++++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 040d677e11a..9b4f181fea6 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -140,14 +140,11 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - curl -O "http://fintech.msra.cn/stock_data/downloads/rl.zip" - mkdir -p /tmp/qlibpublic/data/rl - unzip -n rl.zip -d /tmp/qlibpublic/data/rl - # mv /tmp/qlibpublic/data tests/.data + python scripts/get_data.py rl_data --target_dir tests/.data - name: test run: | - echo "$(ls /tmp)" + echo "$(ls ./tests)" echo "Current working directory: $(pwd)" - name: Install Lightgbm for MacOS diff --git a/qlib/tests/data.py b/qlib/tests/data.py index fe7003ff40a..6db7062f183 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -165,6 +165,43 @@ def _get_file_name(v): file_name = _get_file_name("latest") self._download_data(file_name.lower(), target_dir, delete_old, dataset_version=version) + def rl_data( + self, + target_dir="~/.qlib/qlib_data/cn_data", + version=None, + delete_old=True, + exists_skip=False, + ): + """download cn qlib data from remote + + Parameters + ---------- + target_dir: str + data save directory + version: str + data version, value from [v1, ...], by default None(use script to specify version) + delete_old: bool + delete an existing directory, by default True + exists_skip: bool + exists skip, by default False + + Examples + --------- + # get 1d data + python get_data.py rl_data --target_dir ~/.qlib/qlib_data/cn_data + ------- + + """ + if exists_skip and exists_qlib_data(target_dir): + logger.warning( + f"Data already exists: {target_dir}, the data download will be skipped\n" + f"\tIf downloading is required: `exists_skip=False` or `change target_dir`" + ) + return + + file_name = "rl.zip" + self._download_data(file_name.lower(), target_dir, delete_old, dataset_version=version) + def csv_data_cn(self, target_dir="~/.qlib/csv_data/cn_data"): """download cn csv data from remote From 152418f16906e4da72f7bc544e32c2e2a613552d Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 19:52:32 +0800 Subject: [PATCH 28/38] fix_CI_26 --- .github/workflows/test_qlib_from_source.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 9b4f181fea6..ed45d853a44 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -140,12 +140,7 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - python scripts/get_data.py rl_data --target_dir tests/.data - - - name: test - run: | - echo "$(ls ./tests)" - echo "Current working directory: $(pwd)" + python scripts/get_data.py rl_data --target_dir tests/.data/rl - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} From 57b237e46e14e5727c0f5d8fbbb70c46d746ea76 Mon Sep 17 00:00:00 2001 From: Linlang Date: Tue, 20 Jun 2023 20:51:38 +0800 Subject: [PATCH 29/38] fix_CI_27 --- .github/workflows/test_qlib_from_source.yml | 1 - .github/workflows/test_qlib_from_source_slow.yml | 2 +- qlib/tests/data.py | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index ed45d853a44..59057ff47e5 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -60,7 +60,6 @@ jobs: - name: Set up Python tools run: | - python -m pip install pip==23.0 python -m pip install --upgrade cython python -m pip install -e .[dev] diff --git a/.github/workflows/test_qlib_from_source_slow.yml b/.github/workflows/test_qlib_from_source_slow.yml index bb3d28da276..1dfcc0179c2 100644 --- a/.github/workflows/test_qlib_from_source_slow.yml +++ b/.github/workflows/test_qlib_from_source_slow.yml @@ -19,7 +19,7 @@ jobs: python-version: [3.7, 3.8] steps: - name: Test qlib from source slow + - name: Test qlib from source slow uses: actions/checkout@v3 # Since version 3.7 of python for MacOS is installed in CI, version 3.7.17, this version causes "_bz not found error". diff --git a/qlib/tests/data.py b/qlib/tests/data.py index 6db7062f183..4e5bd9a08b8 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -167,7 +167,7 @@ def _get_file_name(v): def rl_data( self, - target_dir="~/.qlib/qlib_data/cn_data", + target_dir="~/.qlib/qlib_data/rl_data", version=None, delete_old=True, exists_skip=False, @@ -187,8 +187,8 @@ def rl_data( Examples --------- - # get 1d data - python get_data.py rl_data --target_dir ~/.qlib/qlib_data/cn_data + # get rl data + python get_data.py rl_data --target_dir ~/.qlib/qlib_data/rl_data ------- """ From 90736ffd4266471f0b7c6a2ed949ed47d1b25d22 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 16:43:17 +0800 Subject: [PATCH 30/38] fix_get_data_error --- .github/workflows/test_qlib_from_source.yml | 2 +- qlib/tests/data.py | 53 +++++---------------- 2 files changed, 12 insertions(+), 43 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 59057ff47e5..d599c6ec1dc 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -139,7 +139,7 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - python scripts/get_data.py rl_data --target_dir tests/.data/rl + python scripts/get_data.py qlib_data --name rl_data --target_dir tests/.data/rl - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} diff --git a/qlib/tests/data.py b/qlib/tests/data.py index 4e5bd9a08b8..de3a2a2ecaf 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -11,12 +11,15 @@ from tqdm import tqdm from pathlib import Path from loguru import logger +from cryptography.fernet import Fernet from qlib.utils import exists_qlib_data class GetData: DATASET_VERSION = "v2" - REMOTE_URL = "http://fintech.msra.cn/stock_data/downloads" + REMOTE_URL = "https://qlibpublic.blob.core.windows.net/data/default/stock_data" + TOKEN = "gAAAAABkl9cedDk0lDdzxZgl70vAhIu3obr3wPqZiIXibQSYA5yCTr8FN1gZ_8XSthRAYucwEkq76ahFg10F_NFrCSroeGNczB1kouajJiEvlGlO389pZRXV4GDmDe3pbETXzEipSbXNGyw3oYF3t2TIulxLkTio7xI6-980EhIdy56oU_cuHqhSnaOlXfJwM0kGnTHNiTeWbLDlq1GWtbXuY5ZACvkVDBcmkO36CMv5qIgQ_iLmk3ZsFq96CYyJCbsDCgCKIX7R" + KEY = "EYcA8cgorA8X9OhyMwVfuFxn_1W3jGk6jCbs3L2oPoA=" QLIB_DATA_NAME = "{dataset_name}_{region}_{interval}_{qlib_version}.zip" def __init__(self, delete_zip_file=False): @@ -35,7 +38,9 @@ def normalize_dataset_version(self, dataset_version: str = None): return dataset_version def merge_remote_url(self, file_name: str, dataset_version: str = None): - return f"{self.REMOTE_URL}/{self.normalize_dataset_version(dataset_version)}/{file_name}" + fernet = Fernet(self.KEY) + token = fernet.decrypt(self.TOKEN).decode() + return f"{self.REMOTE_URL}/{self.normalize_dataset_version(dataset_version)}/{file_name}{token}" def _download_data( self, file_name: str, target_dir: [Path, str], delete_old: bool = True, dataset_version: str = None @@ -156,52 +161,16 @@ def qlib_data( qlib_version = ".".join(re.findall(r"(\d+)\.+", qlib.__version__)) def _get_file_name(v): - return self.QLIB_DATA_NAME.format( - dataset_name=name, region=region.lower(), interval=interval.lower(), qlib_version=v - ) + if name.lower() == "qlib_data" or name.lower() == "qlib_data_simple": + return f"{name}_{region}_{interval}_{v}.zip" + if name.lower() == "rl_data": + return f"{name}.zip" file_name = _get_file_name(qlib_version) if not self.check_dataset(file_name, version): file_name = _get_file_name("latest") self._download_data(file_name.lower(), target_dir, delete_old, dataset_version=version) - def rl_data( - self, - target_dir="~/.qlib/qlib_data/rl_data", - version=None, - delete_old=True, - exists_skip=False, - ): - """download cn qlib data from remote - - Parameters - ---------- - target_dir: str - data save directory - version: str - data version, value from [v1, ...], by default None(use script to specify version) - delete_old: bool - delete an existing directory, by default True - exists_skip: bool - exists skip, by default False - - Examples - --------- - # get rl data - python get_data.py rl_data --target_dir ~/.qlib/qlib_data/rl_data - ------- - - """ - if exists_skip and exists_qlib_data(target_dir): - logger.warning( - f"Data already exists: {target_dir}, the data download will be skipped\n" - f"\tIf downloading is required: `exists_skip=False` or `change target_dir`" - ) - return - - file_name = "rl.zip" - self._download_data(file_name.lower(), target_dir, delete_old, dataset_version=version) - def csv_data_cn(self, target_dir="~/.qlib/csv_data/cn_data"): """download cn csv data from remote From 3268897be431fcb5aa3d6c0d2138fcc1f10c4b55 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 16:49:01 +0800 Subject: [PATCH 31/38] fix_get_data_error2 --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 109fed21355..f1173ac21fb 100644 --- a/setup.py +++ b/setup.py @@ -168,6 +168,7 @@ def get_version(rel_path: str) -> str: # https://github.com/thu-ml/tianshou/releases "tianshou<=0.4.10", "gym>=0.24", # If you do not put gym at the end, gym will degrade causing pytest results to fail. + "cryptography", ], "rl": [ "tianshou<=0.4.10", From 7e1a5d5341dbac34f1b6ca09065b08b250cd97b7 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 20:21:06 +0800 Subject: [PATCH 32/38] modify_get_data --- .github/workflows/test_qlib_from_source.yml | 2 +- qlib/tests/data.py | 76 ++++++++++++--------- setup.py | 2 +- 3 files changed, 45 insertions(+), 35 deletions(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index d599c6ec1dc..d3c6d9160ee 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -139,7 +139,7 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - python scripts/get_data.py qlib_data --name rl_data --target_dir tests/.data/rl + python get_data.py download_data --file_name rl_data --target_dir tests/.data/rl - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} diff --git a/qlib/tests/data.py b/qlib/tests/data.py index de3a2a2ecaf..ff086ddbcd1 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -37,21 +37,47 @@ def normalize_dataset_version(self, dataset_version: str = None): dataset_version = self.DATASET_VERSION return dataset_version - def merge_remote_url(self, file_name: str, dataset_version: str = None): + def merge_remote_url(self, file_name: str): fernet = Fernet(self.KEY) token = fernet.decrypt(self.TOKEN).decode() - return f"{self.REMOTE_URL}/{self.normalize_dataset_version(dataset_version)}/{file_name}{token}" + return f"{self.REMOTE_URL}/{file_name}{token}" - def _download_data( - self, file_name: str, target_dir: [Path, str], delete_old: bool = True, dataset_version: str = None + def download_data( + self, file_name: str, target_dir: [Path, str], delete_old: bool = True ): + """ + Download the specified file to the target folder. + + Parameters + ---------- + target_dir: str + data save directory + file_name: str + dataset name, value from [rl_data, csv_data_cn, ...] + delete_old: bool + delete an existing directory, by default True + + Examples + --------- + # get rl data + python get_data.py download_data --file_name rl_data --target_dir ~/.qlib/qlib_data/rl_data + + # get cn csv data + python get_data.py download_data --file_name csv_data_cn --target_dir ~/.qlib/csv_data/cn_data + ------- + + """ target_dir = Path(target_dir).expanduser() target_dir.mkdir(exist_ok=True, parents=True) # saved file name - _target_file_name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "_" + file_name + if "/" in file_name: + _target_file_name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "_" + file_name.split("/")[1] + else: + file_name += ".zip" + _target_file_name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "_" + file_name target_path = target_dir.joinpath(_target_file_name) - url = self.merge_remote_url(file_name, dataset_version) + url = self.merge_remote_url(file_name) resp = requests.get(url, stream=True, timeout=60) resp.raise_for_status() if resp.status_code != 200: @@ -73,7 +99,7 @@ def _download_data( target_path.unlink() def check_dataset(self, file_name: str, dataset_version: str = None): - url = self.merge_remote_url(file_name, dataset_version) + url = self.merge_remote_url(file_name) resp = requests.get(url, stream=True, timeout=60) status = True if resp.status_code == 404: @@ -160,30 +186,14 @@ def qlib_data( qlib_version = ".".join(re.findall(r"(\d+)\.+", qlib.__version__)) - def _get_file_name(v): - if name.lower() == "qlib_data" or name.lower() == "qlib_data_simple": - return f"{name}_{region}_{interval}_{v}.zip" - if name.lower() == "rl_data": - return f"{name}.zip" - - file_name = _get_file_name(qlib_version) - if not self.check_dataset(file_name, version): - file_name = _get_file_name("latest") - self._download_data(file_name.lower(), target_dir, delete_old, dataset_version=version) - - def csv_data_cn(self, target_dir="~/.qlib/csv_data/cn_data"): - """download cn csv data from remote - - Parameters - ---------- - target_dir: str - data save directory - - Examples - --------- - python get_data.py csv_data_cn --target_dir ~/.qlib/csv_data/cn_data - ------- + def _get_file_name_with_version(v): + file_name = self.QLIB_DATA_NAME.format( + dataset_name=name, region=region.lower(), interval=interval.lower(), qlib_version=v + ) + file_name_with_version = f"{self.normalize_dataset_version(version)}/{file_name}" + return file_name_with_version - """ - file_name = "csv_data_cn.zip" - self._download_data(file_name, target_dir) + file_name = _get_file_name_with_version(qlib_version) + if not self.check_dataset(file_name): + file_name = _get_file_name_with_version("latest") + self.download_data(file_name.lower(), target_dir, delete_old) diff --git a/setup.py b/setup.py index f1173ac21fb..9d7c185ab91 100644 --- a/setup.py +++ b/setup.py @@ -80,6 +80,7 @@ def get_version(rel_path: str) -> str: "gym", # Installing the latest version of protobuf for python versions below 3.8 will cause unit tests to fail. "protobuf<=3.20.1;python_version<='3.8'", + "cryptography", ] # Numpy include @@ -168,7 +169,6 @@ def get_version(rel_path: str) -> str: # https://github.com/thu-ml/tianshou/releases "tianshou<=0.4.10", "gym>=0.24", # If you do not put gym at the end, gym will degrade causing pytest results to fail. - "cryptography", ], "rl": [ "tianshou<=0.4.10", From f3146d5e8a42fcf1a1f50b1dd78fe84af3c82cf3 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 21:52:44 +0800 Subject: [PATCH 33/38] modify_get_data2 --- docs/component/data.rst | 2 +- qlib/tests/data.py | 49 +++++++++++++++++++++-------------------- tests/test_dump_data.py | 2 +- tests/test_get_data.py | 2 +- 4 files changed, 28 insertions(+), 27 deletions(-) diff --git a/docs/component/data.rst b/docs/component/data.rst index 60e8d4fa1bd..5a2d458f688 100644 --- a/docs/component/data.rst +++ b/docs/component/data.rst @@ -119,7 +119,7 @@ Here are some example: for daily data: .. code-block:: bash - python scripts/get_data.py csv_data_cn --target_dir ~/.qlib/csv_data/cn_data + python scripts/get_data.py download_data --file_name csv_data_cn.zip --target_dir ~/.qlib/csv_data/cn_data for 1min data: .. code-block:: bash diff --git a/qlib/tests/data.py b/qlib/tests/data.py index ff086ddbcd1..80688575c58 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -1,6 +1,7 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. +import os import re import sys import qlib @@ -16,11 +17,10 @@ class GetData: - DATASET_VERSION = "v2" REMOTE_URL = "https://qlibpublic.blob.core.windows.net/data/default/stock_data" - TOKEN = "gAAAAABkl9cedDk0lDdzxZgl70vAhIu3obr3wPqZiIXibQSYA5yCTr8FN1gZ_8XSthRAYucwEkq76ahFg10F_NFrCSroeGNczB1kouajJiEvlGlO389pZRXV4GDmDe3pbETXzEipSbXNGyw3oYF3t2TIulxLkTio7xI6-980EhIdy56oU_cuHqhSnaOlXfJwM0kGnTHNiTeWbLDlq1GWtbXuY5ZACvkVDBcmkO36CMv5qIgQ_iLmk3ZsFq96CYyJCbsDCgCKIX7R" + # "?" is not included in the token. + TOKEN = "gAAAAABkmDhojHc0VSCDdNK1MqmRzNLeDFXe5hy8obHpa6SDQh4de6nW5gtzuD-fa6O_WZb0yyqYOL7ndOfJX_751W3xN5YB4-n-P22jK-t6ucoZqhT70KPD0Lf0_P328QPJVZ1gDnjIdjhi2YLOcP4BFTHLNYO0mvzszR8TKm9iT5AKRvuysWnpi8bbYwGU9zAcJK3x9EPL43hOGtxliFHcPNGMBoJW4g_ercdhi0-Qgv5_JLsV-29_MV-_AhuaYvJuN2dEywBy" KEY = "EYcA8cgorA8X9OhyMwVfuFxn_1W3jGk6jCbs3L2oPoA=" - QLIB_DATA_NAME = "{dataset_name}_{region}_{interval}_{qlib_version}.zip" def __init__(self, delete_zip_file=False): """ @@ -40,11 +40,9 @@ def normalize_dataset_version(self, dataset_version: str = None): def merge_remote_url(self, file_name: str): fernet = Fernet(self.KEY) token = fernet.decrypt(self.TOKEN).decode() - return f"{self.REMOTE_URL}/{file_name}{token}" + return f"{self.REMOTE_URL}/{file_name}?{token}" - def download_data( - self, file_name: str, target_dir: [Path, str], delete_old: bool = True - ): + def download_data(self, file_name: str, target_dir: [Path, str], delete_old: bool = True): """ Download the specified file to the target folder. @@ -53,28 +51,27 @@ def download_data( target_dir: str data save directory file_name: str - dataset name, value from [rl_data, csv_data_cn, ...] + dataset name, needs to endwith .zip, value from [rl_data.zip, csv_data_cn.zip, ...] + may contain folder names, for example: v2/qlib_data_simple_cn_1d_latest.zip delete_old: bool delete an existing directory, by default True Examples --------- # get rl data - python get_data.py download_data --file_name rl_data --target_dir ~/.qlib/qlib_data/rl_data + python get_data.py download_data --file_name rl_data.zip --target_dir ~/.qlib/qlib_data/rl_data + When this command is run, the data will be downloaded from this link: https://qlibpublic.blob.core.windows.net/data/default/stock_data/rl_data.zip?{token} # get cn csv data - python get_data.py download_data --file_name csv_data_cn --target_dir ~/.qlib/csv_data/cn_data + python get_data.py download_data --file_name csv_data_cn.zip --target_dir ~/.qlib/csv_data/cn_data + When this command is run, the data will be downloaded from this link: https://qlibpublic.blob.core.windows.net/data/default/stock_data/csv_data_cn.zip?{token} ------- """ target_dir = Path(target_dir).expanduser() target_dir.mkdir(exist_ok=True, parents=True) # saved file name - if "/" in file_name: - _target_file_name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "_" + file_name.split("/")[1] - else: - file_name += ".zip" - _target_file_name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "_" + file_name + _target_file_name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "_" + os.path.basename(file_name) target_path = target_dir.joinpath(_target_file_name) url = self.merge_remote_url(file_name) @@ -87,7 +84,7 @@ def download_data( logger.warning( f"The data for the example is collected from Yahoo Finance. Please be aware that the quality of the data might not be perfect. (You can refer to the original data source: https://finance.yahoo.com/lookup.)" ) - logger.info(f"{file_name} downloading......") + logger.info(f"{os.path.basename(file_name)} downloading......") with tqdm(total=int(resp.headers.get("Content-Length", 0))) as p_bar: with target_path.open("wb") as fp: for chunk in resp.iter_content(chunk_size=chunk_size): @@ -98,7 +95,7 @@ def download_data( if self.delete_zip_file: target_path.unlink() - def check_dataset(self, file_name: str, dataset_version: str = None): + def check_dataset(self, file_name: str): url = self.merge_remote_url(file_name) resp = requests.get(url, stream=True, timeout=60) status = True @@ -171,9 +168,11 @@ def qlib_data( --------- # get 1d data python get_data.py qlib_data --name qlib_data --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn + When this command is run, the data will be downloaded from this link: https://qlibpublic.blob.core.windows.net/data/default/stock_data/v2/qlib_data_cn_1d_latest.zip?{token} # get 1min data python get_data.py qlib_data --name qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --interval 1min --region cn + When this command is run, the data will be downloaded from this link: https://qlibpublic.blob.core.windows.net/data/default/stock_data/v2/qlib_data_cn_1min_latest.zip?{token} ------- """ @@ -186,14 +185,16 @@ def qlib_data( qlib_version = ".".join(re.findall(r"(\d+)\.+", qlib.__version__)) - def _get_file_name_with_version(v): - file_name = self.QLIB_DATA_NAME.format( - dataset_name=name, region=region.lower(), interval=interval.lower(), qlib_version=v - ) - file_name_with_version = f"{self.normalize_dataset_version(version)}/{file_name}" + def _get_file_name_with_version(qlib_version, dataset_version): + if dataset_version is None: + file_name_with_version = f"v2/{name}_{region.lower()}_{interval.lower()}_{qlib_version}.zip" + else: + file_name_with_version = ( + f"{dataset_version}/{name}_{region.lower()}_{interval.lower()}_{qlib_version}.zip" + ) return file_name_with_version - file_name = _get_file_name_with_version(qlib_version) + file_name = _get_file_name_with_version(qlib_version, dataset_version=version) if not self.check_dataset(file_name): - file_name = _get_file_name_with_version("latest") + file_name = _get_file_name_with_version("latest", dataset_version=version) self.download_data(file_name.lower(), target_dir, delete_old) diff --git a/tests/test_dump_data.py b/tests/test_dump_data.py index dfa7f8556dd..33cae4e8084 100644 --- a/tests/test_dump_data.py +++ b/tests/test_dump_data.py @@ -35,7 +35,7 @@ class TestDumpData(unittest.TestCase): @classmethod def setUpClass(cls) -> None: - GetData().csv_data_cn(SOURCE_DIR) + GetData().download_data(file_name="csv_data_cn.zip", target_dir=SOURCE_DIR) TestDumpData.DUMP_DATA = DumpDataAll(csv_path=SOURCE_DIR, qlib_dir=QLIB_DIR, include_fields=cls.FIELDS) TestDumpData.STOCK_NAMES = list(map(lambda x: x.name[:-4].upper(), SOURCE_DIR.glob("*.csv"))) provider_uri = str(QLIB_DIR.resolve()) diff --git a/tests/test_get_data.py b/tests/test_get_data.py index 93a852f554e..94e685e1fbd 100644 --- a/tests/test_get_data.py +++ b/tests/test_get_data.py @@ -42,7 +42,7 @@ def test_0_qlib_data(self): self.assertFalse(df.dropna().empty, "get qlib data failed") def test_1_csv_data(self): - GetData().csv_data_cn(SOURCE_DIR) + GetData().download_data(file_name="csv_data_cn.zip", target_dir=SOURCE_DIR) stock_name = set(map(lambda x: x.name[:-4].upper(), SOURCE_DIR.glob("*.csv"))) self.assertEqual(len(stock_name), 85, "get csv data failed") From 02aaaa25d72bd167634558b71710030533be1c15 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 21:56:11 +0800 Subject: [PATCH 34/38] modify_get_data3 --- qlib/tests/data.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/qlib/tests/data.py b/qlib/tests/data.py index 80688575c58..c6c7ef022d3 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -32,11 +32,6 @@ def __init__(self, delete_zip_file=False): """ self.delete_zip_file = delete_zip_file - def normalize_dataset_version(self, dataset_version: str = None): - if dataset_version is None: - dataset_version = self.DATASET_VERSION - return dataset_version - def merge_remote_url(self, file_name: str): fernet = Fernet(self.KEY) token = fernet.decrypt(self.TOKEN).decode() From 0cb3ee856e1589d1891ec03f8534f59d914497a3 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 22:09:50 +0800 Subject: [PATCH 35/38] modify_get_data4 --- qlib/tests/data.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/qlib/tests/data.py b/qlib/tests/data.py index c6c7ef022d3..7207279ed74 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -181,12 +181,8 @@ def qlib_data( qlib_version = ".".join(re.findall(r"(\d+)\.+", qlib.__version__)) def _get_file_name_with_version(qlib_version, dataset_version): - if dataset_version is None: - file_name_with_version = f"v2/{name}_{region.lower()}_{interval.lower()}_{qlib_version}.zip" - else: - file_name_with_version = ( - f"{dataset_version}/{name}_{region.lower()}_{interval.lower()}_{qlib_version}.zip" - ) + dataset_version = 'v2' if dataset_version is None else dataset_version + file_name_with_version = f"{dataset_version}/{name}_{region.lower()}_{interval.lower()}_{qlib_version}.zip" return file_name_with_version file_name = _get_file_name_with_version(qlib_version, dataset_version=version) From eb00ef1ff4a056132def0e5855ebd8666d453a36 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 22:13:08 +0800 Subject: [PATCH 36/38] fix_CI_28 --- .github/workflows/test_qlib_from_source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index d3c6d9160ee..4c398607eb1 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -139,7 +139,7 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - python get_data.py download_data --file_name rl_data --target_dir tests/.data/rl + python scripts/get_data.py download_data --file_name rl_data --target_dir tests/.data/rl - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }} From 81d4c8f75af1798e8a69a5c734deda77509c05b4 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 22:16:20 +0800 Subject: [PATCH 37/38] fix_CI_29 --- qlib/tests/data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qlib/tests/data.py b/qlib/tests/data.py index 7207279ed74..8de32f3f6c0 100644 --- a/qlib/tests/data.py +++ b/qlib/tests/data.py @@ -181,7 +181,7 @@ def qlib_data( qlib_version = ".".join(re.findall(r"(\d+)\.+", qlib.__version__)) def _get_file_name_with_version(qlib_version, dataset_version): - dataset_version = 'v2' if dataset_version is None else dataset_version + dataset_version = "v2" if dataset_version is None else dataset_version file_name_with_version = f"{dataset_version}/{name}_{region.lower()}_{interval.lower()}_{qlib_version}.zip" return file_name_with_version From e51846fcb610a31a22623beb0bc56b3ead1e6405 Mon Sep 17 00:00:00 2001 From: Linlang Date: Sun, 25 Jun 2023 22:51:43 +0800 Subject: [PATCH 38/38] fix_CI_30 --- .github/workflows/test_qlib_from_source.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_qlib_from_source.yml b/.github/workflows/test_qlib_from_source.yml index 4c398607eb1..0bd3517d55d 100644 --- a/.github/workflows/test_qlib_from_source.yml +++ b/.github/workflows/test_qlib_from_source.yml @@ -139,7 +139,7 @@ jobs: - name: Test data downloads run: | python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~/.qlib/qlib_data/cn_data --interval 1d --region cn - python scripts/get_data.py download_data --file_name rl_data --target_dir tests/.data/rl + python scripts/get_data.py download_data --file_name rl_data.zip --target_dir tests/.data/rl - name: Install Lightgbm for MacOS if: ${{ matrix.os == 'macos-11' || matrix.os == 'macos-latest' }}