8000 Missing `hash` methods (or bad `==` methods) · Issue #1594 · thofma/Hecke.jl · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Missing hash methods (or bad == methods) #1594
Closed
@thofma

Description

@thofma

Before I forget. Here are the types with missing hash methods (or for which == should be removed). (Courtesy of @lgoettgens (oscar-system/Oscar.jl#2222). Needs julia version 1.10.5:

mod = Hecke
list = map(
  filter(names(mod; all=true)) do name
    isdefined(mod, name) || return false            # remove all wrong exports (see #1964)
    T = getfield(mod, name)
    T isa DataType || T isa UnionAll || return false  # remove all non-types and non-parametric-types
    parentmodule(==, (T, T)) == Base && return false  # remove everything without custom ==
    loc = functionloc(==, (T, T))
    endswith(loc[1], "julia/base/Base.jl") && loc[2] == 207 && return false  # remove everything without custom ==
    T <: AbstractArray && endswith(loc[1], "julia/base/abstractarray.jl") && loc[2] == 3028 && return false  # remove AbstractArray subtypes as Base provides both == and hash for them
    parentmodule(hash, (T, UInt)) == Base             # keep iff there is no custom hash
  end,
) do name
  T = getfield(mod, name)
  loc = functionloc(==, (T, T))
  if occursin("mod.jl/", loc[1])
    loc_cleaned = loc[1][first(findlast("mod.jl/", loc[1])):end]
  elseif occursin("packages/", loc[1])
    loc_cleaned = loc[1][(first(findlast("packages/", loc[1])) + length("packages/")):end]
  elseif occursin("julia/base/", loc[1])
    loc_cleaned = loc[1][first(findlast("julia/base/", loc[1])):end]
  else
    loc_cleaned = loc[1]
  end
  name, parentmodule(T), (loc_cleaned, loc[2])
end;

This yields

27-element Vector{Tuple{Symbol, Module, Tuple{String, Int32}}}:
 (:AbsAlgAssIdl, Hecke, ("/Users/thofma/software/Hecke.jl/src/AlgAss/Ideal.jl", 294))
 (:AbsNumFieldOrderFractionalIdealSet, Hecke, ("/Users/thofma/software/Hecke.jl/src/NumFieldOrd/NfOrd/FracIdeal.jl", 169))
 (:AbsNumFieldOrderIdealSet, Hecke, ("/Users/thofma/software/Hecke.jl/src/NumFieldOrd/NfOrd/Ideal/Ideal.jl", 69))
 (:AcbFieldElem, Nemo, ("/Users/thofma/.julia/dev/Nemo/src/arb/acb.jl", 332))
 (:AlgAssAbsOrd, Hecke, ("/Users/thofma/software/Hecke.jl/src/AlgAssAbsOrd/Order.jl", 547))
 (:AlgAssAbsOrdIdlSet, Hecke, ("/Users/thofma/software/Hecke.jl/src/AlgAssAbsOrd/Ideal.jl", 1492))
 (:AlgAssRelOrd, Hecke, ("/Users/thofma/software/Hecke.jl/src/AlgAssRelOrd/Order.jl", 371))
 (:ArbFieldElem, Nemo, ("/Users/thofma/.julia/dev/Nemo/src/arb/arb.jl", 355))
 (:CMType, Hecke, ("/Users/thofma/software/Hecke.jl/src/NumField/CM.jl", 60))
 (:ClassField, Hecke, ("/Users/thofma/software/Hecke.jl/src/RCF/class_fields.jl", 240))
 (:ComplexFieldElem, Nemo, ("/Users/thofma/.julia/dev/Nemo/src/arb/Complex.jl", 321))
 (:FinGenAbGroupHom, Hecke, ("/Users/thofma/software/Hecke.jl/src/GrpAb/Map.jl", 217))
 (:GenOrdFracIdl, Hecke, ("/Users/thofma/software/Hecke.jl/src/GenOrd/FractionalIdeal.jl", 272))
 (:LocElem, AbstractAlgebra.Generic, ("AbstractAlgebra/AqzuZ/src/NCRings.jl", 86))
 (:LocalQuadSpaceCls, Hecke, ("/Users/thofma/software/Hecke.jl/src/QuadForm/Quad/Spaces.jl", 2144))
 (:LocalizedEuclideanRingElem, AbstractAlgebra.Generic, ("AbstractAlgebra/AqzuZ/src/NCRings.jl", 86))
 (:MapParent, Hecke, ("/Users/thofma/software/Hecke.jl/src/GrpAb/Map.jl", 506))
 (:OrdLocElem, Hecke, ("AbstractAlgebra/AqzuZ/src/NCRings.jl", 86))
 (:QuadSpaceCls, Hecke, ("/Users/thofma/software/Hecke.jl/src/QuadForm/Quad/Spaces.jl", 2340))
 (:RCFCharacter, Hecke, ("/Users/thofma/software/Hecke.jl/src/RCF/rcf_stark.jl", 23))
 (:RealFieldElem, Nemo, ("/Users/thofma/.julia/dev/Nemo/src/arb/Real.jl", 339))
 (:RealNumberFieldElem, Hecke, ("/Users/thofma/software/Hecke.jl/src/Misc/RealNumberField.jl", 92))
 (:RelFinFieldElem, Hecke, ("AbstractAlgebra/AqzuZ/src/NCRings.jl", 86))
 (:RelNumFieldOrder, Hecke, ("/Users/thofma/software/Hecke.jl/src/NumFieldOrd/NfRelOrd/NfRelOrd.jl", 620))
 (:acb, Nemo, ("/Users/thofma/.julia/dev/Nemo/src/arb/acb.jl", 332))
 (:arb, Nemo, ("/Users/thofma/.julia/dev/Nemo/src/arb/arb.jl", 355))
 (:nf_elem_mod, Hecke, ("AbstractAlgebra/AqzuZ/src/NCRings.jl", 86))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0