defmodule Nx.MixProject do
use Mix.Project
@source_url "https://github.com/elixir-nx/nx"
@version "0.9.2"
def project do
[
app: :nx,
version: @version,
elixir: "~> 1.15",
elixirc_paths: elixirc_paths(Mix.env()),
deps: deps(),
docs: docs(),
name: "Nx",
description: "Multi-dimensional arrays (tensors) and numerical definitions for Elixir",
package: package(),
preferred_cli_env: [
docs: :docs,
"hex.publish": :docs
]
]
end
def application do
[
extra_applications: [:logger],
mod: {Nx.Application, []},
env: [default_backend: {Nx.BinaryBackend, []}, default_defn_options: []]
]
end
defp elixirc_paths(:test), do: ~w(lib test/support)
defp elixirc_paths(_), do: ~w(lib)
defp deps do
[
{:complex, "~> 0.5"},
{:telemetry, "~> 0.4.0 or ~> 1.0"},
{:ex_doc, "~> 0.29", only: :docs}
]
end
defp package do
[
maintainers: ["Sean Moriarity", "José Valim", "Paulo Valente"],
licenses: ["Apache-2.0"],
links: %{"GitHub" => @source_url}
]
end
defp docs do
[
main: "Nx",
logo: "numbat.png",
source_url_pattern: "#{@source_url}/blob/v#{@version}/nx/%{path}#L%{line}",
before_closing_body_tag: &before_closing_body_tag/1,
extras: [
"CHANGELOG.md",
"guides/intro-to-nx.livemd",
"guides/advanced/vectorization.livemd",
"guides/advanced/aggregation.livemd",
"guides/exercises/exercises-1-20.livemd"
],
skip_undefined_reference_warnings_on: ["CHANGELOG.md"],
groups_for_docs: [
Guards: &(&1[:type] in [:guards]),
"Functions: Aggregates": &(&1[:type] == :aggregation),
"Functions: Backend": &(&1[:type] == :backend),
"Functions: Conversion": &(&1[:type] == :conversion),
"Functions: Creation": &(&1[:type] in [:creation, :random]),
"Functions: Cumulative": &(&1[:type] == :cumulative),
"Functions: Element-wise": &(&1[:type] == :element),
"Functions: Indexed": &(&1[:type] == :indexed),
"Functions: N-dim": &(&1[:type] == :ndim),
"Functions: Shape": &(&1[:type] == :shape),
"Functions: Vectorization": &(&1[:type] == :vectorization),
"Functions: Type": &(&1[:type] == :type),
"Functions: Window": &(&1[:type] == :window)
],
groups_for_modules: [
# Nx,
# Nx.Constants,
# Nx.Defn,
# Nx.Defn.Kernel,
# Nx.LinAlg,
# Nx.Serving,
Protocols: [
Nx.Container,
Nx.LazyContainer,
Nx.Stream
],
Structs: [
Nx.Batch,
Nx.Heatmap,
Nx.Tensor
],
Backends: [
Nx.Backend,
Nx.BinaryBackend,
Nx.TemplateBackend,
Nx.Type
],
Compilers: [
Nx.Defn.Compiler,
Nx.Defn.Composite,
Nx.Defn.Evaluator,
Nx.Defn.Expr,
Nx.Defn.Token,
Nx.Defn.Tree
]
],
groups_for_extras: [
Exercises: ~r"^guides/exercises/",
Advanced: ~r"^guides/advanced/"
]
]
end
defp before_closing_body_tag(:html) do
"""
"""
end
defp before_closing_body_tag(_), do: ""
end