Skip to content

Cython build fails on Cython 3.3.0 #974

Description

@g7gpr

When RMS_Installer.sh was run on a newly built Debian machine following error was seen.

Obtaining file:///home/au000w/source/RMS
  Checking if build backend supports build_editable ... done
  Preparing editable metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Preparing editable metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [48 lines of output]
      
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
              for x in range(x_size):
      
                  max_val = compressed[0, y, x]
      
                  # Compute the threshold limit
                  avg_std = int(float(compressed[2, y, x]) + k1*float(compressed[3, y, x])) + j1
                                                                                            ^
      ------------------------------------------------------------
      RMS/Routines/Grouping3Dcy.pyx:481:86: Cannot assign type 'double' to 'unsigned int'

This is the first machine I have deployed on Cython version 3.3.0

(vRMS) au000w@pioneer-alpha:~/source/RMS$ cython --version
Cython version 3.3.0

Although I'm unable to find where this change in behaviour is documented, I believe it is a restriction on type narrowing that has been introduced in 3.3.x.

I'm testing a fix, and will submit a PR in the next 24 hours if it is successful and backward compatible.

# Compute the threshold limit
# This line no longer supported in Cython 3.3.0
# avg_std = int(float(compressed[2, y, x]) + k1*float(compressed[3, y, x])) + j1

avg_std = <unsigned int> (<double> compressed[2, y, x] + k1 * <double> compressed[3, y, x] + <double> j1)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions