NCAS-CMS / NCAS-CMS/cf-python

logger.partitioning is accessed before definition

Aperta
#274 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

documentation installation
Lingua principale
Python
Stelle
150
Fork
23
Merge medio
1g 11h
PR unite (30g)
2

Descrizione

logger.partitioning is accessed before definition using Python version: Python 3.8.11; cf-python version 3.11.0 from pypi

Using import cf immediately throws an attribute error: 'Logger' object has no attribute 'partitioning'. The expected behaviour is that logger.partitioning is defined before it is called, allowing for the package to be imported.
Following the traceback shows that logger.partitioning is accessed by way of line 194 in cf/.init.py:

  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/X/X_env/lib/python3.8/site-packages/cf/__init__.py", line 194, in <module>
    from .mixin import Coordinate
  File "/home/X/X_env/lib/python3.8/site-packages/cf/mixin/__init__.py", line 2, in <module>
    from .propertiesdata import PropertiesData, Subspace
  File "/home/X/X_env/lib/python3.8/site-packages/cf/mixin/propertiesdata.py", line 24, in <module>
    from ..timeduration import TimeDuration
  File "/home/X/X_env/lib/python3.8/site-packages/cf/timeduration.py", line 28, in <module>
    _one_year = Data(1, "calendar_years")
  File "/home/X/X_env/lib/python3.8/site-packages/cf/data/data.py", line 750, in __init__
    self._set_partition_matrix(
  File "/home/X/X_env/lib/python3.8/site-packages/cf/data/data.py", line 832, in _set_partition_matrix
    self.to_disk()
  File "/home/X/X_env/lib/python3.8/site-packages/cf/data/data.py", line 12125, in to_disk
    partition.close()
  File "/home/X/X_env/lib/python3.8/site-packages/cf/data/partition.py", line 788, in close
    logger.partitioning("Partition.close: original = {}".format(original))
AttributeError: 'Logger' object has no attribute 'partitioning'

logger.partitioning is defined on line 330 in cf/.init.py and is not created before any submodules are imported.

A possible solution is to move the logger definitions to before importing the submodules.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Ispeziona cf/init.py, in particolare le definizioni del logger intorno alla riga 330 e l’importazione del sottomodulo intorno alla riga 194. Riproduci il fallimento con import cf usando Python 3.8. Conferma che logger.partitioning esista prima che cf/timeduration.py e cf/data/partition.py lo utilizzino e verifica che il pacchetto venga importato correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
backend, data
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.