danielgtaylor / danielgtaylor/python-betterproto

Add option to turn off adding of empty __init__.py files

Offen
#579 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Python
Sterne
1.8k
Forks
234
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### Summary

Improve compatibility in monorepo/Bazel usages, so that package path can be treated as native namespace packages

### What is the feature request for?

The core library

### The Problem

When using two proto files that have a similar prefix such as `a.b.c` and `a.b.d`, when these are produced as two separate artifacts consuming both of these as libraries would cause a import path collision since they both share `__init__.py` files in `a` and `a/b` folders.

### The Ideal Solution

Add an option to skip creation of empty `__init__.py` files. Build tools treat the folders without `__init__.py` as namespace packages.

### The Current Solution

I made the change as a patch and applied the patch on the library to get this capability.
I can roll the change up as a PR if there's interest in this.

### Related Solution

A similar option called `legacy_create_init=False` was introduced on bazel to solve this exact issue with package names. See https://rules-proto-grpc.com/en/latest/lang/python.html#python-grpc-compile:~:text=legacy_create_init%3DFalse .

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Das Issue nennt weder eine Datei noch einen Test. Beginne damit, den Python-Codegenerierungs-Einstiegspunkt der Kernbibliothek und den Code zu finden, der leere __init__.py-Dateien erstellt. Vergleiche das angeforderte Verhalten mit Bazels Option legacy_create_init=False und überprüfe anschließend, dass generierte Namespace-Package-Pfade ohne diese Dateien funktionieren und das Standardverhalten unverändert bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
build-system, tooling
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.