defmodule HuggingfaceClient.MixProject do use Mix.Project @version "0.1.0" @source_url "https://github.com/huggingface/huggingface_client" def project do [ app: :huggingface_client, version: @version, elixir: "~> 1.18", start_permanent: Mix.env() == :prod, deps: deps(), aliases: aliases(), description: description(), package: package(), docs: docs(), test_coverage: [tool: ExCoveralls], preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ] ] end def application do [ extra_applications: [:logger], mod: {HuggingfaceClient.Application, []} ] end defp deps do [ # HTTP client {:req, "~> 0.5"}, {:finch, "~> 0.18"}, # JSON {:jason, "~> 1.4"}, # Options validation {:nimble_options, "~> 1.0"}, # Telemetry {:telemetry, "~> 1.0"}, # Testing {:bypass, "~> 2.1", only: :test}, {:mox, "~> 1.0", only: :test}, {:excoveralls, "~> 0.18", only: :test}, # Dev {:ex_doc, "~> 0.31", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, # Optional: Phoenix Plug integration {:plug, "~> 1.15", optional: true} ] end defp description do """ Production-grade Elixir client for the full HuggingFace platform: Inference, Hub, Jobs, Buckets, AutoTrain, Endpoints, Datasets, Spaces, Webhooks, Orgs, Papers, Leaderboards, Evaluate, Discussions/PRs, MCP agents, and more. """ end defp package do [ name: "huggingface_client", maintainers: ["HuggingFace Elixir Community"], licenses: ["MIT"], links: %{ "GitHub" => @source_url, "HuggingFace" => "https://huggingface.co", "Documentation" => "https://huggingface.co/docs" }, files: ~w( lib config .formatter.exs mix.exs README.md LICENSE CHANGELOG.md ) ] end defp docs do [ main: "readme", source_url: @source_url, source_ref: "v#{@version}", extras: ["README.md", "CHANGELOG.md"], groups_for_modules: [ "Inference — Core": [~r/HuggingfaceClient\.Inference(?!\.)/], "Inference — Providers": [~r/HuggingfaceClient\.Inference\.Provider/], "Inference — Tasks": [~r/HuggingfaceClient\.Inference\.Task/], "Inference — TGI": [HuggingfaceClient.Inference.TGI], "Hub — Core": [HuggingfaceClient.Hub, HuggingfaceClient.Hub.Client, HuggingfaceClient.Hub.Auth], "Hub — Repositories": [~r/HuggingfaceClient\.Hub\.Repos|Commits|Files|Snapshots|Tags/], "Hub — Models": [HuggingfaceClient.Hub.Models], "Hub — Datasets": [HuggingfaceClient.Hub.Datasets, HuggingfaceClient.Hub.DatasetViewer], "Hub — Spaces": [HuggingfaceClient.Hub.Spaces], "Hub — Discovery": [~r/HuggingfaceClient\.Hub\.Search|Collections|Papers/], "Hub — Collaboration": [~r/HuggingfaceClient\.Hub\.Discussions|Webhooks/], "Hub — Storage": [~r/HuggingfaceClient\.Hub\.Buckets|Cache|FileSystem/], "Hub — Compute": [~r/HuggingfaceClient\.Hub\.Jobs|AutoTrain/], "Hub — Deployment": [HuggingfaceClient.Hub.Endpoints], "Hub — Enterprise": [~r/HuggingfaceClient\.Hub\.Organizations|GatedRepos|OAuth/], "Hub — Evaluation": [~r/HuggingfaceClient\.Hub\.Evaluate|Leaderboards/], Utilities: [ HuggingfaceClient.Config, HuggingfaceClient.Error, HuggingfaceClient.Jinja, HuggingfaceClient.Agent, HuggingfaceClient.Telemetry ] ] ] end defp aliases do [ "test.all": ["test --include integration"], check: ["credo --strict", "dialyzer"] ] end end