No, they aren’t. The only references grepped for certifi or castore are in cldr_utils and there are both optional: true.
A slightly simpler example is with the ex_cldr repo. Here’s the deps tree:
kip@Kips-MacBook-Pro cldr % mix deps.tree
ex_cldr
├── benchee ~> 1.0 (Hex package)
│ ├── deep_merge ~> 1.0 (Hex package)
│ └── statistex ~> 1.0 (Hex package)
├── cldr_utils ~> 2.21 (Hex package)
│ └── decimal ~> 1.9 or ~> 2.0 (Hex package)
├── decimal ~> 1.6 or ~> 2.0 (Hex package)
├── dialyxir ~> 1.0 (Hex package)
│ └── erlex >= 0.2.6 (Hex package)
├── ex_doc ~> 0.18 (Hex package)
│ ├── earmark_parser ~> 1.4.31 (Hex package)
│ ├── makeup_elixir ~> 0.14 (Hex package)
│ │ ├── makeup ~> 1.0 (Hex package)
│ │ │ └── nimble_parsec ~> 1.2.2 or ~> 1.3 (Hex package)
│ │ └── nimble_parsec ~> 1.2.3 or ~> 1.3 (Hex package)
│ └── makeup_erlang ~> 0.1 (Hex package)
│ └── makeup ~> 1.0 (Hex package)
├── gettext ~> 0.19 (Hex package)
│ └── expo ~> 0.4.0 (Hex package)
├── jason ~> 1.0 (Hex package)
│ └── decimal ~> 1.0 or ~> 2.0 (Hex package)
├── nimble_parsec ~> 0.5 or ~> 1.0 (Hex package)
├── stream_data ~> 0.4 (Hex package)
└── sweet_xml ~> 0.6 (Hex package)
There are no references to :certifi or :castore other than that they are optional dependencies in cldr_utils.
mix.lock
In mix.lock I see the following. There is not direct dependency on :certifi or :castore.
%{
"benchee": {:hex, :benchee, "1.1.0", "f3a43817209a92a1fade36ef36b86e1052627fd8934a8b937ac9ab3a76c43062", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}], "hexpm", "7da57d545003165a012b587077f6ba90b89210fd88074ce3c60ce239eb5e6d93"},
"cldr_utils": {:hex, :cldr_utils, "2.24.0", "5b356769f2baf9dd25b166e9f1b2a5ce955d5b556bc07f56c959cfff1ec9543e", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "3fde251e0bbbe473230561019dd6c2958d82a10c134bb5b8b4e21a694196cf85"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
...
}
Dialyzer run
And running rm -rf _build && mix dialyzer I see:
Generated ex_cldr app
Finding suitable PLTs
Checking PLT...
Error loading castore, dependency list may be incomplete.
{~c"no such file or directory", ~c"castore.app"}
Error loading certifi, dependency list may be incomplete.
{~c"no such file or directory", ~c"certifi.app"}
[:asn1, :castore, :certifi, :cldr_utils, :compiler, :crypto, :decimal, :earmark_parser, :eex, :elixir, :ex_doc, :ex_unit, :expo, :gettext, :inets, :jason, :kernel, :logger, :makeup, :makeup_elixir, :makeup_erlang, :mix, :nimble_parsec, :public_key, :ssl, :stdlib, :sweet_xml, :xmerl]
Looking up modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Looking up modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Finding applications for dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Finding modules for dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Checking 463 modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Finding applications for dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Unknown application :castore
Unknown application :certifi
Finding modules for dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Copying dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt to dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Looking up modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Checking 463 modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Adding 626 modules to dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
done in 0m24.86s
ignore_warnings: .dialyzer_ignore_warnings
Starting Dialyzer
[
check_plt: false,
init_plt: ~c"/Users/kip/Development/cldr/_build/dev/dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt",
files: [~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.LanguageTag.Chars.Cldr.LanguageTag.U.beam",
~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.Normalize.CalendarEra.beam",
~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.NoParentError.beam",
~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.UnknownFormatError.beam",
~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Mix.Tasks.Cldr.Install.Locales.beam",
...],
warnings: [:unknown]
]
Total errors: 0, Skipped: 0, Unnecessary Skips: 0
done in 0m14.19s
done (passed successfully)
ex_cldr.app
The relevant parts are:
{application,ex_cldr,
[{compile_env,[{ecto,[json_library],error},
{ex_cldr,['Elixir.MyApp.Gettext'],
{ok,[{default_locale,<<"en">>}]}},
{ex_cldr,[json_library],error},
{phoenix,[json_library],error}]},
{optional_applications,[jason,nimble_parsec,gettext,sweet_xml]},
{applications,[kernel,stdlib,elixir,logger,inets,ssl,eex,
ex_unit,cldr_utils,decimal,jason,ex_doc,
nimble_parsec,gettext,sweet_xml]},


















