Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #197429

RE: Module urljoin does not appear to work with scheme Gemini

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Anders Munch <ajm@flonidan.dk>
Newsgroups comp.lang.python
Subject RE: Module urljoin does not appear to work with scheme Gemini
Date Thu, 24 Apr 2025 08:36:12 +0000
Lines 47
Message-ID <mailman.30.1745483776.3008.python-list@python.org> (permalink)
References <20250421083845.5e5b6d69@workstation.localdomain> <f5bikmwp8of.fsf@lochinver.inf.ed.ac.uk> <20250422182253.00b9327d@workstation.localdomain> <f5bwmbbnexs.fsf@lochinver.inf.ed.ac.uk> <VI1PR05MB106805790212AE1658621959AB4852@VI1PR05MB10680.eurprd05.prod.outlook.com>
Mime-Version 1.0
Content-Type text/plain; charset="us-ascii"
Content-Transfer-Encoding quoted-printable
X-Trace news.uni-berlin.de e0Z93rGqjnoH4ywXaxqFrAvcaysy1AqzbG3P1iRnFJUA==
Cancel-Lock sha1:tT4Mvq6g7IeNv+h1OcLU1e8YZ5Y= sha256:yzR1Xa5JxQcAH31ZfO8dttv4+7QSEAnU24X4t692UQk=
Return-Path <ajm@flonidan.dk>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
Authentication-Results mail.python.org; dkim=pass reason="1024-bit key; unprotected key" header.d=FlonidanAS.onmicrosoft.com header.i=@FlonidanAS.onmicrosoft.com header.b=1AWzJOVe; dkim-adsp=none (unprotected policy); dkim-atps=neutral
X-Spam-Status OK 0.006
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'argument': 0.04; 'e.g.': 0.07; 'used.': 0.07; 'considering.': 0.09; 'flags': 0.09; 'lookup': 0.09; 'parse': 0.09; 'subject:not': 0.09; 'import': 0.15; 'that.': 0.15; 'flag': 0.16; 'functions.': 0.16; 'given,': 0.16; 'parsing': 0.16; 'refactor': 0.16; 'sets,': 0.16; 'subject:Module': 0.16; 'subject:does': 0.16; 'urllib.parse': 0.16; 'wrote:': 0.16; 'instead': 0.17; 'to:addr:python-list': 0.20; 'written': 0.22; 'code': 0.23; 'saying': 0.25; 'object': 0.26; 'old': 0.27; 'seem': 0.31; 'approach': 0.31; 'objects': 0.32; 'but': 0.32; 'header:In-Reply-To:1': 0.35; '...': 0.37; 'lists': 0.37; "skip:' 10": 0.37; 'way': 0.38; 'use': 0.39; 'quite': 0.39; 'adding': 0.39; 'wrote': 0.39; 'still': 0.40; 'best': 0.61; 'once': 0.63; 'that,': 0.67; 'exactly': 0.68; 'henry': 0.69; 'order.': 0.69; 'note:': 0.71; 'name,': 0.75; 'yourself': 0.75; 'names,': 0.81; 'strategy': 0.84; 'preference.': 0.84; 'six,': 0.84
ARC-Seal i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TSGELAkDUYjNt6Vy7jWjmoWqVvajKPsfWyz+sa4+xZY/+meGGTYqAHXH84h9FHOWfawkgIcodu8zBYyCOjo+10AgHX5Z/7cmjT9yVJ45Yc6z8dcv0yEBVKhED0gTGE6ZRihbi/06W3hjkyRUE33BPMrXyM3OyoIDYw2Hl4bN0ql0wekte8kURE0LyYg4SWv1+nDloWQwpYxbEeABeRztwRduZpq55WTrsS9MeMELou73yVYFnAMh2rhqXojp93wgfIVDSdXzCPGUSA6kOtJX1uS+8RW/sV4gYV4gjADHmVZyZB/DgKKY/5IduJVTXBuZ5eG5njCIkdjiAH7nrhHe6A==
ARC-Message-Signature i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EwxZ+f7jOoEnKluuBEoiMZPz2lKOsQLvT7N07JZQRyE=; b=JjvN8gFANpMMkJQuHgJ20RGwZRVYGkOa3t3id5IyhWtmxbsViEafNaRDevgQfaIfoCSVZvEnA/CAc9AhQJrhMWYnLVJ74U861Cv6tX43TpaOPSgnQbA4APMoqpJf9Vv7VzpYLugNGuKclAdi8XRJC57txWRf6f0i8y+xPPabx8ZeBRrJWou978c5P7STMP7EhSQzcHH2JQTJe9xNWGu7A3k4L6JX8JH64tyDy8XQ6F8ozn4+2g8bzYPA5MNz2p+SixcdeUk2gtnA23b7D/ydsL+djL+14a3ocGgFOSnY11DEUAGpB721RjZBMmCy5Jm165wYBbqibF6/QYJT0es5fQ==
ARC-Authentication-Results i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=flonidan.dk; dmarc=pass action=none header.from=flonidan.dk; dkim=pass header.d=flonidan.dk; arc=none
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=FlonidanAS.onmicrosoft.com; s=selector2-FlonidanAS-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EwxZ+f7jOoEnKluuBEoiMZPz2lKOsQLvT7N07JZQRyE=; b=1AWzJOVe2EdsB1J1J1PLz4IGo1SdqL7H9rH2UHWAjbt6VwecxE16Y9rs4xzIsLD7V1DaDGc4k2M9xIOukJmBL8rwSdPic659M3os6u2IupDkISGVjqkXWXOApT6QwgTIeL1bvP5F1RDgV0U53p+b6EdWJofF+C76y+Dcnyow/7M=
Thread-Topic Module urljoin does not appear to work with scheme Gemini
Thread-Index AQHbsoDCxKkhgz/pXEmmzUCCpt+KL7OvzZNGgAACQICAAYnzQ4ABKFCA
In-Reply-To <f5bwmbbnexs.fsf@lochinver.inf.ed.ac.uk>
Accept-Language en-US
Content-Language en-US
X-MS-Has-Attach
X-MS-TNEF-Correlator
authentication-results dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=flonidan.dk;
x-ms-publictraffictype Email
x-ms-traffictypediagnostic VI1PR05MB10680:EE_|DU0PR05MB9506:EE_
x-ms-office365-filtering-correlation-id 3fb8fa36-ea9f-4b63-f2d6-08dd830b1237
x-ms-exchange-senderadcheck 1
x-ms-exchange-antispam-relay 0
x-microsoft-antispam BCL:0; ARA:13230040|366016|1800799024|376014|38070700018;
x-microsoft-antispam-message-info RZyEfOEKREN4OmDhtR68KuRNA7gEwSYJ0xHz1auUuxQ17jxqT4vZu8vyLg4n3BSjNgwqBpznnDnb2sp8bkIbFTfy5bR5ui3UDdW63nq8RDEc7kq572s8IW89CgOWN4dPJGHSOHnFIA4a6UqWScnM0EJ7S2pgmAtbuFqPeBtjanEV5dJ/ersKk74eA8eJ/aSQy1SUXG/lWSp0CsNYQV6ki7jh37dRJyg0piAOhIpm8pM7PuQUn1gVAxpEOJptNkkaeMn66Fr5Tj5Lc/gGU6L1P3GV3m9d4dJjoIPR+I4q2Vvnw6NMXYS1sOJx2Bbd+AMndn3xTtoiahT4JrcCP51/KxdS2yptLEA+Tos5ZNbFo1QQRQVzoaMMB/eW2h7SMeXK2bfOcv7J71a+LxqUQGAtqJmuaJRMEXZCKoiO+5/7yDK5Kxlyh+8NkPmMrqU40dGjdownkqzcIG12NPu3zodMz9GuuWGJpMk1WrNzQJqVjvl/3hZMrS2zpwWPY8fJQPIEktahjLzHhr6N5SGt1+xhAKW3Bg5vP1xt1DdgSNh2fQWKMPb9xmIcQcmGeK/vQQsHvzI5JBU35XIqhmtauX/Tp8ruIPXuFrdqiFlXoy2o9Q+5ExGfBKLcCFsYoY1Fv3I07gMKGYA0ZW5Dofa0n9zkxaEFwfjU/m6fT+dooDJSRHnul2FMjx1/SOTkg22Z50OFP2cidB7hBChIRWhIvo0VXHvT7tJPreA08T7GNwo5jjVpN65jSP1mk1a61+1liOqfpzbVw5YnQUZVybSXDc9+PBVpuU4Z85m1MzNJAfVGCkyPGkps1OZ1+DkOTX+6Glal8b+15cPP5sWjWrozju7pTwD7OGVvteoeiUAj7oibLveNXkbd2hsedgR4OWXys10u69TtJXYgE5fYERV2zeeDnRvYf0Z4LNeF3vC4121vZ8WEFZzKo8X3exhewrthA5SlzQ5UjOfY3HVMgc0acc+k+VDtZBTZuUbJJQJh84LnV1+zBu4+L8giZ4wj7ZZ0XTQLQyertTmNhwBCx5GR1V819Yp7C/lJXrXiEbgd1LG7GFSgW20SHd7LcdaRFVwSeEOsDh/DiNV1GIbb0sCh4Prw8vJjbMEhHLahBXp17l6yVM6ePajUQ9czhVu6kfvFSXs+gM3cdEUgVb8TuszurQF6uk2PanKMJtAhA8+iYg5V6sH5D14FzAcnf7fr529V9Vxn7AOcbOLuKyFZVh4OIju+ygvqAo/WA5BIItFmtAxDbu03VqPtlcMmXrs+rpxLUYxZMwZsqiYBaQwR4j7BN1UZ3GY6pmEhY373YYEtoh2HadC5uOiHcdqlCAH0TdRCIJiVNwIt/efi7zNlWUZattwRpQ/p7Gi1JGwGPfV8VqUlnvkNWi4okdA5yZ6YH1kW4D1XdKLxtH4/8TTxr+yOW2/oO/50sCZ4AaoCsec0wScY/aQOgmQtbUGZ8uUTDw7HeQgbL4izL/fU+AZ6lT804BWYQg==
x-forefront-antispam-report CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR05MB10680.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount 1
x-ms-exchange-antispam-messagedata-0 ri+QKBEhlFMkzZ5nFkI1Zp40DdCb3wmCDtg0ZACZc/DVHxE1EGLT6d3BclNfhHCqzKo+9L6DvQvsjWf15A+gpwAZApUzRl0JS7N+JkJbdlrXyh1cLti+pSJA/N5SuHOfI4U3TBnGBqZ6/V/DrCSUzGBl1XSpP4N589J+6IHHydAJUxVmhDH2JWyiTiSCpbWTqxMe79EkRFSMSLZYpfhxP5NdCFWh881UtJYiRbLmK+oq9go5sdXDbqyb+nsVRi3ZpPqNYDK1xsR45n5NP+IJuSkjLwk/+N6/gZX7E7SSdaLhzaH4YAiWxILmawDlBaorIk+1IjeA9OqrweFg2O445HSuD2NmW6/O9QKPBkLLL7SAUKffNSOzCclS6oyxDYiLvJmTOmwavDqlOT1jTL9nq9iKS9ap3m6onOFwi6nXdj0RlnaHF2LNV9fHKVg5zGMSjOZep/reyG+CrWN9SBoWSfg1hBqsJy6DDR3JTEeODmhmoLxuLQ5p3CSic+EPNdQfAXvxXkRERyRig1N1GB9cTXT2A7JsNZN2syAtyjF3W/oe5JqPSIXN7Cl3zTf5XnOTizprNMRp96GLTRQuYL39Vq8EqV7kkD9gkZbDqF1t4Viq3Ow8MNVMtTYZbHYKckm60LLububL0uv10+vkhUKG+6kpAyYQ6vY/4MUqymbvSaJ5UCEDi0PUDMpfSgN7DM0J3ra2rSZgQv8OhWTKCmjL80Gkmjw582xU99Cfh8aDYLlzWNfIUNXZEcwf7cek/q2m/IdSefYxK6Pof/KvHHm1TuKpqY+IV/hIP/2dgKDoDNk5K74GgO32dZ4M3Kga1C4JPn5yxO5c6A27m5+KcsxmeyOZQAN60Tvt7Jyw1UwWzjKFlNlZBK+LPH1uqdp9hioAid/QxxLzo1BUo98Dmr0VHMOHQyqi4oJB1uBD38dCPbQoB/GPWm4p4oWc+wfEGLC0iXjcr0AtfdQgwcwmzVDLvuj33hvljbzmINg5AndFn51XytXDLjmQLrbvVGq4G53jjeVqEV2vH4ip9rI1V83XZBV0jXv8+/OssZ5HjYhfn4eZ5BJMp89HFhb0lSu9LVG+wNObeoI3thRb2jI9/WIJ0nHp3T+ZMSS02HFuWKfESfP2X1wX2QH7nfgB001+timFFD4Bp26xpIrx8/WvKLovvd7eM19+IQonocyCc64oAaMLJetsO791ROnb/O7lUtzgdxX0WwuVVAGe8DdYgDekNXNv2TiNOfCD+i+e9jdO3b7sLbKGfZJHidcLZZDrl/s1m5kTsNdH921IcIGS2fAFwSAqMQYW/qDQ1jX/t4RA/OpmBN7EHSw06lZBl+MVHie0NMtLYaV+SjvXJ0CYmOkPqoUHbWdnF6yAvzirwYupUFMdD6PiEexKc4be+RP9y7Lul31LPYcGb4V8rLldxUQk1dsdQ1f2//RyUjRwmO/5OMNzBoTp5zIIkaJ/tFCbHvNUJVgGkKxDXd4NxDYpXooKVXQUQ+HKaxki0L/YlCBl8nc2czi94e+tO3QQfptc1HGsyepJrqrCNOkY8Fu87NJ/bc9UVaQ4IsP9Qute6LUgUcQ=
X-OriginatorOrg flonidan.dk
X-MS-Exchange-CrossTenant-AuthAs Internal
X-MS-Exchange-CrossTenant-AuthSource VI1PR05MB10680.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id 3fb8fa36-ea9f-4b63-f2d6-08dd830b1237
X-MS-Exchange-CrossTenant-originalarrivaltime 24 Apr 2025 08:36:12.9737 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader Hosted
X-MS-Exchange-CrossTenant-id 66f919b0-b207-4d78-ae72-d81c18f86ec5
X-MS-Exchange-CrossTenant-mailboxtype HOSTED
X-MS-Exchange-CrossTenant-userprincipalname TBt1tpXUT+XET9mnCKfVIqxMqr+2cRVakfquxg/1NO17POm/R10SZfiKxi8M+nps
X-MS-Exchange-Transport-CrossTenantHeadersStamped DU0PR05MB9506
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.39
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <https://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID <VI1PR05MB106805790212AE1658621959AB4852@VI1PR05MB10680.eurprd05.prod.outlook.com>
X-Mailman-Original-References <20250421083845.5e5b6d69@workstation.localdomain> <f5bikmwp8of.fsf@lochinver.inf.ed.ac.uk> <20250422182253.00b9327d@workstation.localdomain> <f5bwmbbnexs.fsf@lochinver.inf.ed.ac.uk>
Xref csiph.com comp.lang.python:197429

Show key headers only | View raw


Henry S. Thompson wrote:
> Some approach to support future-proofing in general would seem to be in order. 
> Given some other precedents, adding a boolean argument called either 'strict' or 'lax' would be my preference.

An alternative would be to refactor urllib.parse to use strategy objects
for schemes.

parse.py contains a number of lists of scheme names, that act as flags to
control parsing behaviour:
        uses_relative, uses_netloc, uses_params, non_hierarchical, uses_query and uses_fragment.
(If written today they would be sets, but this is very old code that predates sets!)
Group that information by scheme instead of by flag name, in e.g. a dataclass, and
you have made yourself a strategy object lookup table:

scheme_options = {
   'https': SchemeOptions(uses_relative=True,  uses_netloc=True, uses_params=True),
   'git': SchemeOptions(uses_relative=False,  uses_netloc=True, uses_params=False),
   ...
}

Once you have that, you can add the strategy object as an optional argument to
functions.  If the argument is not given, you find a strategy object from
scheme_options to use. If the argument is given, you use that.

The best part of this approach is that you now have a way of saying "treat this
scheme exactly like https":

   from urllib import parse
   parse.urljoin('sptth://...', '../one-level-up', options=parse.scheme_options['https'])

Note: I wrote this before I realised that the lists non_hierarchical, uses_query
and uses_fragment are not used.  With only three options instead of six, making
a strategy object is not quite as attractive.  But still worth considering.

regards, Anders 

Back to comp.lang.python | Previous | Next | Find similar


Thread

RE: Module urljoin does not appear to work with scheme Gemini Anders Munch <ajm@flonidan.dk> - 2025-04-24 08:36 +0000

csiph-web