Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting started code throws error in notebook #467

Open
uncheckederror opened this issue Aug 17, 2023 · 3 comments
Open

Getting started code throws error in notebook #467

uncheckederror opened this issue Aug 17, 2023 · 3 comments

Comments

@uncheckederror
Copy link

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.

@uncheckederror
Copy link
Author

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

@apostoloss
Copy link

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.

@asrindayananda
Copy link

asrindayananda commented Nov 18, 2023

Thanks @uncheckederror I was wondering why example was not working

I created a PR to change the README to help others #474

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants