From 89e68f63e26da4f8a23caa913ee4a0f3a4eb09df Mon Sep 17 00:00:00 2001 From: "jun.du@intel.com" Date: Sun, 23 Jul 2023 18:27:03 -0700 Subject: [PATCH 01/13] test for ci, don't merge --- setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py index 62f3fc2..3e762be 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,8 @@ import subprocess import os +# test for ci, don't merge + version_str = "0.9.4" git_branch_cmd = "git rev-parse --abbrev-ref HEAD" git_hash_cmd = "git rev-parse --short HEAD" From b549a91708ecc540ccc65984521105f0072b4ff9 Mon Sep 17 00:00:00 2001 From: "jun.du@intel.com" Date: Tue, 19 Sep 2023 00:18:29 -0700 Subject: [PATCH 02/13] update github action --- .github/workflows/github-actions-demo.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/github-actions-demo.yml diff --git a/.github/workflows/github-actions-demo.yml b/.github/workflows/github-actions-demo.yml new file mode 100644 index 0000000..769842c --- /dev/null +++ b/.github/workflows/github-actions-demo.yml @@ -0,0 +1,19 @@ +name: GitHub Actions Demo +run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 +on: [push] +jobs: + Explore-GitHub-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v4 + - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." + - run: echo "🖥️ The workflow is now ready to test your code on the runner." + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - run: echo "🍏 This job's status is ${{ job.status }}." + From e9a47ead12a438e0dc6ed8ae5b0d8666acb94f47 Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Tue, 19 Sep 2023 17:29:21 +0800 Subject: [PATCH 03/13] Create action.yml --- action.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 action.yml diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..575963a --- /dev/null +++ b/action.yml @@ -0,0 +1,22 @@ +name: 'Run Python Unit Tests' +description: 'Run Python Unit Tests' +inputs: + options: + description: 'Options for tests' + required: false + default: "" + python: + description: 'Path to python' + required: false + default: "python" +runs: + using: "composite" + steps: + - shell: bash + env: + OPTIONS: "${{ inputs.options }}" + PYTHON: "${{ inputs.python }}" + run: | + set -x + # shellcheck disable ... + $PYTHON -u -m unittest discover -v $OPTIONS From ed7d66c0d1b0064f713d45cf607a63996c8210bd Mon Sep 17 00:00:00 2001 From: "jun.du@intel.com" Date: Wed, 20 Sep 2023 22:09:57 -0700 Subject: [PATCH 04/13] add Bandit-Scan yaml --- .github/workflows/Bandit-Scan.yaml | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/Bandit-Scan.yaml diff --git a/.github/workflows/Bandit-Scan.yaml b/.github/workflows/Bandit-Scan.yaml new file mode 100644 index 0000000..e0b403a --- /dev/null +++ b/.github/workflows/Bandit-Scan.yaml @@ -0,0 +1,41 @@ +name: Scanner-Bandit +on: + pull_request: + branches: + - '**' + workflow_dispatch: + inputs: + repos: + description: 'Enter Project repo for which you want to run Bandit scan:' + required: true + type: string + default: 'intel-innersource/frameworks.ai.transfer-learning' + refs: + description: 'Enter Project branch, tag:' + required: true + type: string + default: 'develop' + excludes: + description: 'Enter target repository folders to be excluded eg. tools,xyz etc:' + required: false + type: string + config_file: + description: 'Enter target repository configuration file for Bandit scan eg. .bandit.yml:' + required: false + type: string + default: 'bandit.yml' + # runner_label: + # description: 'Enter one label of the runner that will execute the workflow:' + # required: true + # type: string + # default: "['gasp']" +jobs: + scan-bandit: + uses: 'intel-innersource/frameworks.ai.infrastructure.code-scan-tools/.github/workflows/Scanner_Bandit.yml@one-ci-cd' + with: + repos: 'frameworks.ai.transfer-learning' # ${{ github.event.inputs.repos }} + refs: ${{ github.event.inputs.refs }} + # config_file: ${{ github.event.inputs.config_file }} + runners: "['gasp']" # ${{ github.event.inputs.runner_label }} + secrets: + token: ${{ secrets.GITHUB_TOKEN }} From e08a4dbd3003eed6e15a08919e8a602b06d28beb Mon Sep 17 00:00:00 2001 From: "jun.du@intel.com" Date: Wed, 20 Sep 2023 22:11:13 -0700 Subject: [PATCH 05/13] remove action.yml --- action.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 action.yml diff --git a/action.yml b/action.yml deleted file mode 100644 index 575963a..0000000 --- a/action.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: 'Run Python Unit Tests' -description: 'Run Python Unit Tests' -inputs: - options: - description: 'Options for tests' - required: false - default: "" - python: - description: 'Path to python' - required: false - default: "python" -runs: - using: "composite" - steps: - - shell: bash - env: - OPTIONS: "${{ inputs.options }}" - PYTHON: "${{ inputs.python }}" - run: | - set -x - # shellcheck disable ... - $PYTHON -u -m unittest discover -v $OPTIONS From ec7dd9667c737669cbc32bc2bb6ab6c46285e174 Mon Sep 17 00:00:00 2001 From: "jun.du@intel.com" Date: Wed, 20 Sep 2023 22:37:24 -0700 Subject: [PATCH 06/13] update Bandit-Scan.yaml --- .github/workflows/Bandit-Scan.yaml | 6 +- .github/workflows/github-actions-demo.yml | 19 - bandit.yml | 404 ++++++++++++++++++++++ 3 files changed, 407 insertions(+), 22 deletions(-) delete mode 100644 .github/workflows/github-actions-demo.yml create mode 100644 bandit.yml diff --git a/.github/workflows/Bandit-Scan.yaml b/.github/workflows/Bandit-Scan.yaml index e0b403a..46cf54c 100644 --- a/.github/workflows/Bandit-Scan.yaml +++ b/.github/workflows/Bandit-Scan.yaml @@ -9,12 +9,12 @@ on: description: 'Enter Project repo for which you want to run Bandit scan:' required: true type: string - default: 'intel-innersource/frameworks.ai.transfer-learning' + default: '1pikachu/intel-extension-for-deepspeed' refs: description: 'Enter Project branch, tag:' required: true type: string - default: 'develop' + default: 'main' excludes: description: 'Enter target repository folders to be excluded eg. tools,xyz etc:' required: false @@ -33,7 +33,7 @@ jobs: scan-bandit: uses: 'intel-innersource/frameworks.ai.infrastructure.code-scan-tools/.github/workflows/Scanner_Bandit.yml@one-ci-cd' with: - repos: 'frameworks.ai.transfer-learning' # ${{ github.event.inputs.repos }} + repos: 'intel-extension-for-deepspeed' # ${{ github.event.inputs.repos }} refs: ${{ github.event.inputs.refs }} # config_file: ${{ github.event.inputs.config_file }} runners: "['gasp']" # ${{ github.event.inputs.runner_label }} diff --git a/.github/workflows/github-actions-demo.yml b/.github/workflows/github-actions-demo.yml deleted file mode 100644 index 769842c..0000000 --- a/.github/workflows/github-actions-demo.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: GitHub Actions Demo -run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 -on: [push] -jobs: - Explore-GitHub-Actions: - runs-on: ubuntu-latest - steps: - - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." - - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - - name: Check out repository code - uses: actions/checkout@v4 - - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - - run: echo "🖥️ The workflow is now ready to test your code on the runner." - - name: List files in the repository - run: | - ls ${{ github.workspace }} - - run: echo "🍏 This job's status is ${{ job.status }}." - diff --git a/bandit.yml b/bandit.yml new file mode 100644 index 0000000..ca2ce91 --- /dev/null +++ b/bandit.yml @@ -0,0 +1,404 @@ + +### Bandit config file generated from: +# './bandit/bandit/cli/config_generator.py --out bandit.yaml' + +### This config may optionally select a subset of tests to run or skip by +### filling out the 'tests' and 'skips' lists given below. If no tests are +### specified for inclusion then it is assumed all tests are desired. The skips +### set will remove specific tests from the include set. This can be controlled +### using the -t/-s CLI options. Note that the same test ID should not appear +### in both 'tests' and 'skips', this would be nonsensical and is detected by +### Bandit at runtime. + +# Available tests: +# B101 : assert_used +# B102 : exec_used +# B103 : set_bad_file_permissions +# B104 : hardcoded_bind_all_interfaces +# B105 : hardcoded_password_string +# B106 : hardcoded_password_funcarg +# B107 : hardcoded_password_default +# B108 : hardcoded_tmp_directory +# B110 : try_except_pass +# B112 : try_except_continue +# B201 : flask_debug_true +# B301 : pickle +# B302 : marshal +# B303 : md5 +# B304 : ciphers +# B305 : cipher_modes +# B306 : mktemp_q +# B307 : eval +# B308 : mark_safe +# B309 : httpsconnection +# B310 : urllib_urlopen +# B311 : random +# B312 : telnetlib +# B313 : xml_bad_cElementTree +# B314 : xml_bad_ElementTree +# B315 : xml_bad_expatreader +# B316 : xml_bad_expatbuilder +# B317 : xml_bad_sax +# B318 : xml_bad_minidom +# B319 : xml_bad_pulldom +# B320 : xml_bad_etree +# B321 : ftplib +# B323 : unverified_context +# B324 : hashlib_new_insecure_functions +# B325 : tempnam +# B401 : import_telnetlib +# B402 : import_ftplib +# B403 : import_pickle +# B404 : import_subprocess +# B405 : import_xml_etree +# B406 : import_xml_sax +# B407 : import_xml_expat +# B408 : import_xml_minidom +# B409 : import_xml_pulldom +# B410 : import_lxml +# B411 : import_xmlrpclib +# B412 : import_httpoxy +# B413 : import_pycrypto +# B501 : request_with_no_cert_validation +# B502 : ssl_with_bad_version +# B503 : ssl_with_bad_defaults +# B504 : ssl_with_no_version +# B505 : weak_cryptographic_key +# B506 : yaml_load +# B507 : ssh_no_host_key_verification +# B601 : paramiko_calls +# B602 : subprocess_popen_with_shell_equals_true +# B603 : subprocess_without_shell_equals_true +# B604 : any_other_function_with_shell_equals_true +# B605 : start_process_with_a_shell +# B606 : start_process_with_no_shell +# B607 : start_process_with_partial_path +# B608 : hardcoded_sql_expressions +# B609 : linux_commands_wildcard_injection +# B610 : django_extra_used +# B611 : django_rawsql_used +# B701 : jinja2_autoescape_false +# B702 : use_of_mako_templates +# B703 : django_mark_safe + +# (optional) list included test IDs here, eg '[B101, B406]': +# IPAS Required Checkers. Do not disable these +# Additional checkers may be added if desired +exclude_dirs: [ '.venv', '.tox', 'tlt_test_venv', 'tlt_notebook_venv', 'tests' ] + +tests: + [ 'B301', 'B302', 'B303', 'B304', 'B305', 'B306', 'B308', 'B309', 'B310', 'B311', 'B312', 'B313', 'B314', 'B315', 'B316', 'B317', 'B318', 'B319', 'B320', 'B321', 'B323', 'B324', 'B325', 'B401', 'B402', 'B403', 'B404', 'B405', 'B406', 'B407', 'B408', 'B409', 'B410', 'B411', 'B412', 'B413'] + +# (optional) list skipped test IDs here, eg '[B101, B406]': +# The following checkers are not required but be added to tests list if desired +skips: + [ 'B101', 'B102', 'B103', 'B104', 'B105', 'B106', 'B107', 'B108', 'B110', 'B112', 'B201', 'B501', 'B502', 'B503', 'B504', 'B505', 'B506', 'B507', 'B601', 'B602', 'B603', 'B604', 'B605', 'B606', 'B607', 'B608', 'B609', 'B610', 'B611', 'B701', 'B702', 'B703'] + +### (optional) plugin settings - some test plugins require configuration data +### that may be given here, per-plugin. All bandit test plugins have a built in +### set of sensible defaults and these will be used if no configuration is +### provided. It is not necessary to provide settings for every (or any) plugin +### if the defaults are acceptable. + +any_other_function_with_shell_equals_true: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +assert_used: + skips: [] +hardcoded_tmp_directory: + tmp_dirs: + - /tmp + - /var/tmp + - /dev/shm +linux_commands_wildcard_injection: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +ssl_with_bad_defaults: + bad_protocol_versions: + - PROTOCOL_SSLv2 + - SSLv2_METHOD + - SSLv23_METHOD + - PROTOCOL_SSLv3 + - PROTOCOL_TLSv1 + - SSLv3_METHOD + - TLSv1_METHOD +ssl_with_bad_version: + bad_protocol_versions: + - PROTOCOL_SSLv2 + - SSLv2_METHOD + - SSLv23_METHOD + - PROTOCOL_SSLv3 + - PROTOCOL_TLSv1 + - SSLv3_METHOD + - TLSv1_METHOD +start_process_with_a_shell: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +start_process_with_no_shell: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +start_process_with_partial_path: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +subprocess_popen_with_shell_equals_true: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +subprocess_without_shell_equals_true: + no_shell: + - os.execl + - os.execle + - os.execlp + - os.execlpe + - os.execv + - os.execve + - os.execvp + - os.execvpe + - os.spawnl + - os.spawnle + - os.spawnlp + - os.spawnlpe + - os.spawnv + - os.spawnve + - os.spawnvp + - os.spawnvpe + - os.startfile + shell: + - os.system + - os.popen + - os.popen2 + - os.popen3 + - os.popen4 + - popen2.popen2 + - popen2.popen3 + - popen2.popen4 + - popen2.Popen3 + - popen2.Popen4 + - commands.getoutput + - commands.getstatusoutput + subprocess: + - subprocess.Popen + - subprocess.call + - subprocess.check_call + - subprocess.check_output + - subprocess.run +try_except_continue: + check_typed_exception: false +try_except_pass: + check_typed_exception: false +weak_cryptographic_key: + weak_key_size_dsa_high: 1024 + weak_key_size_dsa_medium: 2048 + weak_key_size_ec_high: 160 + weak_key_size_ec_medium: 224 + weak_key_size_rsa_high: 1024 + weak_key_size_rsa_medium: 2048 From b98d4e01d2e6bdbc7c6ddc7258c1991227909f3e Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:15:00 +0800 Subject: [PATCH 07/13] Update __init__.py --- intel_extension_for_deepspeed/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/intel_extension_for_deepspeed/__init__.py b/intel_extension_for_deepspeed/__init__.py index cf96805..cbb1be7 100644 --- a/intel_extension_for_deepspeed/__init__.py +++ b/intel_extension_for_deepspeed/__init__.py @@ -1 +1,3 @@ from .xpu_accelerator import XPU_Accelerator + +# test for ci From 4a829dacae30f5edb90f2df5b58abd8cc8bb48a2 Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:19:09 +0800 Subject: [PATCH 08/13] Create requirements.txt --- requirements.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ + From 5356a38a75e35fa6649bdaf2771a6f78132f71b5 Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:19:54 +0800 Subject: [PATCH 09/13] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b13789..88068c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ - +torchvision==0.15.0 From 1aa835374d30eafe5ce3588df8751f650a068dd8 Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:12:09 +0800 Subject: [PATCH 10/13] Update requirements.txt --- requirements.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/requirements.txt b/requirements.txt index 88068c4..8410657 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,11 @@ torchvision==0.15.0 +hjson +ninja +numpy +packaging>=20.0 +psutil +py-cpuinfo +pydantic +pynvml +torch +tqdm From 968f9444428d7b3cfeb0a966378f915f359ce97f Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:21:45 +0800 Subject: [PATCH 11/13] Create dependabot.yml --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..4eeafeb --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" From d8c8de5610003dd090951050632b851b655c5748 Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:24:36 +0800 Subject: [PATCH 12/13] Update requirements.txt --- requirements.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/requirements.txt b/requirements.txt index 8410657..b0bf1c8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,13 @@ pydantic pynvml torch tqdm +expecttest +hypothesis +numpy +psutil +pytest +pyyaml +scipy>=1.8.0 +setuptools +types-dataclasses +typing_extensions From b37662a857cdaede7391c9e2463fd6fa2af1d13e Mon Sep 17 00:00:00 2001 From: 1pikachu <52649791+1pikachu@users.noreply.github.com> Date: Thu, 9 Nov 2023 13:46:42 +0800 Subject: [PATCH 13/13] Update setup.py --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 3e762be..6be4ee6 100644 --- a/setup.py +++ b/setup.py @@ -7,6 +7,7 @@ version_str = "0.9.4" git_branch_cmd = "git rev-parse --abbrev-ref HEAD" git_hash_cmd = "git rev-parse --short HEAD" +test_env = "123" def command_exists(cmd):