Skip to content

cfipython file changes in 14_1_0_pre4 (compared to pre3) lead to failures in ConfDb parsing #45087

@Martin-Grunewald

Description

@Martin-Grunewald

Between pre3 and pre4 of 14_1_0, there is the following change in fillDescriptions-generated cfipython files, for example:

pre3:

cat $CMSSW_RELEASE_BASE/cfipython/el8_amd64_gcc12/Alignment/CommonAlignment/apvModeFilter_cfi.py 
import FWCore.ParameterSet.Config as cms

apvModeFilter = cms.EDFilter('APVModeFilter',
  apvMode = cms.untracked.string('deco'),
  mightGet = cms.optional.untracked.vstring
)

while in pre4:

cat $CMSSW_RELEASE_BASE/cfipython/el8_amd64_gcc12/Alignment/CommonAlignment/apvModeFilter_cfi.py 
import FWCore.ParameterSet.Config as cms

from .APVModeFilter import APVModeFilter

apvModeFilter = APVModeFilter()

The pre4 version breaks ConfDb parsing with the error message:

Scanning package: /cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre4//cfipython/el8_amd64_gcc12/Alignment/CommonAlignment
Traceback (most recent call last):
  File "/data/user/gruen/ConfDb/CMSSW_14_1_0_pre4/hlt-confdb/parser/./ConfdbLoadParamsFromConfigsPy3.py", line 1879, in <module>
    main(sys.argv[1:])
  File "/data/user/gruen/ConfDb/CMSSW_14_1_0_pre4/hlt-confdb/parser/./ConfdbLoadParamsFromConfigsPy3.py", line 191, in main
    confdbjob.BeginJob()
  File "/data/user/gruen/ConfDb/CMSSW_14_1_0_pre4/hlt-confdb/parser/./ConfdbLoadParamsFromConfigsPy3.py", line 483, in BeginJob
    self.ExtendTheCfi(validatedpyfile, validatedpydir, allowmultiplecfis, usepythonsubdir)
  File "/data/user/gruen/ConfDb/CMSSW_14_1_0_pre4/hlt-confdb/parser/./ConfdbLoadParamsFromConfigsPy3.py", line 717, in ExtendTheCfi
    exec(importcommand)
  File "<string>", line 1, in <module>
  File "/cvmfs/cms.cern.ch/el8_amd64_gcc12/cms/cmssw/CMSSW_14_1_0_pre4//cfipython/el8_amd64_gcc12/Alignment/CommonAlignment/apvModeFilter_cfi.py", line 3, in <module>
    from .APVModeFilter import APVModeFilter
ImportError: attempted relative import with no known parent package

Clearly this is a problem.

It seems the issue is with from .APVModeFilter import APVModeFilter, the leading '.' syntax.
Can it be reverted or done differently?
For example, defining the parent package explicitly in the py file, or giving a full path in the import statement?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions