HTTP_PROXY ਅਤੇ http_proxy ਨਾਲ ConfigParser DuplicateOptionError
ਸਮਝੋ ਕਿ Linux ਵਾਤਾਵਰਣ ਵਿੱਚ HTTP_PROXY ਅਤੇ http_proxy ਇਕੱਠੇ ਕਿਵੇਂ ਰਹਿ ਸਕਦੇ ਹਨ, ਪਰ ConfigParser ਡਿਫ਼ਾਲਟ ਵਜੋਂ ਵਰਤਣ 'ਤੇ DuplicateOptionError ਕਿਉਂ ਆਉਂਦੀ ਹੈ।
ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਵਾਤਾਵਰਣ ਵਿੱਚ HTTP_PROXY ਅਤੇ http_proxy ਵੱਖਰੇ ਨਾਮ ਹੋ ਸਕਦੇ ਹਨ। ConfigParser ਆਮ ਤੌਰ 'ਤੇ ਚੋਣ ਨਾਮਾਂ ਨੂੰ ਛੋਟੇ ਅੱਖਰਾਂ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਦੋਵੇਂ ਡਿਫ਼ਾਲਟ ਵਿੱਚ ਦੇਣ ਨਾਲ ਉਹ ਇੱਕ ਡੁਪਲੀਕੇਟ ਚੋਣ ਬਣ ਸਕਦੇ ਹਨ।
ਇਸ ਲਈ <dict> ਦਾ ਨਾਮ ਲੈਣ ਵਾਲੀ ਗਲਤੀ ConfigParser(defaults=os.environ) ਤੋਂ ਆ ਸਕਦੀ ਹੈ, ਕਿਸੇ ਵੀ ਪ੍ਰੌਕਸੀ ਕਨੈਕਸ਼ਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਤੋਂ ਪਹਿਲਾਂ।
ਜੇ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਇਸ ਪਾਰਸਰ ਵਿੱਚ ਜਾਣ-ਬੁੱਝ ਕੇ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਵਾਤਾਵਰਣ ਨਾਮ ਚਾਹੀਦੇ ਹਨ, ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਸਧਾਰਣਕਰਨ ਨੀਤੀ ਸੈੱਟ ਕਰੋ:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})ਇਸ ਨਾਲ ਦੋਵੇਂ ਸ਼ਬਦ-ਜੋੜ ਵੱਖਰੇ ਰਹਿੰਦੇ ਹਨ। ਖੋਜਾਂ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਪੜ੍ਹੀ ਜਾਣ ਵਾਲੀ ਕੋਈ ਵੀ ਸੰਰਚਨਾ ਹੁਣ ਉਸ ਨੀਤੀ ਦੀ ਪਾਲਣਾ ਕਰਦੀ ਹੈ। ਇੰਟਰਪੋਲੇਸ਼ਨ ਬੰਦ ਕਰਨ ਨਾਲ ਵਾਤਾਵਰਣ ਮੁੱਲਾਂ ਵਿੱਚ ਪ੍ਰਤੀਸ਼ਤ ਚਿੰਨ੍ਹਾਂ ਨੂੰ ਇੰਟਰਪੋਲੇਸ਼ਨ ਸਿੰਟੈਕਸ ਮੰਨਣ ਤੋਂ ਵੀ ਰੋਕਦਾ ਹੈ।
ਜੇ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਕੇਸ-ਅਸੰਵੇਦਨਸ਼ੀਲ ਸੰਰਚਨਾ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਇੱਛਤ ਵਾਤਾਵਰਣ ਇਨਪੁਟ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਚੁਣੋ ਅਤੇ ਪਾਰਸਰ ਨੂੰ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਉਸ ਕਲਾਇੰਟ ਦੇ ਪ੍ਰੌਕਸੀ ਨਿਯਮਾਂ ਅਨੁਸਾਰ ਵਿਰੋਧੀ ਸ਼ਬਦ-ਜੋੜ ਹੱਲ ਕਰੋ।
strict=False ਬਦਲਣ ਨਾਲ ਡੁਪਲੀਕੇਟ ਸਵੀਕਾਰ ਹੁੰਦੇ ਹਨ, ਪਰ ਇਹ ਨਿਰਧਾਰਤ ਨਹੀਂ ਹੁੰਦਾ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਕਿਹੜਾ ਵਿਰੋਧੀ ਪ੍ਰੌਕਸੀ ਮੁੱਲ ਵਰਤੇ। ਜਦੋਂ ਪਾਰਸਰ ਤੁਹਾਡੇ ਨਿਯੰਤਰਣ ਵਿੱਚ ਨਾ ਹੋਵੇ ਤਾਂ ਇੱਕ ਅਚਾਨਕ ਵਾਤਾਵਰਣ ਸ਼ਬਦ-ਜੋੜ ਹਟਾਉਣਾ ਢੁਕਵਾਂ ਹੋ ਸਕਦਾ ਹੈ; ਪਹਿਲਾਂ ਨਿਰਧਾਰਤ ਕਰੋ ਕਿ ਡਾਊਨਸਟ੍ਰੀਮ ਕਲਾਇੰਟ ਨੂੰ ਕਿਹੜਾ ਮੁੱਲ ਚਾਹੀਦਾ ਹੈ।