codecov-io: # [Codecov](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=h1) Report
> Merging [#2848](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=desc) into [master](https://codecov.io/gh/Azure/azure-cli/commit/f6b3c18535cf9d1753213311cfe686a7d8f1295d?src=pr&el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/Azure/azure-cli/pull/2848/graphs/tree.svg?height=150&width=650&token=2pog0TKvF8&src=pr)](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #2848      +/-   ##
==========================================
+ Coverage   62.92%   62.94%   +0.01%     
==========================================
  Files         464      464              
  Lines       25899    25899              
  Branches     3943     3943              
==========================================
+ Hits        16298    16302       +4     
+ Misses       8567     8563       -4     
  Partials     1034     1034
```


| [Impacted Files](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/azure-cli-core/azure/cli/core/\_profile.py](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=tree#diff-c3JjL2F6dXJlLWNsaS1jb3JlL2F6dXJlL2NsaS9jb3JlL19wcm9maWxlLnB5) | `85.25% <100%> (+1.07%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=footer). Last update [f6b3c18...d27d58a](https://codecov.io/gh/Azure/azure-cli/pull/2848?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
diff --git a/.gitignore b/.gitignore
index fc479e986..7346003bc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,3 +77,6 @@ test_results/
 
 # Code coverage
 .coverage
+
+# CI output
+artifacts/
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..a6f8e4dd9
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,29 @@
+pipeline {
+    agent none
+    triggers { pollSCM('H/3 * * * *') }
+    stages {
+        stage ('Build') {
+            agent any
+            steps {
+                sh 'pip install -U virtualenv'
+                sh 'python -m virtualenv --clear env'
+                sh './scripts/jenkins_build.sh'
+                sh './scripts/jenkins_archive.sh'
+            }
+            post {
+                always { deleteDir() }
+            }
+        } 
+        stage ('Performance-Test') {
+            agent { label 'perf-ubuntu-a0' }
+            steps {
+                sh 'pip install -U virtualenv'
+                sh 'python -m virtualenv --clear env'
+                sh './scripts/jenkins_perf.sh'
+            }
+            post {
+                always { deleteDir() }
+            }
+        }
+    }
+}
diff --git a/scripts/jenkins_archive.sh b/scripts/jenkins_archive.sh
new file mode 100755
index 000000000..4422c60bd
--- /dev/null
+++ b/scripts/jenkins_archive.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+# Archive build
+
+set -x
+
+if [ -z $BUILD_NUMBER ]; then
+    echo "Environment variable BUILD_NUMBER is missing."
+    exit 1
+fi
+
+export
+echo "build branch $BRANCH_NAME"
+
+version=$(printf '%.8d' $BUILD_NUMBER)
+echo "Version number: $version"
+
+if [ -d /var/build_share ]; then
+    echo 'Directory /var/build_share is found. The artifacts will be archived there.'
+    mkdir -p /var/build_share/$BRANCH_NAME/$version
+    cp -R ./artifacts/ /var/build_share/$BRANCH_NAME/$version
+else
+    echo 'Directory /var/build_share is not found. Exit without taking any actions.'
+fi
diff --git a/scripts/jenkins_build.sh b/scripts/jenkins_build.sh
new file mode 100755
index 000000000..b12e2e093
--- /dev/null
+++ b/scripts/jenkins_build.sh
@@ -0,0 +1,26 @@
+# Build packages in Jenkins server.
+# The script expects a virtualenv created under ./env folder as prerequisite
+
+set -x  # do not echo command to prevent accidentally expose secrets
+
+. ./env/bin/activate
+
+echo 'Build Azure CLI and its command modules '
+
+if [ -d ./artifacts ]; then
+    rm -rf ./artifacts
+fi
+
+mkdir -p ./artifacts/build
+artifacts=$(cd ./artifacts/build && pwd)
+
+working_dir=$(pwd)
+for setup_file in $(find src -name 'setup.py'); do
+    cd $(dirname $setup_file)
+    echo ""
+    echo "Components at $(pwd) is being built ..."
+    python setup.py sdist -d $artifacts bdist_wheel -d $artifacts
+    cd $working_dir
+done
+
+echo 'Build completed.'
\ No newline at end of file
diff --git a/scripts/jenkins_perf.sh b/scripts/jenkins_perf.sh
new file mode 100755
index 000000000..355b34eec
--- /dev/null
+++ b/scripts/jenkins_perf.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+# Run performance in jenkins build
+
+. ./env/bin/activate
+
+echo "Run performance test on $(hostname)"
+
+if [ -z %BUILD_NUMBER ]; then
+    echo "Environment variable BUILD_NUMBER is missing."
+    exit 1
+fi
+
+version=$(printf '%.8d' $BUILD_NUMBER)
+echo "Version number: $version"
+
+echo 'Before install'
+which az
+pip list
+
+build_folder=/var/build_share/$BRANCH_NAME/$version
+echo "Install build from $build_folder"
+
+python -m pip install azure-cli --find-links file://$build_folder/artifacts/build -v
+python -m pip freeze
+
+python ./scripts/performance/measure.py
diff --git a/scripts/performance/measure.py b/scripts/performance/measure.py
new file mode 100644
index 000000000..8cf6ad2b5
--- /dev/null
+++ b/scripts/performance/measure.py
@@ -0,0 +1,48 @@
+# --------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# --------------------------------------------------------------------------------------------
+
+import sys
+from subprocess import check_output, STDOUT
+
+def mean(data):
+    """Return the sample arithmetic mean of data."""
+    n = len(data)
+    if n < 1:
+        raise ValueError('len < 1')
+    return sum(data)/float(n)
+
+
+def sq_deviation(data):
+    """Return sum of square deviations of sequence data."""
+    c = mean(data)
+    return sum((x-c)**2 for x in data)
+
+
+def pstdev(data):
+    """Calculates the population standard deviation."""
+    n = len(data)
+    if n < 2:
+        raise ValueError('len < 2')
+    ss = sq_deviation(data)
+    return (ss/n) ** 0.5
+
+
+real = []
+user = []
+syst = []
+loop = 100
+
+for i in range(loop):
+    lines = check_output(['time -p az'], shell=True, stderr=STDOUT).split('\n')
+    real_time = float(lines[-4].split()[1])
+    real.append(float(lines[-4].split()[1]))
+    user.append(float(lines[-3].split()[1]))
+    syst.append(float(lines[-2].split()[1]))
+    sys.stdout.write('Loop {} => {} \n'.format(i, real_time))
+    sys.stdout.flush()
+
+print('Real: mean => {} \t pstdev => {}'.format(mean(real), pstdev(real)))
+print('User: mean => {} \t pstdev => {}'.format(mean(user), pstdev(user)))
+print('Syst: mean => {} \t pstdev => {}'.format(mean(syst), pstdev(syst)))
diff --git a/src/azure-cli-core/HISTORY.rst b/src/azure-cli-core/HISTORY.rst
index 031f1ad08..edd7d5713 100644
--- a/src/azure-cli-core/HISTORY.rst
+++ b/src/azure-cli-core/HISTORY.rst
@@ -4,6 +4,7 @@ Release History
 ===============
 2.0.3 (unreleased)
 ^^^^^^^^^^^^^^^^^^
+*core: fix a failure when login using a service principal twice (#2800)
 *core: Allow file path of accessTokens.json to be configurable through an env var(#2605)
 *core: Allow configured defaults to apply on optional args(#2703)
 *core: Improved performance
diff --git a/src/azure-cli-core/azure/cli/core/_profile.py b/src/azure-cli-core/azure/cli/core/_profile.py
index 2773418ad..aafb00f25 100644
--- a/src/azure-cli-core/azure/cli/core/_profile.py
+++ b/src/azure-cli-core/azure/cli/core/_profile.py
@@ -499,7 +499,7 @@ class CredsCache(object):
             # pylint: disable=line-too-long
             if (sp_entry.get(_ACCESS_TOKEN, None) != getattr(matched[0], _ACCESS_TOKEN, None) or
                     sp_entry.get(_SERVICE_PRINCIPAL_CERT_FILE, None) != getattr(matched[0], _SERVICE_PRINCIPAL_CERT_FILE, None)):
-                self._service_principal_creds.pop(matched[0])
+                self._service_principal_creds.remove(matched[0])
                 self._service_principal_creds.append(matched[0])
                 state_changed = True
         else:

Weird error on login - 'dict' object cannot be interpreted as an integer
### Environment summary

**Install Method:** How did you install the CLI? (e.g. pip, interactive script, apt-get, Docker, MSI, nightly)  
```
        rm -rf $HOME/.local/lib/python3.6
        mkdir $HOME/.local/lib/python3.6/site-packages
        pip install --no-cache-dir --user --upgrade --pre azure-cli --extra-index-url https://azureclinightly.blob.core.windows.net/packages
        pip install --user --upgrade --pre azure-cli-acr azure-cli-keyvault --extra-index-url https://azureclinightly.blob.core.windows.net/packages
```

**CLI Version:** What version of the CLI and modules are installed? (Use `az --version`)  
```
azure-cli (2.0.2+1.dev20170406)

acr (2.0.0+1.dev20170406)
acs (2.0.2+1.dev20170406)
appservice (0.1.2+1.dev20170406)
batch (2.0.0+1.dev20170406)
cloud (2.0.0+1.dev20170406)
component (2.0.0+1.dev20170406)
configure (2.0.2+1.dev20170406)
container (0.1.2+1.dev20170406)
core (2.0.2+1.dev20170406)
documentdb (0.1.2+1.dev20170406)
feedback (2.0.0+1.dev20170406)
find (0.1.2rc1+1.dev20170312)
iot (0.1.2+1.dev20170406)
keyvault (2.0.0+1.dev20170406)
lab (0.0.1+1.dev20170406)
monitor (0.0.1+1.dev20170406)
network (2.0.2+1.dev20170406)
nspkg (2.0.0+1.dev20170406)
profile (2.0.2+1.dev20170406)
redis (0.1.1b3+1.dev20170406)
resource (2.0.2+1.dev20170406)
role (2.0.1+1.dev20170406)
sql (2.0.0+1.dev20170406)
storage (2.0.2+1.dev20170406)
vm (2.0.2+1.dev20170406)

Python (Linux) 3.6.1 (default, Mar 27 2017, 00:27:06)
[GCC 6.3.1 20170306]
```

**OS Version:** What OS and version are you using?  
Arch Linux, up to date

**Shell Type:** What shell are you using? (e.g. bash, cmd.exe, Bash on Windows)  
`zsh`

---

### Description
```
$ az login --service-principal --username xxx --password xxx --tenant xxx
'dict' object cannot be interpreted as an integer
Traceback (most recent call last):
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/main.py", line 37, in main
    cmd_result = APPLICATION.execute(args)
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/core/application.py", line 157, in execute
    result = expanded_arg.func(params)
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 367, in _execute_command
    raise ex
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 362, in _execute_command
    result = op(client, **kwargs) if client else op(**kwargs)
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/command_modules/profile/custom.py", line 79, in login
    tenant)
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 135, in find_subscriptions_on_login
    tenant))
  File "/home/cole/.local/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 500, in save_service_principal_cred
    self._service_principal_creds.pop(matched[0])
TypeError: 'dict' object cannot be interpreted as an integer
```

If I `rm -rf ~/.azure` first, it goes away. Maybe a bug in merging stuff together?

~~Also, weird though, since my script sets `AZURE_CONFIG_DIR` to a temp dir, so it should be like new every time...~~ I wasn't properly exporting it, when I do, I avoid this issue since each script run gets its own config directory.
diff --git a/src/azure-cli-core/tests/test_profile.py b/src/azure-cli-core/tests/test_profile.py
index bbb63cd5f..a78211b84 100644
--- a/src/azure-cli-core/tests/test_profile.py
+++ b/src/azure-cli-core/tests/test_profile.py
@@ -581,6 +581,25 @@ class Test_Profile(unittest.TestCase):  # pylint: disable=too-many-public-method
         self.assertEqual(creds_cache._service_principal_creds, [test_sp, test_sp2])
         mock_open_for_write.assert_called_with(mock.ANY, 'w+')
 
+    @mock.patch('azure.cli.core._profile._load_tokens_from_file', autospec=True)
+    @mock.patch('os.fdopen', autospec=True)
+    @mock.patch('os.open', autospec=True)
+    def test_credscache_add_preexisting_sp_creds(self, _, mock_open_for_write, mock_read_file):
+        test_sp = {
+            "servicePrincipalId": "myapp",
+            "servicePrincipalTenant": "mytenant",
+            "accessToken": "Secret"
+        }
+        mock_open_for_write.return_value = FileHandleStub()
+        mock_read_file.return_value = [test_sp]
+        creds_cache = CredsCache()
+
+        # action
+        creds_cache.save_service_principal_cred(test_sp)
+
+        # assert
+        self.assertEqual(creds_cache._service_principal_creds, [test_sp])
+
     @mock.patch('azure.cli.core._profile._load_tokens_from_file', autospec=True)
     @mock.patch('os.fdopen', autospec=True)
     @mock.patch('os.open', autospec=True)

python scripts/dev_setup.py
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.5
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
adal==0.4.3
applicationinsights==0.10.0
argcomplete==1.8.0
astroid==1.4.9
attrs==22.2.0
autopep8==1.2.4
azure-batch==2.0.0
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli&subdirectory=src/azure-cli
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_acr&subdirectory=src/command_modules/azure-cli-acr
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_acs&subdirectory=src/command_modules/azure-cli-acs
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_appservice&subdirectory=src/command_modules/azure-cli-appservice
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_batch&subdirectory=src/command_modules/azure-cli-batch
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_cloud&subdirectory=src/command_modules/azure-cli-cloud
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_component&subdirectory=src/command_modules/azure-cli-component
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_configure&subdirectory=src/command_modules/azure-cli-configure
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_container&subdirectory=src/command_modules/azure-cli-container
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_core&subdirectory=src/azure-cli-core
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_dla&subdirectory=src/command_modules/azure-cli-dla
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_dls&subdirectory=src/command_modules/azure-cli-dls
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_documentdb&subdirectory=src/command_modules/azure-cli-documentdb
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_feedback&subdirectory=src/command_modules/azure-cli-feedback
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_find&subdirectory=src/command_modules/azure-cli-find
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_iot&subdirectory=src/command_modules/azure-cli-iot
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_keyvault&subdirectory=src/command_modules/azure-cli-keyvault
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_lab&subdirectory=src/command_modules/azure-cli-lab
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_monitor&subdirectory=src/command_modules/azure-cli-monitor
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_network&subdirectory=src/command_modules/azure-cli-network
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_nspkg&subdirectory=src/azure-cli-nspkg
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_profile&subdirectory=src/command_modules/azure-cli-profile
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_redis&subdirectory=src/command_modules/azure-cli-redis
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_resource&subdirectory=src/command_modules/azure-cli-resource
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_role&subdirectory=src/command_modules/azure-cli-role
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_sql&subdirectory=src/command_modules/azure-cli-sql
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_storage&subdirectory=src/command_modules/azure-cli-storage
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_taskhelp&subdirectory=src/command_modules/azure-cli-taskhelp
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_testsdk&subdirectory=src/azure-cli-testsdk
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_utility_automation&subdirectory=scripts
-e git+https://github.com/Azure/azure-cli.git@f6b3c18535cf9d1753213311cfe686a7d8f1295d#egg=azure_cli_vm&subdirectory=src/command_modules/azure-cli-vm
azure-common==1.1.4
azure-core==1.24.2
azure-datalake-store==0.0.6
azure-graphrbac==0.30.0rc6
azure-keyvault==0.1.0
azure-mgmt-authorization==0.30.0rc6
azure-mgmt-batch==3.0.0
azure-mgmt-compute==0.33.1rc1
azure-mgmt-containerregistry==0.2.0
azure-mgmt-datalake-analytics==0.1.3
azure-mgmt-datalake-nspkg==3.0.1
azure-mgmt-datalake-store==0.1.3
azure-mgmt-dns==1.0.0
azure-mgmt-documentdb==0.1.1
azure-mgmt-iothub==0.2.1
azure-mgmt-keyvault==0.30.0
azure-mgmt-monitor==0.1.0
azure-mgmt-network==0.30.0
azure-mgmt-nspkg==3.0.2
azure-mgmt-redis==1.0.0
azure-mgmt-resource==0.30.2
azure-mgmt-sql==0.4.0
azure-mgmt-storage==0.31.0
azure-mgmt-trafficmanager==0.30.0rc6
azure-mgmt-web==0.31.0
azure-monitor==0.2.0
azure-nspkg==3.0.2
azure-storage==0.34.0
certifi==2021.5.30
cffi==1.15.1
colorama==0.3.7
coverage==4.2
cryptography==40.0.2
flake8==3.2.1
importlib-metadata==4.8.3
iniconfig==1.1.1
isodate==0.7.0
jeepney==0.7.1
jmespath==0.10.0
keyring==23.4.1
lazy-object-proxy==1.7.1
mccabe==0.5.3
mock==1.3.0
msrest==0.4.29
msrestazure==0.4.34
nose==1.3.7
oauthlib==3.2.2
packaging==21.3
paramiko==2.0.2
pbr==6.1.1
pep8==1.7.1
pluggy==1.0.0
py==1.11.0
pyasn1==0.5.1
pycodestyle==2.2.0
pycparser==2.21
pyflakes==1.3.0
Pygments==2.1.3
PyJWT==2.4.0
pylint==1.5.4
pyOpenSSL==16.2.0
pyparsing==3.1.4
pytest==7.0.1
python-dateutil==2.9.0.post0
PyYAML==3.11
requests==2.9.1
requests-oauthlib==2.0.0
scp==0.15.0
SecretStorage==3.3.3
six==1.10.0
sshtunnel==0.4.0
tabulate==0.7.5
tomli==1.2.3
typing-extensions==4.1.1
urllib3==1.16
vcrpy==1.10.3
Whoosh==2.7.4
wrapt==1.16.0
xmltodict==0.14.2
zipp==3.6.0

name: azure-cli
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - adal==0.4.3
      - applicationinsights==0.10.0
      - argcomplete==1.8.0
      - astroid==1.4.9
      - attrs==22.2.0
      - autopep8==1.2.4
      - azure-batch==2.0.0
      - azure-common==1.1.4
      - azure-core==1.24.2
      - azure-datalake-store==0.0.6
      - azure-graphrbac==0.30.0rc6
      - azure-keyvault==0.1.0
      - azure-mgmt-authorization==0.30.0rc6
      - azure-mgmt-batch==3.0.0
      - azure-mgmt-compute==0.33.1rc1
      - azure-mgmt-containerregistry==0.2.0
      - azure-mgmt-datalake-analytics==0.1.3
      - azure-mgmt-datalake-nspkg==3.0.1
      - azure-mgmt-datalake-store==0.1.3
      - azure-mgmt-dns==1.0.0
      - azure-mgmt-documentdb==0.1.1
      - azure-mgmt-iothub==0.2.1
      - azure-mgmt-keyvault==0.30.0
      - azure-mgmt-monitor==0.1.0
      - azure-mgmt-network==0.30.0
      - azure-mgmt-nspkg==3.0.2
      - azure-mgmt-redis==1.0.0
      - azure-mgmt-resource==0.30.2
      - azure-mgmt-sql==0.4.0
      - azure-mgmt-storage==0.31.0
      - azure-mgmt-trafficmanager==0.30.0rc6
      - azure-mgmt-web==0.31.0
      - azure-monitor==0.2.0
      - azure-nspkg==3.0.2
      - azure-storage==0.34.0
      - cffi==1.15.1
      - colorama==0.3.7
      - coverage==4.2
      - cryptography==40.0.2
      - flake8==3.2.1
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - isodate==0.7.0
      - jeepney==0.7.1
      - jmespath==0.10.0
      - keyring==23.4.1
      - lazy-object-proxy==1.7.1
      - mccabe==0.5.3
      - mock==1.3.0
      - msrest==0.4.29
      - msrestazure==0.4.34
      - nose==1.3.7
      - oauthlib==3.2.2
      - packaging==21.3
      - paramiko==2.0.2
      - pbr==6.1.1
      - pep8==1.7.1
      - pip==9.0.1
      - pluggy==1.0.0
      - py==1.11.0
      - pyasn1==0.5.1
      - pycodestyle==2.2.0
      - pycparser==2.21
      - pyflakes==1.3.0
      - pygments==2.1.3
      - pyjwt==2.4.0
      - pylint==1.5.4
      - pyopenssl==16.2.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - python-dateutil==2.9.0.post0
      - pyyaml==3.11
      - requests==2.9.1
      - requests-oauthlib==2.0.0
      - scp==0.15.0
      - secretstorage==3.3.3
      - setuptools==30.4.0
      - six==1.10.0
      - sshtunnel==0.4.0
      - tabulate==0.7.5
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.16
      - vcrpy==1.10.3
      - whoosh==2.7.4
      - wrapt==1.16.0
      - xmltodict==0.14.2
      - zipp==3.6.0
prefix: /opt/conda/envs/azure-cli

src/azure-cli-core/tests/test_profile.py::Test_Profile::test_credscache_add_preexisting_sp_creds
src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_from_service_principal_using_cert src/azure-cli-core/tests/test_profile.py::Test_Profile::test_service_principal_auth_client_cert
src/azure-cli-core/tests/test_profile.py::Test_Profile::test_create_token_cache src/azure-cli-core/tests/test_profile.py::Test_Profile::test_credscache_add_new_sp_creds src/azure-cli-core/tests/test_profile.py::Test_Profile::test_credscache_load_tokens_and_sp_creds_with_cert src/azure-cli-core/tests/test_profile.py::Test_Profile::test_credscache_load_tokens_and_sp_creds_with_secret src/azure-cli-core/tests/test_profile.py::Test_Profile::test_credscache_new_token_added_by_adal src/azure-cli-core/tests/test_profile.py::Test_Profile::test_credscache_remove_creds src/azure-cli-core/tests/test_profile.py::Test_Profile::test_default_active_subscription_to_non_disabled_one src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_from_particular_tenent src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_from_service_principal_id src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_interactive_from_particular_tenent src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_through_interactive_flow src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_thru_username_password src/azure-cli-core/tests/test_profile.py::Test_Profile::test_find_subscriptions_thru_username_password_with_account_disabled src/azure-cli-core/tests/test_profile.py::Test_Profile::test_get_current_account_user src/azure-cli-core/tests/test_profile.py::Test_Profile::test_get_expanded_subscription_info src/azure-cli-core/tests/test_profile.py::Test_Profile::test_get_expanded_subscription_info_for_logged_in_service_principal src/azure-cli-core/tests/test_profile.py::Test_Profile::test_get_login_credentials src/azure-cli-core/tests/test_profile.py::Test_Profile::test_get_login_credentials_for_graph_client src/azure-cli-core/tests/test_profile.py::Test_Profile::test_get_subscription src/azure-cli-core/tests/test_profile.py::Test_Profile::test_load_cached_tokens src/azure-cli-core/tests/test_profile.py::Test_Profile::test_logout src/azure-cli-core/tests/test_profile.py::Test_Profile::test_logout_all src/azure-cli-core/tests/test_profile.py::Test_Profile::test_normalize src/azure-cli-core/tests/test_profile.py::Test_Profile::test_service_principal_auth_client_secret src/azure-cli-core/tests/test_profile.py::Test_Profile::test_set_active_subscription src/azure-cli-core/tests/test_profile.py::Test_Profile::test_update_add_two_different_subscriptions src/azure-cli-core/tests/test_profile.py::Test_Profile::test_update_with_same_subscription_added_twice
src/azure-cli-core/azure/cli/core/_profile.py src/azure-cli-core/HISTORY.rst .gitignore scripts/jenkins_perf.sh scripts/jenkins_build.sh scripts/jenkins_archive.sh scripts/performance/measure.py Jenkinsfile
src/azure-cli-core/azure/cli/core/_profile.py src/azure-cli-core/HISTORY.rst .gitignore scripts/jenkins_perf.sh scripts/jenkins_build.sh scripts/jenkins_archive.sh scripts/performance/measure.py Jenkinsfile