-
Notifications
You must be signed in to change notification settings - Fork 138
Description
Is your feature request related to a problem? Please describe.
It's frustrating to manually create client objects with user_supplied_client just to be able to customize the user_agent.
Describe the solution you'd like
I'd like user_agent to be configurable via connect_args when invoking sa.engine.create_engine. Since theClient is automatically created as part of create_connect_args, any user-provided connect_args can't currently be incorporated.
One solution would be to defer the creation of the Client object until BigQueryDialect.connect so that all connect_args (both from create_connect_args and the user) can be incorporated.
However, as a smaller iteration to allow control over this, it would be helpful to be able to specify the user_agent string as part of the URL so that parse_url (in the context of create_connect_args) can extract it as a ClientInfo object and pass it to _helpers.create_bigquery_client for automatic client creation.
python-bigquery-sqlalchemy/sqlalchemy_bigquery/base.py
Lines 1170 to 1177 in f363b87
| client = _helpers.create_bigquery_client( | |
| credentials_path=self.credentials_path, | |
| credentials_info=self.credentials_info, | |
| credentials_base64=self.credentials_base64, | |
| project_id=self.billing_project_id, | |
| location=self.location, | |
| default_query_job_config=default_query_job_config, | |
| ) |
Describe alternatives you've considered
Today, our only option seems to be user_supplied_client and creating our own client – and bq_storage_client – with appropriate ClientInfo populated.
Additional context
Add any other context or screenshots about the feature request here.