@@ -307,96 +307,6 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
307
307
else :
308
308
connection_service_file = pathlib .Path (connection_service_file )
309
309
310
- if connection_service_file is not None and service is not None :
311
- pg_service = configparser .ConfigParser ()
312
- pg_service .read (connection_service_file )
313
- if service in pg_service .sections ():
314
- service_params = pg_service [service ]
315
- if 'port' in service_params :
316
- val = service_params .pop ('port' )
317
- if not port and val :
318
- port = [int (p ) for p in val .split (',' )]
319
-
320
- if 'host' in service_params :
321
- val = service_params .pop ('host' )
322
- if not host and val :
323
- host , port = _parse_hostlist (val , port )
324
-
325
- if 'dbname' in service_params :
326
- val = service_params .pop ('dbname' )
327
- if database is None :
328
- database = val
329
-
330
- if 'database' in service_params :
331
- val = service_params .pop ('database' )
332
- if database is None :
333
- database = val
334
-
335
- if 'user' in service_params :
336
- val = service_params .pop ('user' )
337
- if user is None :
338
- user = val
339
-
340
- if 'password' in service_params :
341
- val = service_params .pop ('password' )
342
- if password is None :
343
- password = val
344
-
345
- if 'passfile' in service_params :
346
- val = service_params .pop ('passfile' )
347
- if passfile is None :
348
- passfile = val
349
-
350
- if 'sslmode' in service_params :
351
- val = service_params .pop ('sslmode' )
352
- if ssl is None :
353
- ssl = val
354
-
355
- if 'sslcert' in service_params :
356
- sslcert = service_params .pop ('sslcert' )
357
-
358
- if 'sslkey' in service_params :
359
- sslkey = service_params .pop ('sslkey' )
360
-
361
- if 'sslrootcert' in service_params :
362
- sslrootcert = service_params .pop ('sslrootcert' )
363
-
364
- if 'sslnegotiation' in service_params :
365
- sslnegotiation = service_params .pop ('sslnegotiation' )
366
-
367
- if 'sslcrl' in service_params :
368
- sslcrl = service_params .pop ('sslcrl' )
369
-
370
- if 'sslpassword' in service_params :
371
- sslpassword = service_params .pop ('sslpassword' )
372
-
373
- if 'ssl_min_protocol_version' in service_params :
374
- ssl_min_protocol_version = service_params .pop (
375
- 'ssl_min_protocol_version'
376
- )
377
-
378
- if 'ssl_max_protocol_version' in service_params :
379
- ssl_max_protocol_version = service_params .pop (
380
- 'ssl_max_protocol_version'
381
- )
382
-
383
- if 'target_session_attrs' in service_params :
384
- dsn_target_session_attrs = service_params .pop (
385
- 'target_session_attrs'
386
- )
387
- if target_session_attrs is None :
388
- target_session_attrs = dsn_target_session_attrs
389
-
390
- if 'krbsrvname' in service_params :
391
- val = service_params .pop ('krbsrvname' )
392
- if krbsrvname is None :
393
- krbsrvname = val
394
-
395
- if 'gsslib' in service_params :
396
- val = service_params .pop ('gsslib' )
397
- if gsslib is None :
398
- gsslib = val
399
-
400
310
if parsed .scheme not in {'postgresql' , 'postgres' }:
401
311
raise exceptions .ClientConfigurationError (
402
312
'invalid DSN: scheme is expected to be either '
@@ -529,6 +439,96 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user,
529
439
else :
530
440
server_settings = {** query , ** server_settings }
531
441
442
+ if connection_service_file is not None and service is not None :
443
+ pg_service = configparser .ConfigParser ()
444
+ pg_service .read (connection_service_file )
445
+ if service in pg_service .sections ():
446
+ service_params = pg_service [service ]
447
+ if 'port' in service_params :
448
+ val = service_params .pop ('port' )
449
+ if not port and val :
450
+ port = [int (p ) for p in val .split (',' )]
451
+
452
+ if 'host' in service_params :
453
+ val = service_params .pop ('host' )
454
+ if not host and val :
455
+ host , port = _parse_hostlist (val , port )
456
+
457
+ if 'dbname' in service_params :
458
+ val = service_params .pop ('dbname' )
459
+ if database is None :
460
+ database = val
461
+
462
+ if 'database' in service_params :
463
+ val = service_params .pop ('database' )
464
+ if database is None :
465
+ database = val
466
+
467
+ if 'user' in service_params :
468
+ val = service_params .pop ('user' )
469
+ if user is None :
470
+ user = val
471
+
472
+ if 'password' in service_params :
473
+ val = service_params .pop ('password' )
474
+ if password is None :
475
+ password = val
476
+
477
+ if 'passfile' in service_params :
478
+ val = service_params .pop ('passfile' )
479
+ if passfile is None :
480
+ passfile = val
481
+
482
+ if 'sslmode' in service_params :
483
+ val = service_params .pop ('sslmode' )
484
+ if ssl is None :
485
+ ssl = val
486
+
487
+ if 'sslcert' in service_params :
488
+ sslcert = service_params .pop ('sslcert' )
489
+
490
+ if 'sslkey' in service_params :
491
+ sslkey = service_params .pop ('sslkey' )
492
+
493
+ if 'sslrootcert' in service_params :
494
+ sslrootcert = service_params .pop ('sslrootcert' )
495
+
496
+ if 'sslnegotiation' in service_params :
497
+ sslnegotiation = service_params .pop ('sslnegotiation' )
498
+
499
+ if 'sslcrl' in service_params :
500
+ sslcrl = service_params .pop ('sslcrl' )
501
+
502
+ if 'sslpassword' in service_params :
503
+ sslpassword = service_params .pop ('sslpassword' )
504
+
505
+ if 'ssl_min_protocol_version' in service_params :
506
+ ssl_min_protocol_version = service_params .pop (
507
+ 'ssl_min_protocol_version'
508
+ )
509
+
510
+ if 'ssl_max_protocol_version' in service_params :
511
+ ssl_max_protocol_version = service_params .pop (
512
+ 'ssl_max_protocol_version'
513
+ )
514
+
515
+ if 'target_session_attrs' in service_params :
516
+ dsn_target_session_attrs = service_params .pop (
517
+ 'target_session_attrs'
518
+ )
519
+ if target_session_attrs is None :
520
+ target_session_attrs = dsn_target_session_attrs
521
+
522
+ if 'krbsrvname' in service_params :
523
+ val = service_params .pop ('krbsrvname' )
524
+ if krbsrvname is None :
525
+ krbsrvname = val
526
+
527
+ if 'gsslib' in service_params :
528
+ val = service_params .pop ('gsslib' )
529
+ if gsslib is None :
530
+ gsslib = val
531
+
532
532
if not host :
533
533
hostspec = os .environ .get ('PGHOST' )
534
534
if hostspec :
0 commit comments