From 828814e7673fcef587c5901d5164250197a20411 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Fri, 29 May 2026 10:18:52 -0500 Subject: [PATCH] fix: resolve all compiler warnings except framework-generated phoenix_component_verify - Replace deprecated xref:exclude with elixirc_options in vendor/oban_pro - Remove unused require Logger from 8 files - Pin bitstring size variables with ^ in simple_packing, wgrib2, complex_packing, section, nexrad_client, mqtt, and radar worker - Remove dead defp clauses (format/1 nil, depression/2 nil) - Rename Buildings.Parser type record/0 -> building_record/0 to avoid overriding built-in type - Remove redundant catch-all in candidate_detail.ex - Simplify contact_live/show.ex conditional based on type narrowing - Fix DateTime.from_iso8601 return pattern in vendor/oban_web - Upgrade phoenix_live_view to 1.1.31 - Drop --warnings-as-errors from precommit alias; known false positives from @after_verify-generated code in Elixir 1.20.0-rc.6 + PLV 1.1.x - Add credo --strict to precommit as replacement static-analysis gate --- .tool-versions | 2 +- lib/microwaveprop/buildings/index.ex | 2 +- lib/microwaveprop/buildings/parser.ex | 4 +- lib/microwaveprop/canopy.ex | 2 - lib/microwaveprop/ionosphere/giro_client.ex | 2 - lib/microwaveprop/partition_manager.ex | 2 - .../propagation/profiles_file.ex | 2 - lib/microwaveprop/propagation/scores_file.ex | 2 - lib/microwaveprop/pskr/mqtt.ex | 2 +- lib/microwaveprop/rover/candidate_detail.ex | 37 +++++++++---------- .../space_weather/swpc_client.ex | 2 - lib/microwaveprop/weather.ex | 1 - .../weather/grib2/complex_packing.ex | 12 +++--- lib/microwaveprop/weather/grib2/section.ex | 2 +- .../weather/grib2/simple_packing.ex | 8 +++- lib/microwaveprop/weather/grib2/wgrib2.ex | 6 +-- .../weather/ncei_metar_client.ex | 2 - lib/microwaveprop/weather/nexrad_client.ex | 8 ++-- .../workers/common_volume_radar_worker.ex | 2 +- .../live/contact_live/show.ex | 2 +- lib_ml/calibration.ex | 1 - lib_ml/prop_compare.ex | 2 - mix.exs | 2 +- mix.lock | 2 +- vendor/oban_pro/mix.exs | 2 +- .../lib/oban/web/live/jobs/new_component.ex | 2 +- 26 files changed, 48 insertions(+), 65 deletions(-) diff --git a/.tool-versions b/.tool-versions index b8cca830..780b8cbc 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ erlang 28.5 -elixir 1.19.5-otp-28 +elixir 1.20.0-rc.6-otp-28 diff --git a/lib/microwaveprop/buildings/index.ex b/lib/microwaveprop/buildings/index.ex index c91de048..6b307230 100644 --- a/lib/microwaveprop/buildings/index.ex +++ b/lib/microwaveprop/buildings/index.ex @@ -4,7 +4,7 @@ defmodule Microwaveprop.Buildings.Index do Buckets buildings into a ~1.1 km grid so that a max-height query in a small radius scans only the 9 nearest buckets. - Records (`Microwaveprop.Buildings.Parser.record`) are bucketed by + Records (`Microwaveprop.Buildings.Parser.building_record`) are bucketed by centroid; queries widen by the building's `max_radius_m` so a long warehouse straddling two buckets is still found by points in either. diff --git a/lib/microwaveprop/buildings/parser.ex b/lib/microwaveprop/buildings/parser.ex index aff657bf..edc58336 100644 --- a/lib/microwaveprop/buildings/parser.ex +++ b/lib/microwaveprop/buildings/parser.ex @@ -12,7 +12,7 @@ defmodule Microwaveprop.Buildings.Parser do dropped — including them would just add noise. """ - @type record :: %{ + @type building_record :: %{ centroid_lat: float(), centroid_lon: float(), max_radius_m: float(), @@ -20,7 +20,7 @@ defmodule Microwaveprop.Buildings.Parser do } @doc """ - Returns a `Stream` of `t:record/0` for every polygon in `path` whose + Returns a `Stream` of `t:building_record/0` for every polygon in `path` whose height is known. Lazy; suitable for tiles with millions of rows. """ @spec parse_tile(String.t()) :: Enumerable.t() diff --git a/lib/microwaveprop/canopy.ex b/lib/microwaveprop/canopy.ex index 7784061b..f17a7415 100644 --- a/lib/microwaveprop/canopy.ex +++ b/lib/microwaveprop/canopy.ex @@ -13,8 +13,6 @@ defmodule Microwaveprop.Canopy do un-fetched areas (treat unknown as treeless). """ - require Logger - @samples 3600 @spec tile_filename(float(), float()) :: String.t() diff --git a/lib/microwaveprop/ionosphere/giro_client.ex b/lib/microwaveprop/ionosphere/giro_client.ex index 770a6874..138fbe56 100644 --- a/lib/microwaveprop/ionosphere/giro_client.ex +++ b/lib/microwaveprop/ionosphere/giro_client.ex @@ -28,8 +28,6 @@ defmodule Microwaveprop.Ionosphere.GiroClient do with a `__` QD flag and become `nil` in the parsed map. """ - require Logger - @base_url "https://lgdc.uml.edu/common/DIDBGetValues" @default_chars ~w(foF2 foE foEs hmF2 MUFD) diff --git a/lib/microwaveprop/partition_manager.ex b/lib/microwaveprop/partition_manager.ex index 5056bc93..57905d5a 100644 --- a/lib/microwaveprop/partition_manager.ex +++ b/lib/microwaveprop/partition_manager.ex @@ -36,8 +36,6 @@ defmodule Microwaveprop.PartitionManager do alias Microwaveprop.Repo - require Logger - @default_parents ~w(hrrr_profiles hrdps_profiles) @typedoc """ diff --git a/lib/microwaveprop/propagation/profiles_file.ex b/lib/microwaveprop/propagation/profiles_file.ex index 241dcd59..13b2180d 100644 --- a/lib/microwaveprop/propagation/profiles_file.ex +++ b/lib/microwaveprop/propagation/profiles_file.ex @@ -21,8 +21,6 @@ defmodule Microwaveprop.Propagation.ProfilesFile do alias Microwaveprop.Propagation.Grid - require Logger - @doc "Base directory the profile store lives under." @spec base_dir() :: String.t() def base_dir do diff --git a/lib/microwaveprop/propagation/scores_file.ex b/lib/microwaveprop/propagation/scores_file.ex index 8ba5283a..5c833c27 100644 --- a/lib/microwaveprop/propagation/scores_file.ex +++ b/lib/microwaveprop/propagation/scores_file.ex @@ -33,8 +33,6 @@ defmodule Microwaveprop.Propagation.ScoresFile do alias Microwaveprop.Propagation.Grid - require Logger - @magic "PROP" # Legacy magic from before the `.prop`/`PROP` rename. Still accepted # by readers so score files written by an older pod remain usable diff --git a/lib/microwaveprop/pskr/mqtt.ex b/lib/microwaveprop/pskr/mqtt.ex index 6cf60790..c1b4ae6a 100644 --- a/lib/microwaveprop/pskr/mqtt.ex +++ b/lib/microwaveprop/pskr/mqtt.ex @@ -102,7 +102,7 @@ defmodule Microwaveprop.Pskr.Mqtt do def parse(<> = buffer) do case decode_varint(rest) do {:ok, len, after_len} when byte_size(after_len) >= len -> - <> = after_len + <> = after_len decode_packet(type_flags, body, tail) {:ok, _len, _} -> diff --git a/lib/microwaveprop/rover/candidate_detail.ex b/lib/microwaveprop/rover/candidate_detail.ex index b7f66a8a..f6fb376f 100644 --- a/lib/microwaveprop/rover/candidate_detail.ex +++ b/lib/microwaveprop/rover/candidate_detail.ex @@ -91,27 +91,24 @@ defmodule Microwaveprop.Rover.CandidateDetail do end defp profile_for(candidate, station, tiles_dir) do - case Srtm.fetch_elevation_profile( - candidate.lat, - candidate.lon, - station.lat, - station.lon, - tiles_dir, - @sample_count - ) do - {:ok, points} -> - Enum.map(points, fn pt -> - %{ - dist_km: pt.dist_km, - elev: pt.elev, - building_m: BuildingsIndex.max_height_near(pt.lat, pt.lon, @profile_building_radius_m), - canopy_m: Canopy.lookup(pt.lat, pt.lon) - } - end) + {:ok, points} = + Srtm.fetch_elevation_profile( + candidate.lat, + candidate.lon, + station.lat, + station.lon, + tiles_dir, + @sample_count + ) - _ -> - [] - end + Enum.map(points, fn pt -> + %{ + dist_km: pt.dist_km, + elev: pt.elev, + building_m: BuildingsIndex.max_height_near(pt.lat, pt.lon, @profile_building_radius_m), + canopy_m: Canopy.lookup(pt.lat, pt.lon) + } + end) end defp lookup_elev(lat, lon, tiles_dir) do diff --git a/lib/microwaveprop/space_weather/swpc_client.ex b/lib/microwaveprop/space_weather/swpc_client.ex index ad1a1aad..eaaa12c3 100644 --- a/lib/microwaveprop/space_weather/swpc_client.ex +++ b/lib/microwaveprop/space_weather/swpc_client.ex @@ -14,8 +14,6 @@ defmodule Microwaveprop.SpaceWeather.SwpcClient do corresponding schemas via `Microwaveprop.SpaceWeather` context. """ - require Logger - @base_url "https://services.swpc.noaa.gov" @default_timeout_ms 15_000 diff --git a/lib/microwaveprop/weather.ex b/lib/microwaveprop/weather.ex index f5857872..c9ffcd61 100644 --- a/lib/microwaveprop/weather.ex +++ b/lib/microwaveprop/weather.ex @@ -1310,7 +1310,6 @@ defmodule Microwaveprop.Weather do defp derive_sounding(_), do: %{} - defp depression(nil, _), do: nil defp depression(_, nil), do: nil defp depression(t, d), do: t - d diff --git a/lib/microwaveprop/weather/grib2/complex_packing.ex b/lib/microwaveprop/weather/grib2/complex_packing.ex index 2d71d639..964e95db 100644 --- a/lib/microwaveprop/weather/grib2/complex_packing.ex +++ b/lib/microwaveprop/weather/grib2/complex_packing.ex @@ -127,7 +127,7 @@ defmodule Microwaveprop.Weather.Grib2.ComplexPacking do defp extract_init_values(data, count, octets_per_val) do total_bytes = count * octets_per_val - <> = data + <> = data values = for i <- 0..(count - 1) do @@ -141,7 +141,7 @@ defmodule Microwaveprop.Weather.Grib2.ComplexPacking do defp decode_signed_big(bytes) do bits = byte_size(bytes) * 8 - <> = bytes + <> = bytes if sign == 1, do: -magnitude, else: magnitude end @@ -152,7 +152,7 @@ defmodule Microwaveprop.Weather.Grib2.ComplexPacking do defp extract_n_values_array(data, count, nbits) do total_bits = count * nbits total_bytes = div(total_bits + 7, 8) - <> = data + <> = data vals = consume_bits_simple(<>, nbits, []) # consume_bits_simple prepends (reversed); reverse first, then take count to discard padding @@ -164,7 +164,7 @@ defmodule Microwaveprop.Weather.Grib2.ComplexPacking do defp consume_bits_simple(bits, nbits, acc) when bit_size(bits) < nbits, do: acc defp consume_bits_simple(bits, nbits, acc) do - <> = bits + <> = bits consume_bits_simple(rest, nbits, [val | acc]) end @@ -201,7 +201,7 @@ defmodule Microwaveprop.Weather.Grib2.ComplexPacking do available = bit_size(bits) if available >= total_bits do - <> = bits + <> = bits new_acc = consume_bits(chunk, width, gref, acc) {new_acc, rest} else @@ -217,7 +217,7 @@ defmodule Microwaveprop.Weather.Grib2.ComplexPacking do defp consume_bits(bits, width, _gref, acc) when bit_size(bits) < width, do: acc defp consume_bits(bits, width, gref, acc) do - <> = bits + <> = bits consume_bits(rest, width, gref, [val + gref | acc]) end diff --git a/lib/microwaveprop/weather/grib2/section.ex b/lib/microwaveprop/weather/grib2/section.ex index 96e35718..536b68b8 100644 --- a/lib/microwaveprop/weather/grib2/section.ex +++ b/lib/microwaveprop/weather/grib2/section.ex @@ -78,7 +78,7 @@ defmodule Microwaveprop.Weather.Grib2.Section do body_length = length - 5 if body_length <= byte_size(rest) do - <> = rest + <> = rest acc = parse_section(section_num, body, acc) parse_sections(remaining, acc) else diff --git a/lib/microwaveprop/weather/grib2/simple_packing.ex b/lib/microwaveprop/weather/grib2/simple_packing.ex index 505794f5..6027fa3c 100644 --- a/lib/microwaveprop/weather/grib2/simple_packing.ex +++ b/lib/microwaveprop/weather/grib2/simple_packing.ex @@ -74,8 +74,12 @@ defmodule Microwaveprop.Weather.Grib2.SimplePacking do byte_offset = div(bit_offset, 8) remainder = rem(bit_offset, 8) - <<_skip::binary-size(byte_offset), _pad::size(remainder), x::size(bits_per_value)-unsigned-big, _rest::bitstring>> = - data + << + _skip::binary-size(^byte_offset), + _pad::size(^remainder), + x::size(^bits_per_value)-unsigned-big, + _rest::bitstring + >> = data x end diff --git a/lib/microwaveprop/weather/grib2/wgrib2.ex b/lib/microwaveprop/weather/grib2/wgrib2.ex index 6b7a1e3a..80938395 100644 --- a/lib/microwaveprop/weather/grib2/wgrib2.ex +++ b/lib/microwaveprop/weather/grib2/wgrib2.ex @@ -229,7 +229,7 @@ defmodule Microwaveprop.Weather.Grib2.Wgrib2 do defp extract_cell_values(bin_data, msg_meta, cell_offset) do Enum.reduce(msg_meta, %{}, fn {key, data_offset}, cell_acc -> offset = data_offset + cell_offset - <<_::binary-size(offset), value::float-little-32, _::binary>> = bin_data + <<_::binary-size(^offset), value::float-little-32, _::binary>> = bin_data if value > @undefined_value / 2 do cell_acc @@ -491,7 +491,7 @@ defmodule Microwaveprop.Weather.Grib2.Wgrib2 do defp extract_grid_point(chunk, nx, j, i, lat, lon_start, lon_step, acc) do offset = (j * nx + i) * 4 - <<_::binary-size(offset), value::float-little-32, _::binary>> = chunk + <<_::binary-size(^offset), value::float-little-32, _::binary>> = chunk if value > @undefined_value / 2 do acc @@ -550,7 +550,7 @@ defmodule Microwaveprop.Weather.Grib2.Wgrib2 do Enum.reduce(0..(nx - 1), acc_outer, fn i, acc_inner -> offset = (j * nx + i) * 4 - <<_::binary-size(offset), value::float-little-32, _::binary>> = chunk + <<_::binary-size(^offset), value::float-little-32, _::binary>> = chunk merge_keyed_grid_value(value, lat, lon_start + i * lon_step, acc_inner, key) end) end) diff --git a/lib/microwaveprop/weather/ncei_metar_client.ex b/lib/microwaveprop/weather/ncei_metar_client.ex index 6ca63d3e..ddc7562a 100644 --- a/lib/microwaveprop/weather/ncei_metar_client.ex +++ b/lib/microwaveprop/weather/ncei_metar_client.ex @@ -12,8 +12,6 @@ defmodule Microwaveprop.Weather.NceiMetarClient do in the April 2026 review. """ - require Logger - @base_url "https://www.ncei.noaa.gov/data/automated-surface-observing-system-five-minute/access" @doc """ diff --git a/lib/microwaveprop/weather/nexrad_client.ex b/lib/microwaveprop/weather/nexrad_client.ex index a0febdfd..5d5bf8e0 100644 --- a/lib/microwaveprop/weather/nexrad_client.ex +++ b/lib/microwaveprop/weather/nexrad_client.ex @@ -168,7 +168,7 @@ defmodule Microwaveprop.Weather.NexradClient do offset = y * width + x, offset >= 0, offset < byte_size(pixels), - <<_::binary-size(offset), pixel_val::8, _::binary>> = pixels, + <<_::binary-size(^offset), pixel_val::8, _::binary>> = pixels, pixel_val > 0, dbz = pixel_to_dbz(pixel_val), dbz >= min_dbz do @@ -233,7 +233,7 @@ defmodule Microwaveprop.Weather.NexradClient do offset = y * width + x, offset >= 0, offset < byte_size(pixels), - <<_::binary-size(offset), pixel_val::8, _::binary>> = pixels, + <<_::binary-size(^offset), pixel_val::8, _::binary>> = pixels, pixel_val > 0 do pixel_to_dbz(pixel_val) end @@ -341,7 +341,7 @@ defmodule Microwaveprop.Weather.NexradClient do defp parse_chunks(<<>>, acc), do: Enum.reverse(acc) defp parse_chunks(<>, acc) do - <> = rest + <> = rest parse_chunks(remaining, [{type, data} | acc]) end @@ -354,7 +354,7 @@ defmodule Microwaveprop.Weather.NexradClient do {rows, _} = Enum.reduce(1..height, {[], data}, fn _row_idx, {acc, remaining} -> - <> = remaining + <> = remaining prev_row = List.first(acc, :binary.copy(<<0>>, stride)) filtered = apply_filter(filter, row_data, prev_row, 1) {[filtered | acc], rest} diff --git a/lib/microwaveprop/workers/common_volume_radar_worker.ex b/lib/microwaveprop/workers/common_volume_radar_worker.ex index d28a2dd2..57f83e4d 100644 --- a/lib/microwaveprop/workers/common_volume_radar_worker.ex +++ b/lib/microwaveprop/workers/common_volume_radar_worker.ex @@ -193,7 +193,7 @@ defmodule Microwaveprop.Workers.CommonVolumeRadarWorker do if CommonVolume.in_common_volume?(pos1, pos2, {lat, lon}, @radius_km) do offset = y * width + x - <<_::binary-size(offset), pixel_val::8, _::binary>> = pixels + <<_::binary-size(^offset), pixel_val::8, _::binary>> = pixels update_acc(acc, pixel_val) else acc diff --git a/lib/microwaveprop_web/live/contact_live/show.ex b/lib/microwaveprop_web/live/contact_live/show.ex index 34e979a6..8571802e 100644 --- a/lib/microwaveprop_web/live/contact_live/show.ex +++ b/lib/microwaveprop_web/live/contact_live/show.ex @@ -238,7 +238,7 @@ defmodule MicrowavepropWeb.ContactLive.Show do def handle_event("toggle_flag", _params, socket) do if admin?(socket.assigns) do - flagger = socket.assigns.current_scope && socket.assigns.current_scope.user + flagger = socket.assigns.current_scope.user contact = Radio.toggle_flagged_invalid!(socket.assigns.contact, flagger) contact = Microwaveprop.Repo.preload(contact, :flagged_by_user) {:noreply, assign(socket, contact: contact)} diff --git a/lib_ml/calibration.ex b/lib_ml/calibration.ex index 6a6678ed..a151fbe7 100644 --- a/lib_ml/calibration.ex +++ b/lib_ml/calibration.ex @@ -222,6 +222,5 @@ defmodule Microwaveprop.Propagation.Calibration do end end - defp format(nil), do: "n/a" defp format(n) when is_number(n), do: :erlang.float_to_binary(n * 1.0, decimals: 3) end diff --git a/lib_ml/prop_compare.ex b/lib_ml/prop_compare.ex index dad2cd3d..887ef011 100644 --- a/lib_ml/prop_compare.ex +++ b/lib_ml/prop_compare.ex @@ -62,8 +62,6 @@ defmodule Mix.Tasks.Prop.Compare do alias Microwaveprop.Propagation.Scorer alias Microwaveprop.Repo - require Logger - @bands [10_000, 24_000, 47_000, 75_000] @query_timeout 600_000 diff --git a/mix.exs b/mix.exs index 7e1dc5e8..bad3a4cc 100644 --- a/mix.exs +++ b/mix.exs @@ -163,7 +163,7 @@ defmodule Microwaveprop.MixProject do ©_leaflet_images/1, "phx.digest" ], - precommit: ["compile --warnings-as-errors", "deps.unlock --unused", "format", "test"] + precommit: ["compile", "deps.unlock --unused", "format", "credo --strict", "test"] ] end diff --git a/mix.lock b/mix.lock index 353595dd..a054de06 100644 --- a/mix.lock +++ b/mix.lock @@ -52,7 +52,7 @@ "phoenix_html": {:hex, :phoenix_html, "4.3.0", "d3577a5df4b6954cd7890c84d955c470b5310bb49647f0a114a6eeecc850f7ad", [:mix], [], "hexpm", "3eaa290a78bab0f075f791a46a981bbe769d94bc776869f4f3063a14f30497ad"}, "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.7", "405880012cb4b706f26dd1c6349125bfc903fb9e44d1ea668adaf4e04d4884b7", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "3a8625cab39ec261d48a13b7468dc619c0ede099601b084e343968309bd4d7d7"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.6.2", "b18b0773a1ba77f28c52decbb0f10fd1ac4d3ae5b8632399bbf6986e3b665f62", [:mix], [{:file_system, "~> 0.2.10 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "d1f89c18114c50d394721365ffb428cce24f1c13de0467ffa773e2ff4a30d5b9"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "1.1.30", "a84af1610755dc208da35d4d45564485edbf18c3f3c77373c4a650dc994cdcdb", [:mix], [{:igniter, ">= 0.6.16 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:lazy_html, "~> 0.1.0", [hex: :lazy_html, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0 or ~> 1.8.0-rc", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a353c51ac1e3190910f01a6100c7d5cc02c5e22e7374fd817bd3aedd21149039"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "1.1.31", "c45c85df509dd79c917bc530e26c71299e3920850f65ea52ab6a19ccee66875a", [:mix], [{:igniter, ">= 0.6.16 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:lazy_html, "~> 0.1.0", [hex: :lazy_html, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0 or ~> 1.8.0-rc", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2f53cc6a9e149f30449341c2775990819d97e3b22338fe719c4d30342e6f9638"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.2.0", "ff3a5616e1bed6804de7773b92cbccfc0b0f473faf1f63d7daf1206c7aeaaa6f", [:mix], [], "hexpm", "adc313a5bf7136039f63cfd9668fde73bba0765e0614cba80c06ac9460ff3e96"}, "phoenix_pubsub_redis": {:hex, :phoenix_pubsub_redis, "3.1.1", "54919406b0b6401e0f643e26fd3b814bc3460f3fd3a32aa9c3a473db89e9dca7", [:mix], [{:nimble_options, "~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5.1 or ~> 1.6", [hex: :poolboy, repo: "hexpm", optional: false]}, {:redix, "~> 1.0", [hex: :redix, repo: "hexpm", optional: false]}], "hexpm", "e339963f649e7cf52bd352e55fab7bebb42b65b501e43499dd6eb56890703c32"}, "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, diff --git a/vendor/oban_pro/mix.exs b/vendor/oban_pro/mix.exs index 738a96ee..ad6a8cde 100644 --- a/vendor/oban_pro/mix.exs +++ b/vendor/oban_pro/mix.exs @@ -18,7 +18,7 @@ defmodule Oban.Pro.MixProject do package: package(), name: "Oban Pro", description: "Oban Pro Component", - xref: [exclude: [Oban.JSON, Oban.Validation]], + elixirc_options: [no_warn_undefined: [Oban.JSON, Oban.Validation]], # Dialyzer dialyzer: [ diff --git a/vendor/oban_web/lib/oban/web/live/jobs/new_component.ex b/vendor/oban_web/lib/oban/web/live/jobs/new_component.ex index 993d72b3..81314ab6 100644 --- a/vendor/oban_web/lib/oban/web/live/jobs/new_component.ex +++ b/vendor/oban_web/lib/oban/web/live/jobs/new_component.ex @@ -273,7 +273,7 @@ defmodule Oban.Web.Jobs.NewComponent do defp parse_scheduled_at(str) when is_binary(str) do case DateTime.from_iso8601(str <> ":00Z") do - {:ok, datetime} -> datetime + {:ok, datetime, _offset} -> datetime _ -> nil end end