"""Pure local URL-string transformations on example.test; never dereferences any URL."""
from urllib.parse import quote,quote_plus,unquote,urlencode,urlsplit,parse_qs
import json,platform
def demo():
 examples=['فارسی','a b','a+b','a/b','a&b','%2F',''];rows=[]
 for raw in examples:
  segment=quote(raw,safe='',encoding='utf-8',errors='strict');query=urlencode({'q':raw});url='https://example.test/items/'+segment+'?'+query
  p=urlsplit(url);encoded_segment=p.path[len('/items/'):];q=parse_qs(p.query,keep_blank_values=True,strict_parsing=True,encoding='utf-8',errors='strict',max_num_fields=2)
  assert unquote(encoded_segment,encoding='utf-8',errors='strict')==raw and q=={'q':[raw]}
  assert len(p.path.split('/'))==3
  rows.append({'original':raw,'encoded_path_segment':segment,'encoded_form_query':query,'local_url':url,'decoded_once_path':unquote(encoded_segment,encoding='utf-8',errors='strict'),'parsed_query':q})
 assert parse_qs('q=a+b')['q']==['a b']and parse_qs('q=a%2Bb')['q']==['a+b']
 once=unquote('%252F');twice=unquote(once);assert once=='%2F'and twice=='/'
 wrong=quote_plus('https://example.test/items/a b?q=a+b');assert not urlsplit(wrong).scheme
 return {'python':platform.python_version(),'roundtrip_rows':rows,'double_decode':{'encoded':'%252F','once':once,'twice':twice},'whole_url_quote_plus_loses_component_structure':wrong,'scheme_after_wrong_whole_encoding':urlsplit(wrong).scheme,'network_or_ssrf_security_test':False,'all_assertions_passed':True}
if __name__=='__main__':print(json.dumps(demo(),ensure_ascii=True,indent=2))
