I got you code and had a look at it.
The code is not excellent and has some design and gramatical problems.
The "Fail to retrieve internet data" comes from sounding.py.
First, urllib library has changed a lot. You had to modify the imports to this:

#import tidy
import datetime
import time
import locale
from string import *
from urllib.error import HTTPError
from urllib.parse import urlencode
from urllib.request import urlopen, urlretrieve, Request

and then substitute in the code correspondingly.

There are also some problems with opening the URLs. For example the uwyoClass class method should read:

def get_sounding_skewt(self):
data = {"region": "europe", "TYPE": "GIF:SKEWT", "YEAR": self.YEAR,
"MONTH": self.MONTH, "FROM": self.FROM, "TO": self.FROM, "STNM": SOUNDINGSTATION}

params = urlencode(data)
req = Request(url=' weather.uwyo.edu/cgi-bin/sounding?%s ' % params)
s = urlopen(req)
o = s.read()
s.close()
document = o
urlretrieve(" weather.uwyo.edu/upperair/images/ " + self.YEAR +
self.MONTH + self.FROM + ".08221.skewt.gif", CHARTPATH + "skewt.gif")


Then, here there is another problem I has stopped on because I have to go for launch :)
The problem is that the URL build to retrieve the weather picture (for example " weather.uwyo.edu/upperair/images/2020091412.08221.skewt.gif " points to a document that simply doesnt exists...
So the URL must be changed, but now I am not sure what the program is looking for. I need some time to learn about the objective of this section of the code.
Due to other duties (like going to work) I can not continue reviewing the code right now but I could do it in two days if you can wait for so long.
I like to review python code, so I do it willingly.

Read More...