azure-devops-python-api
azure-devops-python-api copied to clipboard
Getting started code throws error in notebook
Running this code from the Getting Started section of the readme.md:
from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication
import pprint
# Fill in with your personal access token and org URL
personal_access_token = '**removed**'
organization_url = 'https://**notthedevdomain**.visualstudio.com/'
# Create a connection to the org
credentials = BasicAuthentication('', personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)
# Get a client (the "core" client provides access to projects, teams, etc)
core_client = connection.clients.get_core_client()
# Get the first page of projects
get_projects_response = core_client.get_projects()
index = 0
while get_projects_response is not None:
for project in get_projects_response.value:
pprint.pprint("[" + str(index) + "] " + project.name)
index += 1
if get_projects_response.continuation_token is not None and get_projects_response.continuation_token != "":
# Get the next page of projects
get_projects_response = core_client.get_projects(continuation_token=get_projects_response.continuation_token)
else:
# All projects have been retrieved
get_projects_response = None
Produces this error:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipykernel_19/1987585116.py in <cell line: 19>()
18 index = 0
19 while get_projects_response is not None:
---> 20 for project in get_projects_response.value:
21 pprint.pprint("[" + str(index) + "] " + project.name)
22 index += 1
AttributeError: 'list' object has no attribute 'value'
In this environment:
ArcGIS Notebooks Server Information: You are using Jupyter notebook.
The version of the notebook server is: 6.4.12 The server is running on this version of Python: Python 3.9.16 (main, Jan 11 2023, 16:05:54) [GCC 11.2.0]
Current Kernel Information: Python 3.9.16 (main, Jan 11 2023, 16:05:54) Type 'copyright', 'credits' or 'license' for more information IPython 7.34.0 -- An enhanced Interactive Python. Type '?' for help.
To solve this error you have to remove the ".value" on get_projects_response on line 20.
while get_projects_response is not None:
for project in get_projects_response:
rather than the current:
while get_projects_response is not None:
for project in get_projects_response.value:
Would be cool if the readme.md could get updated to improve the onboarding experience for this package.
It seems that the Getting Started code is expecting a specific kind of object, but when I run it, I get list.
After printing all of the projects in my org I get this error:
AttributeError Traceback (most recent call last) /tmp/ipykernel_19/114958425.py in <cell line: 19>() 21 pprint.pprint("[" + str(index) + "] " + project.name) 22 index += 1 ---> 23 if get_projects_response.continuation_token is not None and get_projects_response.continuation_token != "": 24 # Get the next page of projects 25 get_projects_response = core_client.get_projects(continuation_token=get_projects_response.continuation_token)
AttributeError: 'list' object has no attribute 'continuation_token'
To resolve this error, I removed the outer while loop and the if/else statement that was checking for the continuation_token resulting in this code:
for project in get_projects_response:
pprint.pprint("[" + str(index) + "] " + project.name)
index += 1
Whereas before it was:
while get_projects_response is not None:
for project in get_projects_response:
pprint.pprint("[" + str(index) + "] " + project.name)
index += 1
if get_projects_response.continuation_token is not None and get_projects_response.continuation_token != "":
# Get the next page of projects
get_projects_response = core_client.get_projects(continuation_token=get_projects_response.continuation_token)
else:
# All projects have been retrieved
get_projects_response = None
I'm also looking for a way to get the continuation_token as this is required when you have a big list (like when you are going to get the list of builds).
I have not found yet a way around it using the library. Maybe the only option is to use requests
directly.
Thanks @uncheckederror I was wondering why example was not working
I created a PR to change the README to help others https://github.com/microsoft/azure-devops-python-api/pull/474