Skip to content

Instantly share code, notes, and snippets.

View gvanrossum's full-sized avatar

Guido van Rossum gvanrossum

View GitHub Profile
# Don't name this file html.py!
from __future__ import annotations
from typing import *
from dataclasses import dataclass
from html import escape
from html.parser import HTMLParser
def generate(source):
print("# What comes before")
print(f"{source.removesuffix(".py")}.c: $(srcdir)/{source}")
print("\t$(COMMAND)")
def generate_too(source):
print("# What comes before")
print(f"{source.removesuffix("some/bad-\"-stuff%!")}.c: $(srcdir)/{source}")
print("\t$(COMMAND)")
def f(a):
t = 0
for x in a:
if x > 0:
t = t + x
return t
import dis
dis.dis(f)
Hello Dear,
This is Ellen from ***.com
We are pleased to get to know that your articles on your blog are awesome and the writing style is so suitable for introducing our company's products.
And we sincerely invite you to cooperate with us,
*Write an article about our products on your blog about 400-500 words + 2 pictures+ 3 links
*Promote it on your social website.
diff --git a/mypy/checker.py b/mypy/checker.py
index 7b0180f79..488ae825f 100644
--- a/mypy/checker.py
+++ b/mypy/checker.py
@@ -991,9 +991,11 @@ class TypeChecker(NodeVisitor[None], CheckerPluginInterface):
if is_unsafe_overlapping_signatures(forward_tweaked,
reverse_tweaked):
+ rev_name = reverse_class.name() if reverse_class is not None else None
+ fwd_name = forward_base.type.name() if forward_base and hasattr(forward_base, 'type ') and forward_base.type else None
@gvanrossum
gvanrossum / output.txt
Created May 16, 2017 16:02
Variadic decorator
variadic.py:17: error: Overloaded function signatures 1 and 2 overlap with incompatible return types
variadic.py:17: error: Overloaded function signatures 1 and 3 overlap with incompatible return types
variadic.py:38: error: Revealed type is 'Any'
variadic.py:39: error: Revealed type is 'Any'
@gvanrossum
gvanrossum / expander.py
Last active October 7, 2023 23:15
Expand variadic type variables
LIMIT = 5
BOUND = 'object'
def prelude(limit: int, bound: str) -> None:
print('from typing import Callable, Iterable, Iterator, Tuple, TypeVar, overload')
print('Ts = TypeVar(\'Ts\', bound={bound})'.format(bound=bound))
print('R = TypeVar(\'R\')')
for i in range(LIMIT):
print('T{i} = TypeVar(\'T{i}\', bound={bound})'.format(i=i+1, bound=bound))
@gvanrossum
gvanrossum / tzl.py
Last active May 29, 2019 11:00
local timezone class
# A local timezone class that inherits its behavior from the time
# module's knowledge about the local time zone.
# TODO: Use tm_gmtoff and tm_zone if supported? (Probably should be a
# separate class so we can compare them.)
import calendar # TODO: Really shouldn't.
import datetime
import time

This was posted as an email to python-dev.

History lesson

Since I signed up for the python-dev mailing list way back in June 2002, there seems to be a cycle where we as a group come to a realization that our current software development process has not kept up with modern practices and could stand for an update. For me this was first shown when we moved from SourceForge to our own infrastructure, then again when we moved from Subversion to Mercurial (I led both of these initiatives, so it's somewhat a tradition/curse I find myself in this position yet again). And so we again find ourselves at the point of realizing that we are not keeping up with current practices and thus need to evaluate how we can improve our situation.

Where we are now

Now it should be realized that we have two sets of users of our development process: contributors and core developers (the latter whom can play both roles). If you take a rough outline of our cu

@gvanrossum
gvanrossum / output
Last active August 29, 2015 14:10
Transaction example
python3 trans.py
begin
initial_preparations
HO HO HO
main: i = 0
finishing_touches
commit
and a bottle of rum 0
begin
initial_preparations