Skip to content

mulled-search gives error when searching GitHub sources due to lack of valid token #1535

@kbessonov1984

Description

@kbessonov1984

When running mulled-search -o biocontainers -s minimap2=2.28 the GitHub API error is raised due to lack of the token. Github now requires a valid token to search code which triggers error

requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.github.com/search/code?q=minimap2=2.28+in:path+repo:bioconda/bioconda-recipes+path:recipes

To solve this one needs to import GITHUB_TOKEN global variable from the environment and modify the mulled_search.py around line 160 def get_json(self, search_string) to add header with the token to correctly query GitHub API. GitHub classical token needs to generated in your account at https://github.com/settings/tokens/

Update the code as follows:

def get_json(self, search_string):
        """
        Takes search_string variable and return results from the bioconda-recipes github repository in JSON format

        DEPRECATED: this method is currently unreliable because the API query
        sometimes succeeds but returns no items.
        """
 
        github_token = os.getenv("GITHUB_TOKEN")
        headers = {
            "Accept": "application/vnd.github+json"
        }

        if github_token:
            headers["Authorization"] = f"Bearer {github_token}"

        response = requests.get(
            f"https://api.github.com/search/code?q={search_string}+in:path+repo:bioconda/bioconda-recipes+path:recipes",
            headers=headers,
            timeout=MULLED_SOCKET_TIMEOUT,
        )

       ...

After this modification all works great and the following output is obtained

$ mulled-search -o biocontainers -s minimap2=2.28
The query returned the following result(s).
LOCATION  NAME      VERSION           COMMAND
conda     minimap2  2.28--h577a1d6_4  conda install -c bioconda minimap2=2.28=h577a1d6_4
conda     minimap2  2.28--he4a0461_0  conda install -c bioconda minimap2=2.28=he4a0461_0
conda     minimap2  2.28--he4a0461_1  conda install -c bioconda minimap2=2.28=he4a0461_1
conda     minimap2  2.28--he4a0461_2  conda install -c bioconda minimap2=2.28=he4a0461_2
conda     minimap2  2.28--he4a0461_3  conda install -c bioconda minimap2=2.28=he4a0461_3

The following recipes were found in the bioconda-recipes repository which exactly matched one of the search terms:
QUERY  LOCATION

I noticed that this issue is linked to galaxy-tool-util package which contains all mulled-* scripts. I was using v24.2.3 of galaxy-tool-util and galaxy-util

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions