Search

Generic Typing with Iterable
or Collection
: Should you use it?
I often find myself defining function args with list[SomeClass]
type and think "do I really care that it's a list
? No, tuple
or Generator
is fine, too". I then tend to use Iterable[SomeClass]
or Collection[SomeClass]
. But when it comes to str
, I really don't like that solution, because if you have this function:
python
def foo(bar: Collection[str]) -> None: pass
Then calling foo("hello")
is fine, too, because "hello" is a collection of strings with length 1, which would not be fine if I just used list[str]
in the first place.
What would you do in a situation like this?

...
The instance where I was using it changed it's rules to prevent bots from posting in it and I didn't care enough to search for another instance.
https://lemm.ee/c/issue_tracker?dataType=Post&page=1&sort=Active
`config_template.py
py
LEMMY_INSTANCE_URL = "" LEMMY_COMMUNITY_NAME = "" LEMMY_USERNAME = "" LEMMY_PASSWORD = "" GITHUB_API_BASE = "https://api.github.com" GITHUB_URL_BASE = "https://github.com" REPOSITORIES = ["LemmyNet/lemmy", "LemmyNet/lemmy-ui"] DB_FILE = "lemmy_github.db" DELAY = 1 MAX_BACKOFF_TIME = 300 PERSONAL_ACCESS_TOKEN = ""
github_lemmy_issue_reposter.py
py
import backoff import datetime import logging import requests import schedule import sqlite3 import time from config import * from pythorhead import Lemmy from typing import Any, Dict, Generator, List, Optional, Tuple, Callable, TypeVar T = TypeVar('T') # "[%(levelname)s]:%(asctime)s:%(name)s [%(filename)s:%(lineno)s - %(funcName)s()] %(message)s" FORMAT = "%(message)s" logging.basicConfig

Has using 'thing = list()' instead of 'thing: list = ' any downsides?
I have seen some people prefer to create a list of strings by using thing = list[str]()
instead of thing: list[str] = []
. I think it looks kinda weird, but maybe that's just because I have never seen that syntax before. Does that have any downsides?
It is also possible to use this for dicts: thing = dict[str, SomeClass]()
. Looks equally weird to me. Is that widely used? Would you use it? Would you point it out in a code review?

Optimizing Script to Find Fast Instances
Last month, I developed a script because lemmy.ml had become too slow. Unfortunately, I have the same problem again, but this time there are too many instances to evaluate, causing the script to take an excessively long time to complete. I'm seeking advice on how to enhance the script to simultaneously ping multiple instances. Are there any alternative scripts available that might provide a more efficient solution?
undefined
git clone https://github.com/LemmyNet/lemmy-stats-crawler cd lemmy-stats-crawler cargo run -- --json > stats.json
python
#!/usr/bin/env python3 import json import time import requests import requests.exceptions from typing import List, Dict TIME_BETWEEN_REQUESTS = 5 # 10 * 60 = 10 minutes TIME_TOTAL = 60 # 8 * 60 * 60 = 8 hours def get_latency(domain): try: start = time.time() if not domain.startswith(("http://", "https://")): domain = "https://" + domain requests.get(domain, timeout=3) end = time.time()