I started to python one and half week ago. So I’m still beginner.
Nice work! Here are a few notes:
The WeatherApp
object has a mix of attributes with long-term (eg self.LOCATIONS
) and short-term (eg self.city
) relevance. Instance attributes introduced in places other than __init__
, which makes it non-trivial for a reader to quickly understand what the object contains. And, actually, self.{city,lat,lon}
are all only used from the add_city
method so they could/should be local variables instead of instance attributes (just remove the self.
from them).
There seem to maybe be some bugs around when things are lowercase and when not; for example checking if self.city.lower() in self.LOCATIONS
but then when writing there the non-lower self.ctiy
is used as the key to self.LOCATIONS
.
The code under if rep == "1"
and elif rep == "2"
is mostly duplicated, and there is no else
branch to cover if rep
is something other than 1 or 2.
It looks like the config only persists favorites so far (and not non-favorite cities which the user can add) which isn’t obvious from the user interface.
Passing both location
and locations
into WeatherAPI
so that it can look up locations[location]
is unnecessary; it would be clearer to pass in the dict for the specific location. It would also be possible to avoid the need for LOWLOCATIONS
by adding a non-lowercase name
key to the per-location dictionaries that just have lat
and lon
right now, and then keeping LOCATIONS
keyed by the lowercase names.
HTH! happy hacking :)
You say that but, everything I ever posted on identica (and also on Evan’s later OStatus site
Status.Net
, which i was a paying customer of) went 404 just a few years later. 😢When StatusNet shut down I was offered a MySQL dump, which is better than nothing for personal archival but not actually useful for setting up a new instance due to OStatus having DNS-based identity and lacking any concept for migrating to a new domain.
https://identi.ca/evan/note/6EZ4Jzp5RQaUsx5QzJtL4A notes that Evan’s own first post is “still visible on Identi.ca today, although the URL format changed a few years ago, and the redirect plugin stopped working a few years after that.” … but for whatever reason he decided that most accounts (those inactive over a year, iiuc, which I was because I had moved to using StatusNet instead of identica) weren’t worthy of migrating to his new pump.io architecture at all.
Here is some reporting about it from 2013: https://lwn.net/Articles/544347/
As an added bonus, to the extent that I can find some of my posts on archive.org, links in them were all automatically replaced (it was the style at the time) with redirects via Evan’s URL shortening service
ur1.ca
which is also now long-dead.imo the deletion of most of the content in the proto-fediverse (PubSubHubbubiverse? 😂) was an enormous loss; I and many other people had years of great discussions on these sites which I wish we could revisit today.
🪦
The fact that ActivityPub now is still a thing where people must (be a sysadmin or) pick someone else’s domain to marry their online identity to is even more sad. ActivityPub desperately needs to become content addressable and decouple identity from other responsibilities. This experiment (which i learned of via this post) from six years ago seemed like a huge step in the right direction, but I don’t know if anyone is really working on solving these problems currently. 😢