ericphanson / ExplicitImports.jl

Developer tooling for Julia namespace management: detecting implicit imports, improper explicit imports, and improper qualified accesses
https://ericphanson.github.io/ExplicitImports.jl/
MIT License
62 stars 2 forks source link

handle macronames #18

Closed ericphanson closed 3 months ago

ericphanson commented 3 months ago

closes #15

On this branch I get:

julia> using ExplicitImports, Lux

julia> print_explicit_imports(Lux)
Module Lux is relying on implicit imports for 54 names. These could be explicitly imported as follows:

```julia
using Adapt: Adapt
using Adapt: adapt
using ArrayInterface: ArrayInterface
using ChainRulesCore: ChainRulesCore
using ChainRulesCore: AbstractZero
using ChainRulesCore: HasReverseMode
using ChainRulesCore: NoTangent
using ChainRulesCore: ProjectTo
using ChainRulesCore: RuleConfig
using ChainRulesCore: ZeroTangent
using ConcreteStructs: ConcreteStructs
using ConcreteStructs: @concrete
using Functors: Functors
using Functors: fmap
using GPUArraysCore: GPUArraysCore
using LinearAlgebra: LinearAlgebra
using LuxCore: LuxCore
using LuxDeviceUtils: LuxDeviceUtils
using LuxDeviceUtils: cpu_device
using LuxDeviceUtils: get_device
using LuxDeviceUtils: gpu_device
using LuxLib: LuxLib
using LuxLib: alpha_dropout
using LuxLib: batchnorm
using LuxLib: dropout
using LuxLib: groupnorm
using LuxLib: instancenorm
using LuxLib: layernorm
using Markdown: Markdown
using NNlib: NNlib
using NNlib: DenseConvDims
using NNlib: PoolDims
using NNlib: batched_mul
using NNlib: conv
using NNlib: maxpool
using NNlib: meanpool
using NNlib: pixel_shuffle
using NNlib: sigmoid_fast
using NNlib: tanh_fast
using NNlib: ∇conv_data
using Random: Random
using Random: AbstractRNG
using Reexport: Reexport
using Reexport: @reexport
using Setfield: Setfield
using Setfield: @set!
using SparseArrays: SparseArrays
using Statistics: Statistics
using Statistics: mean
using WeightInitializers: WeightInitializers
using WeightInitializers: glorot_uniform
using WeightInitializers: ones32
using WeightInitializers: randn32
using WeightInitializers: zeros32

Additionally, Lux has stale explicit imports for these unused names:

Module Lux.Experimental is relying on implicit imports for 15 names. These could be explicitly imported as follows:

using ADTypes: ADTypes
using ConcreteStructs: ConcreteStructs
using Functors: Functors
using LuxCore: LuxCore
using LuxDeviceUtils: LuxDeviceUtils
using LuxDeviceUtils: gpu_device
using MacroTools: MacroTools
using MacroTools: block
using MacroTools: combinedef
using MacroTools: splitdef
using Markdown: Markdown
using Optimisers: Optimisers
using Random: Random
using Random: AbstractRNG
using Setfield: Setfield

Module Lux.Training is relying on implicit imports for 3 names. These could be explicitly imported as follows:

using ADTypes: ADTypes
using Reexport: Reexport
using Reexport: @reexport


so it looks like it is correctly pulling in `@concrete`.
codecov-commenter commented 3 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 96.25%. Comparing base (87382f9) to head (30a6820).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #18 +/- ## ======================================= Coverage 96.25% 96.25% ======================================= Files 5 5 Lines 481 481 ======================================= Hits 463 463 Misses 18 18 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.