/usr/ports/infrastructure/bin/portgen supports "py" type, as seen in the source code:
if ( $type eq 'p5' ) { $o = OpenBSD::PortGen::Port::CPAN->new(); } elsif ( $type eq 'py' ) { $o = OpenBSD::PortGen::Port::PyPI->new(); } elsif ( $type eq 'ruby' ) { $o = OpenBSD::PortGen::Port::Ruby->new(); } else { die "unknown module type\n"; } This "py" type also works to generate ports from PyPI sources, mostly. It's not documented in the man page though. Attached diff adds a mention of the type to portgen(1) man page.
Index: portgen.1 =================================================================== RCS file: /cvs/src/share/man/man1/portgen.1,v retrieving revision 1.1 diff -u -p -u -p -r1.1 portgen.1 --- portgen.1 26 Jun 2018 05:38:49 -0000 1.1 +++ portgen.1 3 Feb 2019 21:15:33 -0000 @@ -50,6 +50,8 @@ values: .Bl -inset -offset indent -compact .It Cm p5 for Perl modules on CPAN. +.It Cm py +for Python modules on PyPI. .It Cm ruby for Ruby gems. .El