Kontekst
pyproject.toml ([tool.uv.sources]) tymczasowo pinuje django-import-export na git-tag naszego forka zamiast PyPI:
[tool.uv.sources]
django-import-export = { git = "https://github.com/mpasternak/django-import-export.git", tag = "4.4.2.dev0+iplweb" }
Tag 4.4.2.dev0+iplweb = main HEAD forka (d6ee0d3, = 4.4.1 + 49 commitów upstream).
Dlaczego
Fix django-import-export#2156 ("Loading format libraries now checks IMPORT_EXPORT_FORMATS to improve performance") przeniósł budowanie listy formatów z eager module-level DEFAULT_FORMATS = [... if is_available()] do leniwej @lru_cache get_default_formats().
Efekt w BPP: openpyxl (i przez nie numpy) przestają się ładować przy admin.autodiscover (django.setup()), bo is_available() nie jest już wołane przy imporcie. RSS przy setupie spada ~154 → ~144 MB; openpyxl/numpy wchodzą dopiero przy realnym eksporcie XLSX (a nie w każdym procesie web/Celery przy starcie).
Fix jest zmergowany w upstream main, ale niewydany — ostatni release PyPI to 4.4.1, który ma jeszcze stary eager probe.
Akcja do wykonania (gdy upstream wyda 4.4.2 / 4.5 z #2156)
- Usunąć blok
[tool.uv.sources] dla django-import-export z pyproject.toml.
- Podbić constraint na wydaną wersję (np.
django-import-export>=4.4.2,<5).
uv lock && uv sync; sprawdzić git+... zniknęło z uv.lock.
- Usunąć tag
4.4.2.dev0+iplweb z forka (opcjonalnie).
- Walidacja: openpyxl/numpy nadal nie-eager przy
django.setup() (RSS ~144 MB), testy admin-export zielone.
Powiązania
Kontekst
pyproject.toml([tool.uv.sources]) tymczasowo pinuje django-import-export na git-tag naszego forka zamiast PyPI:Tag
4.4.2.dev0+iplweb=mainHEAD forka (d6ee0d3, = 4.4.1 + 49 commitów upstream).Dlaczego
Fix django-import-export#2156 ("Loading format libraries now checks
IMPORT_EXPORT_FORMATSto improve performance") przeniósł budowanie listy formatów z eager module-levelDEFAULT_FORMATS = [... if is_available()]do leniwej@lru_cache get_default_formats().Efekt w BPP: openpyxl (i przez nie numpy) przestają się ładować przy
admin.autodiscover(django.setup()), bois_available()nie jest już wołane przy imporcie. RSS przy setupie spada ~154 → ~144 MB; openpyxl/numpy wchodzą dopiero przy realnym eksporcie XLSX (a nie w każdym procesie web/Celery przy starcie).Fix jest zmergowany w upstream
main, ale niewydany — ostatni release PyPI to 4.4.1, który ma jeszcze stary eager probe.Akcja do wykonania (gdy upstream wyda 4.4.2 / 4.5 z #2156)
[tool.uv.sources]dladjango-import-exportzpyproject.toml.django-import-export>=4.4.2,<5).uv lock && uv sync; sprawdzićgit+...zniknęło zuv.lock.4.4.2.dev0+iplwebz forka (opcjonalnie).django.setup()(RSS ~144 MB), testy admin-export zielone.Powiązania
IMPORT_EXPORT_FORMATSto improve performance django-import-export/django-import-export#2156