Merge pull request #18003 from mvdbeek/add_galaxy_to_user_agent

Add galaxy to user agent
This commit is contained in:
John Chilton
2024-05-20 12:14:13 -04:00
committed by GitHub
65 changed files with 168 additions and 92 deletions
+2 -1
View File
@@ -18,7 +18,8 @@ import sys
from urllib.parse import urlencode
import parse_builds # noqa: I100,I202
import requests
from galaxy.util import requests
def getchrominfo(url, db):
+1 -1
View File
@@ -8,7 +8,7 @@ build description
import sys
import xml.etree.ElementTree as ElementTree
import requests
from galaxy.util import requests
def getbuilds(url):
+1 -1
View File
@@ -5,7 +5,7 @@ Connects to sites and determines which builds are available at each.
import xml.etree.ElementTree as ElementTree
import requests
from galaxy.util import requests
sites = [
"http://genome.ucsc.edu/cgi-bin/",
+1
View File
@@ -133,6 +133,7 @@ from galaxy.tours import (
build_tours_registry,
ToursRegistry,
)
from galaxy.util import user_agent # noqa: F401
from galaxy.util import (
ExecutionTimer,
heartbeat,
+1 -1
View File
@@ -16,7 +16,6 @@ from typing import (
from urllib.parse import quote
import jwt
import requests
from oauthlib.common import generate_nonce
from requests_oauthlib import OAuth2Session
@@ -30,6 +29,7 @@ from galaxy.model import (
)
from galaxy.model.base import transaction
from galaxy.model.orm.util import add_object_to_object_session
from galaxy.util import requests
from . import IdentityProvider
try:
+1 -1
View File
@@ -6,7 +6,6 @@ import os
import random
import string
import requests
from cloudauthz import CloudAuthz
from cloudauthz.exceptions import CloudAuthzBaseException
@@ -19,6 +18,7 @@ from galaxy.util import (
etree,
listify,
parse_xml,
requests,
string_as_bool,
unicodify,
)
+4 -2
View File
@@ -3,7 +3,6 @@ import logging
import time
import jwt
import requests
from msal import ConfidentialClientApplication
from social_core.actions import (
do_auth,
@@ -27,7 +26,10 @@ from galaxy.model import (
UserAuthnzToken,
)
from galaxy.model.base import transaction
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from . import IdentityProvider
log = logging.getLogger(__name__)
+1 -1
View File
@@ -11,7 +11,6 @@ from typing import (
)
from urllib.parse import quote
import requests
from typing_extensions import (
Literal,
TypedDict,
@@ -37,6 +36,7 @@ from galaxy.files.sources._rdm import (
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
get_charset_from_http_headers,
requests,
stream_to_open_named_file,
)
+4 -3
View File
@@ -7,8 +7,6 @@ from typing import (
Union,
)
import requests
from galaxy import exceptions
from galaxy.files import (
ConfiguredFileSources,
@@ -17,7 +15,10 @@ from galaxy.files import (
from galaxy.files.sources import FilesSourceOptions
from galaxy.files.sources.http import HTTPFilesSourceProperties
from galaxy.files.uris import stream_url_to_file
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from galaxy.util.config_parsers import IpAllowedListEntryT
TargetPathT = Union[str, PathLike]
@@ -9,10 +9,11 @@ import traceback
from functools import partial
from typing import Callable
import requests
from galaxy.tool_util.deps import docker_util
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from galaxy.util.sockets import get_ip
GetIpCallable = Callable[[], str]
+1 -2
View File
@@ -3,8 +3,6 @@ import logging
import time
from datetime import datetime
import requests
from galaxy import model
from galaxy.jobs.runners import (
AsynchronousJobRunner,
@@ -12,6 +10,7 @@ from galaxy.jobs.runners import (
)
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
unicodify,
)
+4 -2
View File
@@ -1,12 +1,14 @@
import functools
import logging
import requests
from beaker.cache import CacheManager
from beaker.util import parse_cache_config_options
from galaxy.structured_app import BasicSharedApp
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
log = logging.getLogger(__name__)
+2 -1
View File
@@ -8,9 +8,10 @@ from typing import (
Dict,
)
import requests
import yaml
from galaxy.util import requests
DESCRIPTION = """Load a Galaxy model store into a running Galaxy instance.
See the corresponding galaxy-build-objects script for one possible way to
+1 -1
View File
@@ -14,7 +14,6 @@ from typing import (
Union,
)
import requests
from axe_selenium_python import Axe
from selenium.common.exceptions import (
NoSuchElementException,
@@ -29,6 +28,7 @@ from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait
from galaxy.navigation.components import Target
from galaxy.util import requests
from .axe_results import (
AxeResults,
NullAxeResults,
+4 -2
View File
@@ -24,7 +24,6 @@ from typing import (
Union,
)
import requests
import yaml
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webdriver import WebDriver
@@ -36,7 +35,10 @@ from galaxy.navigation.components import (
HasText,
)
from galaxy.navigation.data import load_root_component
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from . import sizzle
from .has_driver import (
exception_indicates_click_intercepted,
+4 -3
View File
@@ -8,9 +8,10 @@ from typing import (
Optional,
)
import requests
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from .interface import BiotoolsEntry
+1 -1
View File
@@ -10,7 +10,7 @@ import warnings
warnings.filterwarnings("ignore", message=r"[\n.]DEPRECATION: Python 2", module="cwltool")
import requests
from galaxy.util import requests
try:
from cwltool import (
+1 -1
View File
@@ -34,7 +34,6 @@ from typing import (
Union,
)
import requests
from typing_extensions import (
Protocol,
TypedDict,
@@ -44,6 +43,7 @@ from galaxy import util
from galaxy.exceptions import MessageException
from galaxy.util import (
Element,
requests,
RW_R__R__,
)
from galaxy.util.compression_utils import decompress_path_to_directory
+12 -4
View File
@@ -15,9 +15,10 @@ from typing import (
Optional,
)
import requests
import yaml
from galaxy.util import requests
try:
from jinja2 import Template
from jinja2.exceptions import UndefinedError
@@ -130,7 +131,10 @@ def find_anaconda_versions(name, anaconda_channel="bioconda"):
"""
Find a list of available anaconda versions for a given container name
"""
r = requests.get(f"https://anaconda.org/{anaconda_channel}/{name}/files", timeout=MULLED_SOCKET_TIMEOUT)
r = requests.get(
f"https://anaconda.org/{anaconda_channel}/{name}/files",
timeout=MULLED_SOCKET_TIMEOUT,
)
r.raise_for_status()
urls = []
for line in r.text.splitlines():
@@ -147,7 +151,8 @@ def open_recipe_file(file, recipes_path=None, github_repo="bioconda/bioconda-rec
return open(f"{recipes_path}/{file}").read()
else: # if no clone of the repo is available locally, download from GitHub
r = requests.get(
f"https://raw.githubusercontent.com/{github_repo}/master/{file}", timeout=MULLED_SOCKET_TIMEOUT
f"https://raw.githubusercontent.com/{github_repo}/master/{file}",
timeout=MULLED_SOCKET_TIMEOUT,
)
if r.status_code == 404:
raise OSError
@@ -163,7 +168,10 @@ def get_alternative_versions(filepath, filename, recipes_path=None, github_repo=
return [n.replace(f"{recipes_path}/", "") for n in glob(f"{recipes_path}/{filepath}/*/{filename}")]
# else use the GitHub API:
versions = []
r = requests.get(f"https://api.github.com/repos/{github_repo}/contents/{filepath}", timeout=MULLED_SOCKET_TIMEOUT)
r = requests.get(
f"https://api.github.com/repos/{github_repo}/contents/{filepath}",
timeout=MULLED_SOCKET_TIMEOUT,
)
check_github_api_response_rate_limit(r)
r.raise_for_status()
for subfile in json.loads(r.text):
@@ -22,8 +22,7 @@ import subprocess
import sys
import time
import requests
from galaxy.util import requests
from ._cli import arg_parser
from .mulled_build import (
add_build_arguments,
@@ -5,8 +5,7 @@ import logging
from glob import glob
from html.parser import HTMLParser
import requests
from galaxy.util import requests
from .util import MULLED_SOCKET_TIMEOUT
QUAY_API_ENDPOINT = "https://quay.io/api/v1/repository"
@@ -6,11 +6,10 @@ import logging
import sys
import tempfile
import requests
from galaxy.tool_util.deps.conda_util import CondaContext
from galaxy.util import (
check_github_api_response_rate_limit,
requests,
which,
)
from .mulled_list import get_singularity_containers
+1 -1
View File
@@ -18,7 +18,6 @@ from typing import (
Union,
)
import requests
from conda_package_streaming.package_streaming import stream_conda_info
from conda_package_streaming.url import stream_conda_info as stream_conda_info_from_url
from packaging.version import Version
@@ -29,6 +28,7 @@ from galaxy.tool_util.version import (
LegacyVersion,
parse_version,
)
from galaxy.util import requests
if TYPE_CHECKING:
from galaxy.tool_util.deps.container_resolvers import ResolutionCache
+4 -2
View File
@@ -1,9 +1,11 @@
from urllib.parse import quote
import requests
import yaml
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from . import ToolLocationResolver
+1 -1
View File
@@ -24,7 +24,6 @@ from typing import (
Union,
)
import requests
from packaging.version import Version
from requests import Response
from requests.cookies import RequestsCookieJar
@@ -41,6 +40,7 @@ from galaxy.tool_util.parser.interface import (
TestCollectionDef,
TestCollectionOutputDef,
)
from galaxy.util import requests
from galaxy.util.bunch import Bunch
from galaxy.util.hash_util import (
memory_bound_hexdigest,
+1
View File
@@ -26,6 +26,7 @@ from galaxy.files.uris import (
stream_to_file,
stream_url_to_file,
)
from galaxy.util import user_agent # noqa: F401
from galaxy.util import (
in_directory,
safe_makedirs,
@@ -8,11 +8,10 @@ from abc import (
)
from typing import Dict
import requests
from galaxy.tools.errors import EmailErrorReporter
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
unicodify,
)
from . import ErrorPlugin
@@ -4,7 +4,7 @@ import logging
import os
import urllib.parse
import requests
from galaxy.util import requests
try:
import gitlab
@@ -7,9 +7,10 @@ from typing import (
Dict,
)
import requests
from galaxy.util import string_as_bool
from galaxy.util import (
requests,
string_as_bool,
)
from .base_git import BaseGitPlugin
log = logging.getLogger(__name__)
+4 -2
View File
@@ -6,12 +6,14 @@ import os
import h5py
import numpy as np
import requests
import yaml
from galaxy.tools.parameters import populate_state
from galaxy.tools.parameters.workflow_utils import workflow_building_modes
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from galaxy.workflow.modules import module_factory
log = logging.getLogger(__name__)
+2 -1
View File
@@ -56,7 +56,6 @@ from urllib.parse import (
urlunsplit,
)
import requests
from boltons.iterutils import (
default_enter,
remap,
@@ -68,6 +67,8 @@ from typing_extensions import (
Self,
)
from galaxy.util import requests
try:
import grp
except ImportError:
+44
View File
@@ -0,0 +1,44 @@
from typing import (
Callable,
cast,
TypeVar,
)
import requests
from requests import ( # noqa: F401
codes as codes,
exceptions as exceptions,
Response as Response,
)
from typing_extensions import ParamSpec
from .user_agent import get_default_headers
Param = ParamSpec("Param")
RetType = TypeVar("RetType")
def default_user_agent_decorator(f: Callable[Param, RetType]) -> Callable[Param, RetType]:
def wrapper(*args: Param.args, **kwargs: Param.kwargs) -> RetType:
headers = cast(dict, kwargs.pop("headers", None) or {})
headers.update(get_default_headers())
is_session = f in (requests.session, requests.Session)
if not is_session:
kwargs["headers"] = headers
rval = f(*args, **kwargs)
if is_session:
rval.headers = headers # type: ignore[attr-defined]
return rval
return wrapper
delete = default_user_agent_decorator(requests.delete)
get = default_user_agent_decorator(requests.get)
head = default_user_agent_decorator(requests.head)
patch = default_user_agent_decorator(requests.patch)
post = default_user_agent_decorator(requests.post)
put = default_user_agent_decorator(requests.put)
session = default_user_agent_decorator(requests.session)
Session = default_user_agent_decorator(requests.Session)
+1 -1
View File
@@ -7,8 +7,8 @@ from typing import (
from unittest import SkipTest
import pytest
import requests
from galaxy.util import requests
from galaxy.util.commands import which
+5
View File
@@ -0,0 +1,5 @@
from galaxy.version import VERSION
def get_default_headers():
return {"user-agent": f"galaxy/{VERSION}"}
+1 -2
View File
@@ -4,9 +4,8 @@ import os
import time
from collections import namedtuple
import requests
from galaxy.util import (
requests,
sockets,
sqlite,
unique_id,
@@ -4,10 +4,9 @@ API operations allowing clients to manage container resolution.
import logging
import requests
from galaxy.structured_app import StructuredApp
from galaxy.tool_util.deps import views
from galaxy.util import requests
from galaxy.web import (
expose_api,
require_admin,
@@ -5,13 +5,12 @@ Controller to handle communication of tools of type data_source_async
import logging
from urllib.parse import urlencode
import requests
from galaxy import web
from galaxy.model.base import transaction
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
Params,
requests,
unicodify,
)
from galaxy.util.hash_util import hmac_new
+1 -2
View File
@@ -1,11 +1,10 @@
import logging
import requests
from galaxy.config import GalaxyAppConfiguration
from galaxy.exceptions import ServerNotConfiguredForRequest
from galaxy.schema.help import HelpForumSearchResponse
from galaxy.security.idencoding import IdEncodingHelper
from galaxy.util import requests
from galaxy.webapps.galaxy.services.base import ServiceBase
log = logging.getLogger(__name__)
+1 -1
View File
@@ -3,13 +3,13 @@ import os
import re
import urllib.parse
import requests
import yaml
from galaxy.exceptions import MessageException
from galaxy.util import (
asbool,
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from galaxy.util.search import parse_filters
+1 -2
View File
@@ -9,8 +9,6 @@ from urllib.parse import (
urlparse,
)
import requests
from galaxy.files import (
ConfiguredFileSources,
DictFileSourcesUserContext,
@@ -20,6 +18,7 @@ from galaxy.files.sources.util import (
fetch_drs_to_file,
RetryOptions,
)
from galaxy.util import requests
from galaxy.util.config_parsers import parse_allowlist_ips
from galaxy_test.base.populators import DatasetPopulator
from ._framework import ApiTestCase
+1 -1
View File
@@ -7,9 +7,9 @@ from operator import itemgetter
from unittest import SkipTest
import pytest
import requests
from dateutil.parser import isoparse
from galaxy.util import requests
from galaxy_test.api.test_tools import TestsTools
from galaxy_test.base.api_asserts import assert_status_code_is_ok
from galaxy_test.base.populators import (
+1 -1
View File
@@ -11,9 +11,9 @@ from urllib.parse import (
)
import pytest
import requests
from typing_extensions import Protocol
from galaxy.util import requests
from galaxy.util.properties import get_from_env
from .api_asserts import (
assert_error_code_is,
+1 -1
View File
@@ -4,8 +4,8 @@ from typing import (
)
import jsonschema
import requests
from galaxy.util import requests
from galaxy_test.base import api_asserts
schema_store: Dict[str, Any] = {}
+1 -1
View File
@@ -69,7 +69,6 @@ from typing import (
from uuid import UUID
import cwltest.compare
import requests
import yaml
from bioblend.galaxyclient import GalaxyClient
from gxformat2 import (
@@ -99,6 +98,7 @@ from galaxy.tool_util.verify.wait import (
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
galaxy_root_path,
requests,
UNKNOWN,
)
from galaxy.util.resources import resource_string
+4 -2
View File
@@ -4,9 +4,11 @@ import uuid
from urllib.parse import urlencode
import pytest
import requests
from galaxy.util import DEFAULT_SOCKET_TIMEOUT
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from galaxy.web import statsd_client as statsd
from galaxy_test.api._framework import ApiTestCase
from galaxy_test.driver.driver_util import GalaxyTestDriver
+1 -1
View File
@@ -18,7 +18,6 @@ from typing import (
TYPE_CHECKING,
)
import requests
import yaml
from gxformat2 import (
convert_and_import_workflow,
@@ -39,6 +38,7 @@ from galaxy.util import (
asbool,
classproperty,
DEFAULT_SOCKET_TIMEOUT,
requests,
)
from galaxy.util.unittest_utils import skip_if_github_down
from galaxy_test.base import populators
+1 -1
View File
@@ -9,9 +9,9 @@ from typing import (
)
from urllib.parse import urljoin
import requests
from typing_extensions import Literal
from galaxy.util import requests
from galaxy_test.base.api_asserts import (
assert_has_keys,
assert_status_code_is,
+1 -1
View File
@@ -8,9 +8,9 @@ from typing import (
Union,
)
import requests
from typing_extensions import Protocol
from galaxy.util import requests
from galaxy.util.resources import (
as_file,
resource_path,
+1 -1
View File
@@ -25,7 +25,6 @@ from urllib.parse import (
)
import pytest
import requests
from mercurial import (
commands,
hg,
@@ -53,6 +52,7 @@ from galaxy.tool_shed.util.dependency_display import build_manage_repository_dic
from galaxy.tool_shed.util.repository_util import check_for_updates
from galaxy.util import (
DEFAULT_SOCKET_TIMEOUT,
requests,
smart_str,
)
from galaxy_test.base.api_asserts import assert_status_code_is_ok
+2 -1
View File
@@ -1,9 +1,10 @@
import argparse
import json
import requests
import yaml
from galaxy.util import requests
def main():
parser = argparse.ArgumentParser(description="Upload a directory into a data library")
+1 -1
View File
@@ -5,7 +5,7 @@ Sample script for Galaxy Search API
import json
import sys
import requests
from galaxy.util import requests
class RemoteGalaxy:
+1 -1
View File
@@ -8,7 +8,7 @@ import os
import sys
try:
import requests
from galaxy.util import requests
except ImportError:
print(
"Could not import the requests module. See http://docs.python-requests.org/en/latest/"
+1 -1
View File
@@ -17,7 +17,7 @@ from typing import (
Optional,
)
import requests
from galaxy.util import requests
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "lib")))
+1 -1
View File
@@ -16,7 +16,7 @@ import os
import sys
from xml import etree
import requests
from galaxy.util import requests
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "lib")))
+2 -1
View File
@@ -8,9 +8,10 @@ import logging
import os
import sys
import requests
import yaml
from galaxy.util import requests
sample_config = os.path.abspath(os.path.join(os.path.dirname(__file__), "grt.yml.sample"))
default_config = os.path.abspath(os.path.join(os.path.dirname(__file__), "grt.yml"))
+1 -1
View File
@@ -11,7 +11,7 @@ import time
from ftplib import FTP
from urllib.request import urlretrieve
import requests
from galaxy.util import requests
try:
from bs4 import BeautifulSoup
+2 -1
View File
@@ -2,10 +2,11 @@
import os
import click
import requests
from tusclient import client
from tusclient.storage import filestorage
from galaxy.util import requests
UPLOAD_ENDPOINT = "/api/upload/resumable_upload"
SUBMISSION_ENDPOINT = "/api/tools/fetch"
CHUNK_SIZE = 10**7
+1 -1
View File
@@ -1,4 +1,4 @@
import requests
from galaxy.util import requests
def delete(api_key, url, data, return_formatted=True):
+1 -2
View File
@@ -10,9 +10,8 @@ from string import Template
from typing import ClassVar
from urllib import parse
import requests
from galaxy.model.base import transaction
from galaxy.util import requests
from galaxy_test.base.api import ApiTestInteractor
from galaxy_test.driver import integration_util
@@ -10,8 +10,8 @@ from typing import (
)
import pytest
import requests
from galaxy.util import requests
from galaxy_test.base import api_asserts
from galaxy_test.base.populators import (
DatasetPopulator,
+1 -1
View File
@@ -20,7 +20,6 @@ import os
import tempfile
from typing import Dict
import requests
from sqlalchemy import select
from tusclient import client
@@ -29,6 +28,7 @@ from galaxy.model.base import (
ensure_object_added_to_session,
transaction,
)
from galaxy.util import requests
from galaxy_test.base import api_asserts
from galaxy_test.base.populators import DatasetPopulator
from galaxy_test.driver import integration_util
+4 -2
View File
@@ -15,7 +15,6 @@ from urllib.parse import (
)
import jwt
import requests
from galaxy.app_unittest_utils.galaxy_mock import MockTrans
from galaxy.authnz import custos_authnz
@@ -23,7 +22,10 @@ from galaxy.model import (
CustosAuthnzToken,
User,
)
from galaxy.util import unicodify
from galaxy.util import (
requests,
unicodify,
)
from galaxy.util.unittest import TestCase
+1 -1
View File
@@ -6,9 +6,9 @@ from collections import namedtuple
from io import BytesIO
import pytest
import requests
from whoosh import index
from galaxy.util import requests
from tool_shed.util.shed_index import build_index
URL = "https://github.com/mvdbeek/toolshed-test-data/blob/master/toolshed_community_files.tgz?raw=true"
+4 -2
View File
@@ -1,9 +1,11 @@
import pytest
import requests
import responses
from werkzeug.wrappers.response import Response
from galaxy.util import url_get
from galaxy.util import (
requests,
url_get,
)
@responses.activate
+4 -2
View File
@@ -5,14 +5,16 @@ import time
from typing import Optional
import pytest
import requests
import uvicorn
from fastapi import status
from fastapi.applications import FastAPI
from requests import ReadTimeout
from starlette.middleware.base import BaseHTTPMiddleware
from galaxy.util import sockets
from galaxy.util import (
requests,
sockets,
)
error_encountered: Optional[str] = None