Resolving Hex dependencies... Resolution completed in 0.155s Unchanged: arke 0.6.0 arke_auth 0.4.4 bcrypt_elixir 1.1.1 calendar 1.0.0 certifi 2.15.0 circular_buffer 1.0.0 combine 0.10.0 comeonin 4.1.2 elixir_make 0.9.0 erlsom 1.5.2 expo 1.1.1 finch 0.21.0 gettext 0.26.2 google_api_storage 0.34.0 google_gax 0.4.1 goth 1.3.1 guardian 2.2.4 hackney 1.25.0 hpax 1.0.3 httpoison 2.3.0 idna 6.1.1 interactive_cmd 0.1.4 jason 1.4.4 jose 1.11.12 libcluster 3.5.0 metrics 1.0.1 mime 1.6.0 mimerl 1.5.0 mint 1.7.1 nerves 1.14.0 nerves_discovery 0.1.2 nerves_logging 0.2.4 nerves_runtime 0.13.12 nerves_system_bbb 2.29.3 nerves_system_br 1.33.5 nerves_system_grisp2 0.17.3 nerves_system_mangopi_mq_pro 0.15.3 nerves_system_osd32mp1 0.24.3 nerves_system_qemu_aarch64 0.3.3 nerves_system_rpi 2.0.2 nerves_system_rpi0 2.0.2 nerves_system_rpi0_2 2.0.2 nerves_system_rpi2 2.0.2 nerves_system_rpi3 2.0.2 nerves_system_rpi4 2.0.2 nerves_system_rpi5 2.0.2 nerves_system_x86_64 1.33.3 nerves_toolchain_aarch64_nerves_linux_gnu 13.2.0 nerves_toolchain_armv6_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_armv7_nerves_linux_gnueabihf 13.2.0 nerves_toolchain_ctng 1.10.0 nerves_toolchain_riscv64_nerves_linux_gnu 13.2.0 nerves_toolchain_x86_64_nerves_linux_musl 13.2.0 nerves_uevent 0.1.5 nimble_options 1.1.1 nimble_pool 1.1.0 parse_trans 3.4.1 poison 4.0.1 property_table 0.3.3 ring_logger 0.11.5 shoehorn 0.9.3 ssl_verify_fun 1.1.7 tablet 0.3.2 telemetry 1.4.1 tesla 1.17.0 timex 3.7.13 toolshed 0.4.2 typed_struct 0.2.1 tzdata 1.1.3 uboot_env 1.0.2 unicode_util_compat 0.7.1 uuid 1.1.8 xlsxir 1.6.4 All dependencies have been fetched ==> typed_struct Compiling 2 files (.ex) Generated typed_struct app ==> combine Compiling 6 files (.ex) Generated combine app ==> mime Compiling 2 files (.ex) Generated mime app ==> circular_buffer Compiling 1 file (.ex) Generated circular_buffer app ==> nimble_options Compiling 3 files (.ex) Generated nimble_options app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling erlsom ==> jason Compiling 10 files (.ex) Generated jason app ==> poison Compiling 4 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 127 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:127:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 127 │ for {char, seq} <- Enum.zip('"\\\n\t\r\f\b', '"\\ntrfb') do │ ~ │ └─ lib/poison/encoder.ex:127:48 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 174 │ when char <= 0x1F or char in '"\\' do │ ~ │ └─ lib/poison/encoder.ex:174:37 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 94 │ when char in '-0123456789' do │ ~ │ └─ lib/poison/parser.ex:94:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 189 │ when char in '123456789' do │ ~ │ └─ lib/poison/parser.ex:189:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 205 │ defp number_exp(<> <> rest, frac, pos, acc) when e in 'eE' do │ ~ │ └─ lib/poison/parser.ex:205:60 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 238 │ when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:238:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 246 │ defp number_digits_count(<> <> rest, acc) when char in '0123456789' do │ ~ │ └─ lib/poison/parser.ex:246:64 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 270 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:270:31 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 270 │ for {seq, char} <- Enum.zip('"\\ntr/fb', '"\\\n\t\r/\f\b') do │ ~ │ └─ lib/poison/parser.ex:270:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:39 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 277 │ when a1 in 'dD' and a2 in 'dD' and b1 in '89abAB' and │ ~ │ └─ lib/poison/parser.ex:277:54 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 334 │ defp skip_whitespace(<> <> rest, pos) when char in '\s\n\t\r' do │ ~ │ └─ lib/poison/parser.ex:334:60 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 42 │ if Application.get_env(:poison, :native) do │ ~ │ └─ lib/poison/parser.ex:42:18: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 46 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/parser.ex:46: Poison.Parser (module) warning: use Bitwise is deprecated. import Bitwise instead │ 117 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/poison/encoder.ex:117: Poison.Encoder.BitString (module) Generated poison app ==> hpax Compiling 4 files (.ex) Generated hpax app ==> mint Compiling 1 file (.erl) Compiling 20 files (.ex) Generated mint app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling mimerl ==> jose Compiling 113 files (.erl) Compiling 8 files (.ex) Generated jose app ==> ssl_verify_fun Compiling 7 files (.erl) Generated ssl_verify_fun app ==> tablet Compiling 2 files (.ex) Generated tablet app ==> elixir_make Compiling 8 files (.ex) Generated elixir_make app ==> nerves_logging CC kmsg_tailer.o LD kmsg_tailer Not crosscompiling. To test locally, the port binary needs extra permissions. Set SUDO=sudo to set permissions. The default is to skip this step. SUDO_ASKPASS=/usr/bin/ssh-askpass SUDO=true Compiling 5 files (.ex) Generated nerves_logging app ==> bcrypt_elixir make: Nothing to be done for 'all'. Compiling 3 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 57 │ path = :filename.join(:code.priv_dir(:bcrypt_elixir), 'bcrypt_nif') │ ~ │ └─ lib/bcrypt/base.ex:57:59 warning: use Bitwise is deprecated. import Bitwise instead │ 6 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/bcrypt/base.ex:6: Bcrypt.Base (module) Generated bcrypt_elixir app ==> comeonin Compiling 2 files (.ex) Generated comeonin app ==> xlsxir Compiling 14 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 502 │ "#{column_from_index(col_index + 1, '')}#{line}" │ ~ │ └─ lib/xlsxir.ex:502:41 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 20 │ def from_charlist('0'), do: {0, 0, 0} │ ~ │ └─ lib/xlsxir/convert_datetime.ex:20:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 25 │ def sax_event_handler({:startElement,_,'si',_,_}, %__MODULE__{tid: tid, index: index}), do: %__MODULE__{tid: tid, index: index} │ ~ │ └─ lib/xlsxir/parse_string.ex:25:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 27 │ def sax_event_handler({:startElement,_,'family',_,_}, state) do │ ~ │ └─ lib/xlsxir/parse_string.ex:27:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 37 │ def sax_event_handler({:endElement,_,'si',_}, │ ~ │ └─ lib/xlsxir/parse_string.ex:37:40 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 56 │ def sax_event_handler({:startElement, _, 'cellXfs', _, _}, state) do │ ~ │ └─ lib/xlsxir/parse_style.ex:56:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 60 │ def sax_event_handler({:endElement, _, 'cellXfs', _}, state) do │ ~ │ └─ lib/xlsxir/parse_style.ex:60:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 65 │ {:startElement, _, 'xf', _, xml_attr}, │ ~ │ └─ lib/xlsxir/parse_style.ex:65:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 72 │ {:attribute, 'numFmtId', _, _, _} -> true │ ~ │ └─ lib/xlsxir/parse_style.ex:72:26 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 84 │ {:startElement, _, 'numFmt', _, xml_attr}, │ ~ │ └─ lib/xlsxir/parse_style.ex:84:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 90 │ {:attribute, 'numFmtId', _, _, id} -> Map.put(acc, :id, id) │ ~ │ └─ lib/xlsxir/parse_style.ex:90:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 91 │ {:attribute, 'formatCode', _, _, cd} -> Map.put(acc, :cd, cd) │ ~ │ └─ lib/xlsxir/parse_style.ex:91:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 109 │ i when i in @date -> :ets.insert(tid, {index + acc, 'd'}) │ ~ │ └─ lib/xlsxir/parse_style.ex:109:63 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 126 │ String.match?(to_string(v), ~r/[dhmsy]/i) -> Map.put_new(acc, k, 'd') │ ~ │ └─ lib/xlsxir/parse_style.ex:126:74 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 15 │ def sax_event_handler({:startElement, _, 'sheet', _, xml_attrs}, state) do │ ~ │ └─ lib/xlsxir/parse_workbook.ex:15:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 19 │ {:attribute, 'name', _, _, name} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:19:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 22 │ {:attribute, 'sheetId', _, _, sheet_id} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:22:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 26 │ {:attribute, 'id', _, _, rid} -> │ ~ │ └─ lib/xlsxir/parse_workbook.ex:26:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 58 │ {:startElement, _, 'row', _, _}, │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:58:28 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 66 │ def sax_event_handler({:startElement, _, 'c', _, xml_attr}, state, %{styles: styles_tid}, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:66:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 70 │ {:attribute, 'r', _, _, ref} -> {:r, ref} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:70:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 71 │ {:attribute, 's', _, _, style} -> {:s, find_styles(styles_tid, List.to_integer(style))} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:71:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 72 │ {:attribute, 't', _, _, type} -> {:t, type} │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:72:24 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 89 │ def sax_event_handler({:startElement, _, 'f', _, _}, state, _, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:89:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 93 │ def sax_event_handler({:startElement, _, 'v', _, _}, state, _, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:93:44 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 105 │ def sax_event_handler({:endElement, _, 'c', _}, %__MODULE__{row: row} = state, excel, _) do │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:105:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 120 │ {:endElement, _, 'row', _}, │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:120:26 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 146 │ ['e', _, e] -> List.to_string(e) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:146:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 148 │ ['s', _, i] -> find_string(strings_tid, List.to_integer(i)) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:148:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 151 │ ['n', nil, n] -> convert_char_number(n) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:151:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 153 │ [nil, 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:153:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 154 │ ['n', 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:154:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 154 │ ['n', 'd', d] -> convert_date_or_time(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:154:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ ['d', 'd', d] -> convert_iso_date(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:155:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 155 │ ['d', 'd', d] -> convert_iso_date(d) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:155:13 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 157 │ ['str', _, s] -> List.to_string(s) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:157:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 159 │ ['b', _, s] -> s == '1' │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:159:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 159 │ ['b', _, s] -> s == '1' │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:159:27 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 161 │ ['inlineStr', _, s] -> List.to_string(s) │ ~ │ └─ lib/xlsxir/parse_worksheet.ex:161:8 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 37 │ def sax_event_handler({:endElement, _, 'row', _}, state, _excel) do │ ~ │ └─ lib/xlsxir/stream_worksheet.ex:37:42 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 104 │ sheet = 'xl/worksheets/sheet#{index + 1}.xml' │ ~ │ └─ lib/xlsxir/unzip.ex:104:15 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 218 │ |> Enum.map(fn worksheet_index -> 'xl/worksheets/sheet#{worksheet_index + 1}.xml' end) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:218:39 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:21 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:38 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 219 │ |> Enum.concat(['xl/styles.xml', 'xl/sharedStrings.xml', 'xl/workbook.xml']) │ ~ │ └─ lib/xlsxir/xlsx_file.ex:219:62 warning: a struct for Xlsxir.ParseWorkbook is expected on struct update: %Xlsxir.ParseWorkbook{state | sheets: [sheet | state.sheets]} but got type: dynamic() where "state" was given the type: # type: dynamic() # from: lib/xlsxir/parse_workbook.ex:15:68 state when defining the variable "state", you must also pattern match on "%Xlsxir.ParseWorkbook{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 36 │ %__MODULE__{state | sheets: [sheet | state.sheets]} │ ~ │ └─ lib/xlsxir/parse_workbook.ex:36:5: Xlsxir.ParseWorkbook.sax_event_handler/2 warning: Supervisor.Spec.worker/2 is deprecated. Use the new child specifications outlined in the Supervisor module instead │ 10 │ worker(Xlsxir.StateManager, []) │ ~ │ └─ lib/xlsxir.ex:10:7: Xlsxir.start/2 Generated xlsxir app ==> nerves_discovery Compiling 5 files (.ex) Generated nerves_discovery app ==> ring_logger Compiling 7 files (.ex) Generated ring_logger app ==> shoehorn Compiling 8 files (.ex) Generated shoehorn app ==> interactive_cmd Compiling 1 file (.ex) Generated interactive_cmd app ==> nerves HOST_CC port.o HOST_LD port Compiling 51 files (.ex) Generated nerves app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling unicode_util_compat ===> Analyzing applications... ===> Compiling idna ===> Analyzing applications... ===> Compiling telemetry ==> libcluster Compiling 13 files (.ex) Generated libcluster app ==> expo Compiling 2 files (.erl) Compiling 22 files (.ex) Generated expo app ==> gettext Compiling 18 files (.ex) Generated gettext app ==> guardian Compiling 25 files (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/atom_encoding.ex:7: Guardian.Permissions.AtomEncoding (module) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/bitwise_encoding.ex:7: Guardian.Permissions.BitwiseEncoding (module) warning: use Bitwise is deprecated. import Bitwise instead │ 7 │ use Bitwise │ ~~~~~~~~~~~ │ └─ lib/guardian/permissions/text_encoding.ex:7: Guardian.Permissions.TextEncoding (module) warning: Guardian.Plug.current_claims/2 is undefined (module Guardian.Plug is not available or is yet to be defined) │ 31 │ claims: Guardian.Plug.current_claims(conn, opts), │ ~ │ └─ lib/guardian/permissions/plug.ex:31:29: Guardian.Permissions.Plug.call/2 warning: Guardian.Plug.Pipeline.fetch_error_handler!/2 is undefined (module Guardian.Plug.Pipeline is not available or is yet to be defined) │ 33 │ handler: Pipeline.fetch_error_handler!(conn, opts), │ ~ │ └─ lib/guardian/permissions/plug.ex:33:25: Guardian.Permissions.Plug.call/2 warning: Guardian.Plug.Pipeline.fetch_module!/2 is undefined (module Guardian.Plug.Pipeline is not available or is yet to be defined) │ 34 │ impl: Pipeline.fetch_module!(conn, opts), │ ~ │ └─ lib/guardian/permissions/plug.ex:34:22: Guardian.Permissions.Plug.call/2 Generated guardian app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling certifi ===> Analyzing applications... ===> Compiling parse_trans ==> uboot_env Compiling 5 files (.ex) Generated uboot_env app ==> nimble_pool Compiling 2 files (.ex) Generated nimble_pool app ==> finch Compiling 14 files (.ex) Generated finch app ==> goth Compiling 7 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 234 │ Logger.warn("Setting http_client: mod | {mod, opts} is deprecated in favour of http_client: fun | {fun, opts}") │ ~ │ └─ lib/goth.ex:234:12: Goth.start_http_client/1 Generated goth app ==> nerves_compatibility_test ===> Analyzing applications... ===> Compiling metrics ===> Analyzing applications... ===> Compiling hackney ==> tzdata Compiling 17 files (.ex) Generated tzdata app ==> calendar Compiling 18 files (.ex) warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 149 │ defp string_for_conv_spec(dt, :l, _) do dt=to_time(dt);"#{dt.hour|>x24h_to_12_h|>elem(0)}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:149:105 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 158 │ defp string_for_conv_spec(dt, :e, _) do dt=to_date(dt);"#{dt.day}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:158:81 warning: using single-quoted strings to represent charlists is deprecated. Use ~c"" if you indeed want a charlist or use "" instead. You may run "mix format --migrate" to change all single-quoted strings to use the ~c sigil and fix this warning. │ 161 │ defp string_for_conv_spec(dt, :k, _) do dt=to_time(dt);"#{dt.hour}"|>pad(2, hd ' ') end │ ~ │ └─ lib/calendar/strftime.ex:161:82 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 167 │ defp string_for_conv_spec(dt, :x, lang), do: strftime! dt, date_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:167 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 168 │ defp string_for_conv_spec(dt, :X, lang), do: strftime! dt, time_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:168 warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords. This error happens when you have function calls without parentheses inside keywords. For example: function(arg, one: nested_call a, b, c) function(arg, one: if expr, do: :this, else: :that) In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses: function(arg, one: if(expr, do: :this, else: :that)) function(arg, one: nested_call(a, b, c)) Ambiguity found at: │ 169 │ defp string_for_conv_spec(dt, :c, lang), do: strftime! dt, date_time_format_for_lang(lang), lang │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/calendar/strftime.ex:169 warning: a struct for DateTime is expected on struct update: %DateTime{second_before | second: 60} but got type: dynamic() where "second_before" was given the type: # type: dynamic() # from: lib/calendar/date_time.ex:92:19 second_before = shift_zone!( %DateTime{...}, timezone ) when defining the variable "second_before", you must also pattern match on "%DateTime{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 94 │ %DateTime{second_before | second: 60} │ ~ │ └─ lib/calendar/date_time.ex:94:5: Calendar.DateTime.shift_zone!/2 warning: a struct for DateTime is expected on struct update: %DateTime{result | microsecond: {elem(result.microsecond, 0), 3}} but got type: dynamic() where "result" was given the type: # type: dynamic() # from: lib/calendar/date_time/parse.ex:177:12 result = unix!(millisec / 1000.0) when defining the variable "result", you must also pattern match on "%DateTime{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 178 │ %DateTime{result| microsecond: {elem(result.microsecond, 0), 3}} # change usec precision to 3 │ ~ │ └─ lib/calendar/date_time/parse.ex:178:5: Calendar.DateTime.Parse.js_ms!/1 Generated calendar app ==> timex Compiling 62 files (.ex) warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | std_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:119:33 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 121 │ parse_tz(:std_offset, rest, %TZ{rule | std_abbr: abbr}) │ ~ │ └─ lib/parse/posix/parser.ex:121:35: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | std_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:125:35 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 127 │ parse_tz(:dst_abbr, rest, %TZ{rule | std_offset: offset}) │ ~ │ └─ lib/parse/posix/parser.ex:127:33: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:141:33 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 143 │ rule = %TZ{rule | dst_abbr: abbr} do │ ~ │ └─ lib/parse/posix/parser.ex:143:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:160:35 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 162 │ rule = %TZ{rule | dst_offset: offset} do │ ~ │ └─ lib/parse/posix/parser.ex:162:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.PosixTimezone is expected on struct update: %Timex.PosixTimezone{rule | dst_start: dst_start, dst_end: dst_end} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/posix/parser.ex:185:36 rule when defining the variable "rule", you must also pattern match on "%Timex.PosixTimezone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 190 │ {:ok, %TZ{rule | dst_start: dst_start, dst_end: dst_end}, rest} │ ~ │ └─ lib/parse/posix/parser.ex:190:17: Timex.Parse.Timezones.Posix.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions, leaps: leaps} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:156:28 {:ok, zone, rest} <- parse_content(1, data, %Timex.Parse.ZoneInfo.Parser.Zone{..., version: 1}) when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 159 │ {:ok, %Zone{zone | transitions: transitions, leaps: leaps}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:159:13: Timex.Parse.ZoneInfo.Parser.parse_versioned_content/2 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: times} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:270:92 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 272 │ parse_transition_info(version, rest, header, %Zone{zone | transitions: times}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:272:50: Timex.Parse.ZoneInfo.Parser.parse_transition_times/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | leaps: leaps} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:330:79 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 344 │ parse_flags(version, rest, header, %Zone{zone | leaps: leaps}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:344:40: Timex.Parse.ZoneInfo.Parser.parse_leap_seconds/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:348:90 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 362 │ parse_posixtz_string(version, rest, %Zone{zone | transitions: transitions}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:362:43: Timex.Parse.ZoneInfo.Parser.parse_flags/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | transitions: transitions} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:348:90 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 364 │ {:ok, %Zone{zone | transitions: transitions}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:364:13: Timex.Parse.ZoneInfo.Parser.parse_flags/4 warning: a struct for Timex.Parse.ZoneInfo.Parser.Zone is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Zone{zone | rule: rule} but got type: dynamic() where "zone" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:369:62 zone when defining the variable "zone", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Zone{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 372 │ {:ok, %Zone{zone | rule: rule}, format_rest <> rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:372:13: Timex.Parse.ZoneInfo.Parser.parse_posixtz_string/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | std_abbr: abbr, dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:383:33 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 385 │ parse_tz(:std_offset, rest, %Rule{rule | std_abbr: abbr, dst_abbr: abbr}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:385:35: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | std_offset: offset, dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:389:35 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 391 │ parse_tz(:dst_abbr, rest, %Rule{rule | std_offset: offset, dst_offset: offset}) │ ~ │ └─ lib/parse/zoneinfo/parser.ex:391:33: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | dst_abbr: abbr} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:405:33 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 407 │ rule = %Rule{rule | dst_abbr: abbr} do │ ~ │ └─ lib/parse/zoneinfo/parser.ex:407:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | dst_offset: offset} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:424:35 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 426 │ rule = %Rule{rule | dst_offset: offset} do │ ~ │ └─ lib/parse/zoneinfo/parser.ex:426:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 warning: a struct for Timex.Parse.ZoneInfo.Parser.Rule is expected on struct update: %Timex.Parse.ZoneInfo.Parser.Rule{rule | start_time: start_time, end_time: end_time} but got type: dynamic() where "rule" was given the type: # type: dynamic() # from: lib/parse/zoneinfo/parser.ex:449:36 rule when defining the variable "rule", you must also pattern match on "%Timex.Parse.ZoneInfo.Parser.Rule{}". hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of: user = some_function() %User{user | name: "John Doe"} it is enough to write: %User{} = user = some_function() %{user | name: "John Doe"} typing violation found at: │ 454 │ {:ok, %Rule{rule | start_time: start_time, end_time: end_time}, rest} │ ~ │ └─ lib/parse/zoneinfo/parser.ex:454:17: Timex.Parse.ZoneInfo.Parser.parse_tz/3 Generated timex app ==> tesla Compiling 41 files (.ex) Generated tesla app ==> google_gax Compiling 5 files (.ex) Generated google_gax app ==> google_api_storage Compiling 54 files (.ex) warning: `use Tesla.Builder` and `use Tesla` in GoogleApi.Storage.V1.Connection are soft-deprecated. It will be removed in future major version in favor of Runtime Configuration instead. Please share your feedback at https://github.com/elixir-tesla/tesla/discussions/732 If you can turn off this warning, add the following to your config.exs: ```elixir config :tesla, disable_deprecated_builder_warning: true ``` (tesla 1.17.0) lib/tesla/builder.ex:12: Tesla.Builder."MACRO-__using__"/2 (elixir 1.19.4) src/elixir_dispatch.erl:257: :elixir_dispatch.expand_macro_fun/7 (elixir 1.19.4) src/elixir_dispatch.erl:149: :elixir_dispatch.dispatch_require/7 (elixir 1.19.4) src/elixir_expand.erl:636: :elixir_expand.expand_block/5 (elixir 1.19.4) src/elixir_expand.erl:52: :elixir_expand.expand/3 (elixir 1.19.4) src/elixir_dispatch.erl:271: :elixir_dispatch.expand_quoted/7 Generated google_api_storage app ==> property_table Compiling 8 files (.ex) Generated property_table app ==> nerves_uevent CC uevent.o LD uevent Not crosscompiling. To test locally, the port binary needs extra permissions. Set SUDO=sudo to set permissions. The default is to skip this step. SUDO_ASKPASS=/usr/bin/ssh-askpass SUDO=true Compiling 5 files (.ex) Generated nerves_uevent app ==> nerves_runtime Compiling 14 files (.ex) Generated nerves_runtime app ==> toolshed Compiling 5 files (.ex) Generated toolshed app ==> httpoison Compiling 3 files (.ex) Generated httpoison app ==> uuid Compiling 1 file (.ex) warning: use Bitwise is deprecated. import Bitwise instead │ 2 │ use Bitwise, only_operators: true │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/uuid.ex:2: UUID (module) Generated uuid app ==> arke Compiling 33 files (.ex) warning: function random_string/0 is unused │ 48 │ defp random_string() do │ ~ │ └─ lib/arke/application.ex:48:8: Arke.Application (module) warning: function postfix/0 is unused │ 44 │ defp postfix() do │ ~ │ └─ lib/arke/application.ex:44:8: Arke.Application (module) warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.FileManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/file_manager.ex:15: Arke.Boundary.FileManager (module) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager.handle_info/2 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.ParameterManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:15: Arke.Boundary.ParameterManager (module) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager.handle_info/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:27:37: Arke.Boundary.GroupManager.before_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~ │ └─ lib/arke/boundary/group_manager.ex:27:27: Arke.Boundary.GroupManager.before_create/2 warning: variable "unit_metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:27:53: Arke.Boundary.GroupManager.before_create/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 36 │ {:error, msg} -> new_arke_list │ ~ │ └─ lib/arke/boundary/group_manager.ex:36:18: Arke.Boundary.GroupManager.get_arke_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 32 │ def get_arke_list(%{data: data, metadata: %{project: project}} = unit) do │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:32:68: Arke.Boundary.GroupManager.get_arke_list/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 46 │ def get_arke(%{id: id} = unit, project, arke_id), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:46:28: Arke.Boundary.GroupManager.get_arke/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ def get_arke(%{id: id, metadata: %{project: project}} = unit, arke_id), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:49:59: Arke.Boundary.GroupManager.get_arke/2 warning: clauses with the same name should be grouped together, "def get_arke/3" was previously defined (lib/arke/boundary/group_manager.ex:46) │ 52 │ def get_arke(unit_id, project, arke_id) when is_binary(arke_id), │ ~ │ └─ lib/arke/boundary/group_manager.ex:52:7 warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager.handle_info/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:26:37: Arke.Boundary.ArkeManager.before_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:26:27: Arke.Boundary.ArkeManager.before_create/2 warning: variable "unit_metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 26 │ def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do │ ~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:26:53: Arke.Boundary.ArkeManager.before_create/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 40 │ {:error, msg} -> new_parameters │ ~ │ └─ lib/arke/boundary/arke_manager.ex:40:18: Arke.Boundary.ArkeManager.get_parameters/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 32 │ def get_parameters(%{data: data, metadata: %{project: project}} = unit) do │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:32:69: Arke.Boundary.ArkeManager.get_parameters/1 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 46 │ def get_parameter(%{id: id} = unit, project, parameter_id), │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:46:33: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ def get_parameter(%{id: id, metadata: %{project: project}} = unit, parameter_id), │ ~~~~ │ └─ lib/arke/boundary/arke_manager.ex:49:64: Arke.Boundary.ArkeManager.get_parameter/2 warning: clauses with the same name should be grouped together, "def get_parameter/3" was previously defined (lib/arke/boundary/arke_manager.ex:46) │ 52 │ def get_parameter(unit_id, project, parameter_id) when is_binary(parameter_id), │ ~ │ └─ lib/arke/boundary/arke_manager.ex:52:7 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ {:error, msg} -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:57:16: Arke.Boundary.ArkeManager.get_parameter/3 warning: the underscored variable "__module__" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore │ 50 │ __module__: __module__, │ ~ │ └─ lib/arke/core/unit.ex:50:23: Arke.Core.Unit.new/9 warning: the underscored variable "__module__" is used after being set. A leading underscore indicates that the value of the variable should be ignored. If this is intended please rename the variable to remove the underscore │ 103 │ __module__, │ ~ │ └─ lib/arke/core/unit.ex:103:15: Arke.Core.Unit.load/3 warning: variable "parameter_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ ... id: parameter_id, │ ~ │ └─ lib/arke/core/unit.ex:115:71: Arke.Core.Unit.load_data/3 warning: variable "parameter_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 116 │ ... arke_id: parameter_type │ ~ │ └─ lib/arke/core/unit.ex:116:76: Arke.Core.Unit.load_data/3 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 113 │ def load_data(%{data: %{parameters: parameters}} = arke, unit_data, opts) do │ ~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:113:39: Arke.Core.Unit.load_data/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 123 │ def load_parameter_value(%{id: :id} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:123:50: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 124 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:124:56: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 125 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:125:56: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 126 │ def load_parameter_value(%{id: :arke_id} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:126:55: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 127 │ def load_parameter_value(%{id: :inserted_at} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:127:59: Arke.Core.Unit.load_parameter_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 128 │ def load_parameter_value(%{id: :updated_at} = _, data, opts), do: data │ ~~~~ │ └─ lib/arke/core/unit.ex:128:58: Arke.Core.Unit.load_parameter_value/3 warning: variable "parameter_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 130 │ def load_parameter_value(%{id: parameter_id, arke_id: parameter_type} = parameter, data, opts) do │ ~~~~~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:130:57: Arke.Core.Unit.load_parameter_value/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 140 │ def get_default_value(value, parameter), do: value │ ~~~~~~~~~ │ └─ lib/arke/core/unit.ex:140:32: Arke.Core.Unit.get_default_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 203 │ def update(%{data: data, arke_id: arke_id} = unit, args) do │ ~~~~ │ └─ lib/arke/core/unit.ex:203:22: Arke.Core.Unit.update/2 warning: variable "udata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 233 │ Map.merge(unit.data, parsed_data, fn _k, udata, pdata -> pdata end) │ ~ │ └─ lib/arke/core/unit.ex:233:46: Arke.Core.Unit.update_data/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp handle_id/1" was previously defined (lib/arke/core/unit.ex:247) │ 272 │ defp handle_id(id) when is_nil(id), do: UUID.uuid1() │ ~ │ └─ lib/arke/core/unit.ex:272:8 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def encode_unit_data/2" was previously defined (lib/arke/core/unit.ex:253) │ 278 │ def encode_unit_data(arke, data) do │ ~ │ └─ lib/arke/core/unit.ex:278:7 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp update_encoded_unit_data/3" was previously defined (lib/arke/core/unit.ex:260) │ 285 │ defp update_encoded_unit_data(%{data: %{only_runtime: true}}, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:285:8 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 336 │ def get_value(%Arke.Core.Unit{data: data} = unit, parameter_id), │ ~~~~ │ └─ lib/arke/core/unit.ex:336:47: Arke.Core.Unit.get_value/2 warning: defp parse_value/2 is private, @doc attribute is always discarded for private functions/macros/types │ 350 │ @doc """ │ ~~~~~~~~ │ └─ lib/arke/core/unit.ex:350: Arke.Core.Unit.parse_value/2 warning: variable "cleaned_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 404 │ cleaned_list = list_result |> Enum.map(&String.replace(&1, ~r/^['"]|['"]$/, "")) │ ~~~~~~~~~~~~ │ └─ lib/arke/core/unit.ex:404:5: Arke.Core.Unit.parse_value/2 warning: variable "datetime" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 431 │ defp get_data_value(%{"datetime" => datetime, "value" => value} = _), do: value │ ~~~~~~~~ │ └─ lib/arke/core/unit.ex:431:39: Arke.Core.Unit.get_data_value/1 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 96 │ defp cast_value(%Arke.Core.Unit{arke_id: arke_id} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/core/query.ex:96:57: Arke.Core.Query.BaseFilter.cast_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 110 │ defp cast_value(parameter, value), do: value │ ~~~~~~~~~ │ └─ lib/arke/core/query.ex:110:21: Arke.Core.Query.BaseFilter.cast_value/2 warning: variable "offset" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 378 │ def set_offset(query, offset), do: nil │ ~~~~~~ │ └─ lib/arke/core/query.ex:378:25: Arke.Core.Query.set_offset/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 378 │ def set_offset(query, offset), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:378:18: Arke.Core.Query.set_offset/2 warning: variable "limit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 402 │ def set_limit(query, limit), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:402:24: Arke.Core.Query.set_limit/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 402 │ def set_limit(query, limit), do: nil │ ~~~~~ │ └─ lib/arke/core/query.ex:402:17: Arke.Core.Query.set_limit/2 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 67 │ else: ({:error, msg} -> nil) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:67:30: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 60 │ %{id: id, data: data} -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:60:13: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_parameter(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:72:30: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_parameter(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:72:21: Arke.Boundary.ArkeManager.get_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 85 │ %{id: id, data: data} = arke -> │ ~ │ └─ lib/arke/boundary/arke_manager.ex:85:13: Arke.Boundary.ArkeManager.update_parameter/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 103 │ defp init_parameter(project, id, metadata, p) do │ ~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:103:23: Arke.Boundary.ArkeManager.init_parameter/4 warning: variable "parameter" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 130 │ parameter = handle_init_p(id, parameter, metadata) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:130:9: Arke.Boundary.ArkeManager.init_parameter/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 134 │ defp handle_init_p(id, nil, metadata) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:134:22: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 134 │ defp handle_init_p(id, nil, metadata) do │ ~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:134:31: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "pdata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 139 │ Map.update(parameter,:data, %{},fn v -> Map.merge(v,override_data, fn _k, pdata,ovdata -> ovdata end) end) │ ~ │ └─ lib/arke/boundary/arke_manager.ex:139:79: Arke.Boundary.ArkeManager.handle_init_p/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 138 │ defp handle_init_p(id, parameter, override_data) do │ ~~ │ └─ lib/arke/boundary/arke_manager.ex:138:22: Arke.Boundary.ArkeManager.handle_init_p/3 warning: function init_parameter/4 is unused │ 103 │ defp init_parameter(project, id, metadata, p) do │ ~ │ └─ lib/arke/boundary/arke_manager.ex:103:8: Arke.Boundary.ArkeManager (module) warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.ArkeManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:15: Arke.Boundary.ArkeManager (module) warning: this clause cannot match because a previous clause at line 124 matches the same pattern as this clause │ 125 │ def load_parameter_value(%{id: :metadata} = _, data, opts), do: data │ ~ │ └─ lib/arke/core/unit.ex:125:7 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 272 │ defp handle_id(id) when is_nil(id), do: UUID.uuid1() │ ~ │ └─ lib/arke/core/unit.ex:272:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 273 │ defp handle_id(id) when is_atom(id), do: Atom.to_string(id) │ ~ │ └─ lib/arke/core/unit.ex:273:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 274 │ defp handle_id(id) when is_binary(id), do: id │ ~ │ └─ lib/arke/core/unit.ex:274:8 warning: this clause for handle_id/1 cannot match because a previous clause at line 251 always matches │ 276 │ defp handle_id(id), do: id │ ~ │ └─ lib/arke/core/unit.ex:276:8 warning: this clause for encode_unit_data/2 cannot match because a previous clause at line 253 always matches │ 278 │ def encode_unit_data(arke, data) do │ ~ │ └─ lib/arke/core/unit.ex:278:7 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 285 │ defp update_encoded_unit_data(%{data: %{only_runtime: true}}, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:285:8 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 287 │ defp update_encoded_unit_data(%{id: id}, data, value), │ ~ │ └─ lib/arke/core/unit.ex:287:8 warning: this clause for update_encoded_unit_data/3 cannot match because a previous clause at line 269 always matches │ 294 │ defp update_encoded_unit_data(_, data, _), do: data │ ~ │ └─ lib/arke/core/unit.ex:294:8 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 66 │ else: ({:error, msg} -> nil) │ ~ │ └─ lib/arke/boundary/group_manager.ex:66:25: Arke.Boundary.GroupManager.get_arke/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 70 │ def get_arke(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:70:25: Arke.Boundary.GroupManager.get_arke/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 70 │ def get_arke(unit_id, project, %Unit{} = parameter), do: parameter │ ~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:70:16: Arke.Boundary.GroupManager.get_arke/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def get_groups_by_arke(%{id: id, metadata: %{project: project}} = arke), │ ~~~~ │ └─ lib/arke/boundary/group_manager.ex:72:69: Arke.Boundary.GroupManager.get_groups_by_arke/1 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 89 │ def get_parameters(%{id: id, metadata: %{project: project}} = group) do │ ~~ │ └─ lib/arke/boundary/group_manager.ex:89:28: Arke.Boundary.GroupManager.get_parameters/1 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 90 │ parameters = │ ~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:90:5: Arke.Boundary.GroupManager.get_parameters/1 warning: variable "msg" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ {:error, msg} -> %{id: child_id, metadata: metadata} │ ~ │ └─ lib/arke/boundary/group_manager.ex:119:16: Arke.Boundary.GroupManager.link_init/4 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule Arke.Boundary.GroupManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:15: Arke.Boundary.GroupManager (module) warning: def add_node/5 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 24 │ 42 │ def add_node(project, parent, child, type, metadata) │ ~ │ └─ lib/arke/link_manager.ex:42:7 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 74 │ def delete_node(project, %Unit{} = parent, %Unit{} = child, type, metadata \\ %{}) do │ ~~~~~~~~ │ └─ lib/arke/link_manager.ex:74:69: Arke.LinkManager.delete_node/5 warning: def delete_node/5 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 74 │ 83 │ def delete_node(project, parent, child, type, metadata) │ ~ │ └─ lib/arke/link_manager.ex:83:7 warning: module attribute @record_fields was set but never used │ 17 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/link_manager.ex:17: Arke.LinkManager (module) warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 62 │ def on_unit_create(_arke, %{id: id, metadata: %{project: project}} = unit) do │ ~~ │ └─ lib/arke/core/parameter.ex:62:35: Arke.Core.Parameter.on_unit_create/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 62 │ def on_unit_create(_arke, %{id: id, metadata: %{project: project}} = unit) do │ ~~~~~~~ │ └─ lib/arke/core/parameter.ex:62:60: Arke.Core.Parameter.on_unit_create/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def on_unit_delete(_, %{id: id, metadata: %{project: project}} = unit) do │ ~~ │ └─ lib/arke/core/parameter.ex:72:31: Arke.Core.Parameter.on_unit_delete/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 72 │ def on_unit_delete(_, %{id: id, metadata: %{project: project}} = unit) do │ ~~~~~~~ │ └─ lib/arke/core/parameter.ex:72:56: Arke.Core.Parameter.on_unit_delete/2 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 49 │ @persistence Application.get_env(:arke, :persistence) │ ~ │ └─ lib/arke/query_manager.ex:49:28: Arke.QueryManager (module) warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 82 │ query = Query.new(arke, project, distinct) │ ~~~~~ │ └─ lib/arke/query_manager.ex:82:5: Arke.QueryManager.query/1 warning: variable "depth" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ defp parse_link_depth(depth), do: 500 │ ~~~~~ │ └─ lib/arke/query_manager.ex:120:25: Arke.QueryManager.parse_link_depth/1 warning: variable "link_unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 181 │ {:ok, parameter, link_unit} -> {errors, link_units} │ ~ │ └─ lib/arke/query_manager.ex:181:28: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 181 │ {:ok, parameter, link_unit} -> {errors, link_units} │ ~ │ └─ lib/arke/query_manager.ex:181:17: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "p" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 188 │ Enum.map(link_units, fn {p, u} -> │ ~ │ └─ lib/arke/query_manager.ex:188:34: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "parameters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 165 │ %{data: parameters} = arke, │ ~~~~~~~~~~ │ └─ lib/arke/query_manager.ex:165:18: Arke.QueryManager.handle_link_parameters_unit/2 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:204:72: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:204:46: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 204 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:204:55: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:208:72: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:208:46: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ defp handle_create_on_link_parameters_unit(project, unit, parameter, arke, value) │ ~~~~ │ └─ lib/arke/query_manager.ex:208:55: Arke.QueryManager.handle_create_on_link_parameters_unit/5 warning: variable "filters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 407 │ def and_(_query, _negate, filters), do: raise("filters must be a list") │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:407:29: Arke.QueryManager.and_/3 warning: function head for def encode/2 must come at the top of its direct implementation. Instead of: def add(a, b), do: a + b def add(a, b) one should write: def add(a, b) def add(a, b), do: a + b │ 60 │ def encode(unit, opts) │ ~ │ └─ lib/arke/struct_manager.ex:60:7 warning: variable "filters" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 428 │ def or_(_query, _negate, filters), do: raise("filters must be a list") │ ~~~~~~~ │ └─ lib/arke/query_manager.ex:428:28: Arke.QueryManager.or_/3 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 80 │ type, │ ~~~~ │ └─ lib/arke/struct_manager.ex:80:10: Arke.StructManager.handle_encode/4 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 566 │ %{id: id} = group = get_group(value, query.project) │ ~~ │ └─ lib/arke/query_manager.ex:566:11: Arke.QueryManager.handle_filter/5 warning: variable "link_id_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 130 │ link_id_list = │ ~~~~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:130:5: Arke.StructManager.get_link_id_list/1 warning: variable "arke_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 592 │ defp handle_filter_group(query, group, arke_list, negate) when is_nil(group), do: query │ ~~~~~~~~~ │ └─ lib/arke/query_manager.ex:592:42: Arke.QueryManager.handle_filter_group/4 warning: variable "negate" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 592 │ defp handle_filter_group(query, group, arke_list, negate) when is_nil(group), do: query │ ~~~~~~ │ └─ lib/arke/query_manager.ex:592:53: Arke.QueryManager.handle_filter_group/4 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 137 │ %{id: id, arke_id: arke_id, metadata: %{project: project}, data: data} = unit │ ~~ │ └─ lib/arke/struct_manager.ex:137:16: Arke.StructManager.get_link_id_list/1 warning: variable "group" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 594 │ defp handle_filter_group(query, group, arke_list, negate), │ ~~~~~ │ └─ lib/arke/query_manager.ex:594:35: Arke.QueryManager.handle_filter_group/4 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 137 │ %{id: id, arke_id: arke_id, metadata: %{project: project}, data: data} = unit │ ~~~~ │ └─ lib/arke/struct_manager.ex:137:83: Arke.StructManager.get_link_id_list/1 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 162 │ defp get_parsed_data(nil, arke, _), do: %{} │ ~~~~ │ └─ lib/arke/struct_manager.ex:162:29: Arke.StructManager.get_parsed_data/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 740 │ defp get_parameter_operator(arke, [key, operator]), do: {key, String.to_existing_atom(operator)} │ ~~~~ │ └─ lib/arke/query_manager.ex:740:31: Arke.QueryManager.get_parameter_operator/2 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 163 │ defp get_parsed_data(data, arke, _) when data == %{}, do: %{} │ ~~~~ │ └─ lib/arke/struct_manager.ex:163:30: Arke.StructManager.get_parsed_data/3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 741 │ defp get_parameter_operator(arke, [key]), do: {key, :eq} │ ~~~~ │ └─ lib/arke/query_manager.ex:741:31: Arke.QueryManager.get_parameter_operator/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 745 │ defp get_parameter(%{arke: nil, project: project} = query, %{id: id} = _parameter), │ ~~~~~ │ └─ lib/arke/query_manager.ex:745:55: Arke.QueryManager.get_parameter/2 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def encode/2" was previously defined (lib/arke/struct_manager.ex:52) │ 173 │ def encode(_unit, _format), do: raise("Must pass a valid unit") │ ~ │ └─ lib/arke/struct_manager.ex:173:7 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 748 │ defp get_parameter(%{arke: nil, project: project} = query, key), │ ~~~~~ │ └─ lib/arke/query_manager.ex:748:55: Arke.QueryManager.get_parameter/2 warning: variable "query" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 751 │ defp get_parameter(%{arke: arke, project: project} = query, key) do │ ~~~~~ │ └─ lib/arke/query_manager.ex:751:56: Arke.QueryManager.get_parameter/2 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 199 │ %{load_values: true} = opts │ ~~~~ │ └─ lib/arke/struct_manager.ex:199:33: Arke.StructManager.parse_value/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 756 │ %{arke_id: arke_id, metadata: %{project: project}, data: new_data, id: id} = unit, │ ~~ │ └─ lib/arke/query_manager.ex:756:81: Arke.QueryManager.handle_link_parameters/2 warning: variable "param" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 198 │ %{arke_id: param_type, data: %{multiple: false, values: values}} = param, │ ~~~~~ │ └─ lib/arke/struct_manager.ex:198:77: Arke.StructManager.parse_value/3 warning: variable "opts" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 208 │ %{load_values: true} = opts │ ~~~~ │ └─ lib/arke/struct_manager.ex:208:33: Arke.StructManager.parse_value/3 warning: variable "param" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 207 │ %{arke_id: param_type, data: %{multiple: true, values: values}} = param, │ ~~~~~ │ └─ lib/arke/struct_manager.ex:207:76: Arke.StructManager.parse_value/3 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 222 │ defp filter_link_units(_link_units, %{id: id, metadata: metadata} = unit, false) │ ~~~~~~~~ │ └─ lib/arke/struct_manager.ex:222:59: Arke.StructManager.filter_link_units/3 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 222 │ defp filter_link_units(_link_units, %{id: id, metadata: metadata} = unit, false) │ ~~~~ │ └─ lib/arke/struct_manager.ex:222:71: Arke.StructManager.filter_link_units/3 warning: variable "value" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 869 │ defp normalize_value(%{id: id} = value) do │ ~~~~~ │ └─ lib/arke/query_manager.ex:869:36: Arke.QueryManager.normalize_value/1 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 331 │ def get_struct(arke, %{data: data} = unit, opts) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:331:32: Arke.StructManager.get_struct/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 340 │ def get_struct(arke, %{data: data} = unit) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:340:32: Arke.StructManager.get_struct/2 warning: clauses with the same name should be grouped together, "def get_struct/1" was previously defined (lib/arke/struct_manager.ex:326) │ 362 │ def get_struct(_), do: raise("Must pass a valid arke or unit") │ ~ │ └─ lib/arke/struct_manager.ex:362:7 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 417 │ defp add_value(struct, %{data: data} = unit) do │ ~~~~ │ └─ lib/arke/struct_manager.ex:417:42: Arke.StructManager.add_value/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 427 │ defp add_type_fields({%{arke_id: :string, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:427:59: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 466 │ defp add_type_fields({%{arke_id: :boolean, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:466:60: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 476 │ defp add_type_fields({%{arke_id: :dict, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:476:57: Arke.StructManager.add_type_fields/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 486 │ defp add_type_fields({%{arke_id: :list, data: data} = parameter, base_data}, _project) do │ ~~~~~~~~~ │ └─ lib/arke/struct_manager.ex:486:57: Arke.StructManager.add_type_fields/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 510 │ defp get_arke_or_group_id(nil, project), do: nil │ ~~~~~~~ │ └─ lib/arke/struct_manager.ex:510:34: Arke.StructManager.get_arke_or_group_id/2 warning: variable "p" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 540 │ defp add_type_fields({p, base_data}, _project) do │ ~ │ └─ lib/arke/struct_manager.ex:540:25: Arke.StructManager.add_type_fields/2 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp add_type_fields/2" was previously defined (lib/arke/struct_manager.ex:427) │ 540 │ defp add_type_fields({p, base_data}, _project) do │ ~ │ └─ lib/arke/struct_manager.ex:540:8 warning: default values for the optional arguments in the private function parse_value/3 are never used │ 182 │ defp parse_value(value, param, _opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:182:8: Arke.StructManager (module) warning: default values for the optional arguments in the private function handle_encode/4 are never used │ 61 │ defp handle_encode(u, type, load_links, opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:61:8: Arke.StructManager (module) warning: function handle_default_value/2 is unused │ 265 │ defp handle_default_value( │ ~ │ └─ lib/arke/struct_manager.ex:265:8: Arke.StructManager (module) warning: default values for the optional arguments in the private function get_parsed_data/3 are never used │ 161 │ defp get_parsed_data(data, arke, opts \\ []) │ ~ │ └─ lib/arke/struct_manager.ex:161:8: Arke.StructManager (module) warning: this clause for encode/2 cannot match because a previous clause at line 54 always matches │ 173 │ def encode(_unit, _format), do: raise("Must pass a valid unit") │ ~ │ └─ lib/arke/struct_manager.ex:173:7 warning: module attribute @record_fields was set but never used │ 50 │ @record_fields [:id, :data, :metadata, :inserted_at, :updated_at] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/query_manager.ex:50: Arke.QueryManager (module) warning: unused alias Parameter │ 47 │ alias Arke.Core.{Arke, Unit, Query, Parameter} │ ~ │ └─ lib/arke/query_manager.ex:47:3 warning: unused alias QueryManager │ 43 │ alias Arke.QueryManager │ ~ │ └─ lib/arke/query_manager.ex:43:3 warning: unused alias Arke │ 25 │ alias Arke.Core.{Unit, Arke} │ ~ │ └─ lib/arke/struct_manager.ex:25:3 warning: variable "e" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ e -> │ ~ │ └─ lib/arke/utils/datetime_handler.ex:65:7: Arke.Utils.DatetimeHandler.check_time/2 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 23 │ @persistence Application.get_env(:arke, :persistence) │ ~ │ └─ lib/arke/core/project.ex:23:28: Arke.Core.Project (module) warning: this clause cannot match because a previous clause at line 373 matches the same pattern as this clause │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 69 │ def base_parameters(arke, %{data: %{parameters: []}} = unit), do: base_parameters(arke) │ ~~~~ │ └─ lib/arke/core/arke.ex:69:58: Arke.Core.Arke.base_parameters/2 warning: variable "content_type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 35 │ %{path: path, content_type: content_type, filename: filename} = _unit, │ ~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:35:37: Arke.Core.File.before_load/2 warning: variable "opts" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used) │ 61 │ {:ok, %{signed_url: signed_url} = opts} <- get_url(unit) do │ ~ │ └─ lib/arke/core/file.ex:61:44: Arke.Core.File.on_struct_encode/4 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ def on_struct_encode(arke, %{metadata: %{project: project}} = unit, data, opts) do │ ~~~~ │ └─ lib/arke/core/file.ex:57:24: Arke.Core.File.on_struct_encode/4 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 57 │ def on_struct_encode(arke, %{metadata: %{project: project}} = unit, data, opts) do │ ~~~~~~~ │ └─ lib/arke/core/file.ex:57:53: Arke.Core.File.on_struct_encode/4 warning: this clause cannot match because a previous clause at line 21 matches the same pattern as this clause │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21 warning: unused alias Parameter │ 22 │ alias Arke.Core.Parameter │ ~ │ └─ lib/arke/core/arke.ex:22:3 warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 27 │ def on_create(arke, unit) do │ ~~~~ │ └─ lib/arke/core/group.ex:27:17: Arke.Core.Group.on_create/2 warning: this clause cannot match because a previous clause at line 20 matches the same pattern as this clause │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20 warning: unused alias ArkeManager │ 22 │ alias Arke.Boundary.{ArkeManager, FileManager} │ ~ │ └─ lib/arke/core/file.ex:22:3 warning: variable "child_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:64:63: Arke.Core.Link.on_create/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:65:43: Arke.Core.Link.on_create/2 warning: variable "parent_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~~ │ └─ lib/arke/core/link.ex:64:42: Arke.Core.Link.on_create/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 65 │ metadata: %{project: project} = metadata │ ~~~~~~~ │ └─ lib/arke/core/link.ex:65:32: Arke.Core.Link.on_create/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 64 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~ │ └─ lib/arke/core/link.ex:64:25: Arke.Core.Link.on_create/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 86 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:86:43: Arke.Core.Link.on_delete/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 103 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:103:43: Arke.Core.Link.on_delete/2 warning: variable "child_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:119:63: Arke.Core.Link.on_delete/2 warning: variable "metadata" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ metadata: %{project: project} = metadata │ ~~~~~~~~ │ └─ lib/arke/core/link.ex:120:43: Arke.Core.Link.on_delete/2 warning: variable "parent_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~~~~~~ │ └─ lib/arke/core/link.ex:119:42: Arke.Core.Link.on_delete/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 120 │ metadata: %{project: project} = metadata │ ~~~~~~~ │ └─ lib/arke/core/link.ex:120:32: Arke.Core.Link.on_delete/2 warning: variable "type" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 119 │ data: %{type: type, parent_id: parent_id, child_id: child_id}, │ ~~~~ │ └─ lib/arke/core/link.ex:119:25: Arke.Core.Link.on_delete/2 warning: this clause cannot match because a previous clause at line 20 matches the same pattern as this clause │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20 warning: this clause cannot match because a previous clause at line 18 matches the same pattern as this clause │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18 warning: unused alias LinkManager │ 19 │ alias Arke.LinkManager │ ~ │ └─ lib/arke/core/link.ex:19:3 warning: this clause cannot match because a previous clause at line 21 matches the same pattern as this clause │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21 warning: this clause cannot match because a previous clause at line 102 matches the same pattern as this clause │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 49 │ defp get_arke(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:49:17: Arke.Utils.Export.get_arke/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 52 │ defp get_parameter(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:52:22: Arke.Utils.Export.get_parameter/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 61 │ defp get_group(project, nil), do: [] │ ~~~~~~~ │ └─ lib/arke/utils/export.ex:61:18: Arke.Utils.Export.get_group/2 warning: variable "parsed_data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 86 │ parsed_data = │ ~~~~~~~~~~~ │ └─ lib/arke/utils/export.ex:86:5: Arke.Utils.Export.get_all/1 warning: this clause cannot match because a previous clause at line 136 matches the same pattern as this clause │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136 warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ @storage Application.get_env(:arke, :storage) │ ~ │ └─ lib/arke/utils/gcp.ex:19:24: Arke.Utils.Gcp (module) warning: variable "object" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 28 │ {:ok, object} = │ ~~~~~~ │ └─ lib/arke/utils/gcp.ex:28:11: Arke.Utils.Gcp.upload_file/3 warning: variable "ext" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~~~ │ └─ lib/arke/utils/gcp.ex:50:67: Arke.Utils.Gcp.get_public_url/2 warning: variable "unit" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~~~~ │ └─ lib/arke/utils/gcp.ex:50:75: Arke.Utils.Gcp.get_public_url/2 warning: def get_public_url/2 has multiple clauses and also declares default values. In such cases, the default values should be defined in a header. Instead of: def foo(:first_clause, b \\ :default) do ... end def foo(:second_clause, b) do ... end one should write: def foo(a, b \\ :default) def foo(:first_clause, b) do ... end def foo(:second_clause, b) do ... end the previous clause is defined on line 50 │ 55 │ def get_public_url(_unit, _opts), do: Error.create(:storage, "invalid unit") │ ~ │ └─ lib/arke/utils/gcp.ex:55:7 warning: variable "err" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 101 │ {:ok, %{status_code: 403} = err} -> │ ~ │ └─ lib/arke/utils/gcp.ex:101:35: Arke.Utils.Gcp.get_bucket_file_signed_url/2 warning: this clause cannot match because a previous clause at line 170 matches the same pattern as this clause │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170 warning: this clause for upload_file/2 cannot match because a previous clause at line 16 always matches │ 23 │ def upload_file(file_name, file_data, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:23:7 warning: this clause for get_file/1 cannot match because a previous clause at line 16 always matches │ 39 │ def get_file(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:39:7 warning: this clause for get_public_url/1 cannot match because a previous clause at line 16 always matches │ 50 │ def get_public_url(%{data: %{name: name, path: path, extension: ext}} = unit, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:50:7 warning: this clause for delete_file/1 cannot match because a previous clause at line 16 always matches │ 57 │ def delete_file(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:57:7 warning: this clause for get_bucket_file_signed_url/1 cannot match because a previous clause at line 16 always matches │ 68 │ def get_bucket_file_signed_url(file_path, opts \\ []) do │ ~ │ └─ lib/arke/utils/gcp.ex:68:7 warning: module attribute @default_bucket was set but never used │ 21 │ @default_bucket @storage[:gcp][:default_bucket] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/utils/gcp.ex:21: Arke.Utils.Gcp (module) warning: module attribute @service_account was set but never used │ 20 │ @service_account @storage[:gcp][:service_account] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/utils/gcp.ex:20: Arke.Utils.Gcp (module) warning: variable "arke_data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 51 │ %{data: arke_data} = arke = ArkeManager.get(arke_id, project) │ ~ │ └─ lib/arke/validator.ex:51:15: Arke.Validator.validate/3 warning: variable "unit_id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ defp check_duplicate_unit(%{id: unit_id} = unit, _project, _persistence_fn), do: {:ok, unit} │ ~~~~~~~ │ └─ lib/arke/validator.ex:91:35: Arke.Validator.check_duplicate_unit/3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 144 │ defp get_parameter(arke, parameter_id, project), │ ~~~~~~~ │ └─ lib/arke/validator.ex:144:42: Arke.Validator.get_parameter/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "def validate_parameter/4" was previously defined (lib/arke/validator.ex:134) │ 147 │ def validate_parameter(arke, parameter, value, project) do │ ~ │ └─ lib/arke/validator.ex:147:7 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 167 │ def get_default_value(parameter, value), do: value │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:167:25: Arke.Validator.get_default_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 169 │ defp parse_value(%{arke_id: :integer, data: %{multiple: false} = data} = _, value) │ ~~~~ │ └─ lib/arke/validator.ex:169:68: Arke.Validator.parse_value/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 177 │ defp parse_value(%{arke_id: :float, data: %{multiple: false} = data} = _, value) │ ~~~~ │ └─ lib/arke/validator.ex:177:66: Arke.Validator.parse_value/2 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 224 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = _parameter, nil, project), │ ~~~~~~~ │ └─ lib/arke/validator.ex:224:84: Arke.Validator.check_duplicate/4 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 227 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = parameter, value, project,arke) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:227:67: Arke.Validator.check_duplicate/5 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 287 │ %{arke_id: type, data: %{multiple: true, values: _values, label: label}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:287:85: Arke.Validator.check_values/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 306 │ defp check_multiple(errors, %{id: id, data: %{multiple: true}} = parameter, value) when not is_list(value), do: check_multiple(errors, parameter, [value]) │ ~~ │ └─ lib/arke/validator.ex:306:37: Arke.Validator.check_multiple/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 307 │ defp check_multiple(errors, %{id: id, arke_id: type, data: %{ multiple: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:307:84: Arke.Validator.check_multiple/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 317 │ defp check_whitespace(%{data: %{strip: true}} = parameter, value) when is_atom(value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:317:51: Arke.Validator.check_whitespace/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 325 │ defp check_whitespace(%{data: %{strip: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:325:51: Arke.Validator.check_whitespace/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 332 │ defp check_lowercase(%{data: %{lowercase: true}} = parameter, value) when is_atom(value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:332:54: Arke.Validator.check_lowercase/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 339 │ defp check_lowercase(%{data: %{lowercase: true}} = parameter, value) do │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:339:54: Arke.Validator.check_lowercase/2 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 346 │ defp check_max_length(errors, %{data: %{max_length: max_length}} = parameter, _) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:346:70: Arke.Validator.check_max_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 352 │ %{data: %{label: label, max_length: max_length}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:352:61: Arke.Validator.check_max_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 364 │ defp check_min_length(errors, %{data: %{min_length: min_length}} = parameter, _) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:364:70: Arke.Validator.check_min_length/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 370 │ %{data: %{label: label, min_length: min_length}} = parameter, │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:370:61: Arke.Validator.check_min_length/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp check_by_type/3" was previously defined (lib/arke/validator.ex:235) │ 386 │ defp check_by_type(errors, %{arke_id: :integer} = parameter, value) │ ~ │ └─ lib/arke/validator.ex:386:8 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 395 │ defp check_by_type(errors, %{arke_id: :integer, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:395:76: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 407 │ defp check_by_type(errors, %{arke_id: :float, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:407:74: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 412 │ defp check_by_type(errors, %{arke_id: :dict, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:412:73: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 417 │ defp check_by_type(errors, %{arke_id: :list, data: %{label: label}} = parameter, _value), │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:417:73: Arke.Validator.check_by_type/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 420 │ defp check_max(errors, %{data: %{max: max}} = parameter, _) when is_nil(max), do: errors │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:420:49: Arke.Validator.check_max/3 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 431 │ defp check_min(errors, %{data: %{min: min}} = parameter, _) when is_nil(min), do: errors │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:431:49: Arke.Validator.check_min/3 warning: clauses with the same name and arity (number of arguments) should be grouped together, "defp check_by_type/3" was previously defined (lib/arke/validator.ex:235) │ 443 │ defp check_by_type(errors, %{arke_id: :date} = parameter, value) do │ ~ │ └─ lib/arke/validator.ex:443:8 warning: variable "parameter" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 470 │ defp check_by_type(errors, %{arke_id: :boolean} = parameter, value) │ ~~~~~~~~~ │ └─ lib/arke/validator.ex:470:53: Arke.Validator.check_by_type/3 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 495 │ defp __enum_error_common__(errors, %{id: id, data: %{values: nil}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:495:44: Arke.Validator.__enum_error_common__/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 496 │ defp __enum_error_common__(errors, %{id: id, data: %{values: %{}}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:496:44: Arke.Validator.__enum_error_common__/2 warning: variable "id" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 497 │ defp __enum_error_common__(errors, %{id: id, data: %{values: []}} = _parameter), do: errors │ ~~ │ └─ lib/arke/validator.ex:497:44: Arke.Validator.__enum_error_common__/2 warning: function check_duplicate/4 is unused │ 224 │ defp check_duplicate(errors, %{id: id, data: %{unique: true}} = _parameter, nil, project), │ ~ │ └─ lib/arke/validator.ex:224:8: Arke.Validator (module) warning: this clause cannot match because a previous clause at line 200 matches the same pattern as this clause │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200 warning: variable "exception" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 12 │ def message(%{message: [%{context: context, message: message}]} = exception), │ ~~~~~~~~~ │ └─ lib/error/arke_error.ex:12:69: Arke.Errors.ArkeError.message/1 warning: variable "exception" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 15 │ def message(%{message: errors} = exception) when is_list(errors) do │ ~~~~~~~~~ │ └─ lib/error/arke_error.ex:15:36: Arke.Errors.ArkeError.message/1 warning: this clause cannot match because a previous clause at line 224 matches the same pattern as this clause │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224 warning: this clause cannot match because a previous clause at line 248 matches the same pattern as this clause │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248 warning: module attribute @decode_keys was set but never used │ 29 │ @decode_keys [:arke, :parameter, :group, :link] │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/mix/tasks/arke.export_data.ex:29: Mix.Tasks.Arke.ExportData (module) warning: unused alias ArkeManager │ 26 │ alias Arke.Boundary.{ArkeManager} │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:26:3 warning: unused alias Error │ 25 │ alias Arke.Utils.ErrorGenerator, as: Error │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:25:3 warning: unused alias LinkManager │ 24 │ alias Arke.LinkManager │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:24:3 warning: unused alias QueryManager │ 23 │ alias Arke.QueryManager │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:23:3 warning: unused alias Unit │ 28 │ alias Arke.Core.Unit │ ~ │ └─ lib/mix/tasks/arke.export_data.ex:28:3 warning: variable "project" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 79 │ defp check_file(_arke_id,project, []), do: nil │ ~~~~~~~ │ └─ lib/mix/tasks/arke.seed_project.ex:79:28: Mix.Tasks.Arke.SeedProject.check_file/3 warning: variable "format" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 256 │ defp parse([],format, data), do: data │ ~~~~~~ │ └─ lib/mix/tasks/arke.seed_project.ex:256:17: Mix.Tasks.Arke.SeedProject.parse/3 warning: default values for the optional arguments in the private function handle_link/3 are never used │ 346 │ defp handle_link(_data,_project, _error \\ []) │ ~ │ └─ lib/mix/tasks/arke.seed_project.ex:346:8: Mix.Tasks.Arke.SeedProject (module) warning: this clause cannot match because a previous clause at line 280 matches the same pattern as this clause │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280 warning: this clause cannot match because a previous clause at line 311 matches the same pattern as this clause │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311 warning: this clause cannot match because a previous clause at line 346 matches the same pattern as this clause │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346 warning: this clause cannot match because a previous clause at line 370 matches the same pattern as this clause │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370 warning: this clause cannot match because a previous clause at line 388 matches the same pattern as this clause │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388 warning: this clause cannot match because a previous clause at line 404 matches the same pattern as this clause │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404 warning: unused alias Parameter │ 402 │ alias Arke.Core.Parameter │ ~ │ └─ lib/arke/core/parameter.ex:402:3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:404 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:404 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 404 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:404: Arke.Core.Parameter.Binary.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:388 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:388 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 388 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:388: Arke.Core.Parameter.Dynamic.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:346 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:346 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 346 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:346: Arke.Core.Parameter.DateTime.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:370 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:370 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 370 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:370: Arke.Core.Parameter.Link.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.import/1 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:311 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:311 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 311 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:311: Arke.Core.Parameter.Time.import_units/5 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:280 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:280 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 280 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:280: Arke.Core.Parameter.Date.import_units/5 warning: Arke.Boundary.ParameterManager.get_from_persistence/0 is undefined or private │ 34 │ Arke.Boundary.ParameterManager.get_from_persistence() │ ~ │ └─ lib/examples/starter.ex:34:36: Arke.Examples.Starter.init/0 warning: Arke.Core.Parameter.new/1 is undefined or private │ 44 │ parameter = Arke.Core.Parameter.new(p) │ ~ │ └─ lib/examples/starter.ex:44:41: Arke.Examples.Starter.init_arke_by_struct/2 warning: Arke.Boundary.ArkeManager.set_manager/2 is undefined or private │ 50 │ ArkeManager.set_manager(Arke.Core.Arke.new(args), :arke_system) │ ~ │ └─ lib/examples/starter.ex:50:17: Arke.Examples.Starter.init_arke_by_struct/2 warning: Arke.Core.Arke.new/1 is undefined or private │ 50 │ ArkeManager.set_manager(Arke.Core.Arke.new(args), :arke_system) │ ~ │ └─ lib/examples/starter.ex:50:44: Arke.Examples.Starter.init_arke_by_struct/2 └─ lib/examples/starter.ex:61:24: Arke.Examples.Starter.init_arke_by_persistence/0 warning: Arke.Boundary.ArkeManager.add_parameter/4 is undefined or private. Did you mean: * update_parameter/4 │ 78 │ ArkeManager.add_parameter(parent_id, :arke_system, child_id, data.metadata) │ ~ │ └─ lib/examples/starter.ex:78:19: Arke.Examples.Starter.init_arke_parameters_by_persistence/0 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:248 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:248 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 248 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:248: Arke.Core.Parameter.List.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:224 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:224 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 224 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:224: Arke.Core.Parameter.Dict.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:200 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:200 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 200 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:200: Arke.Core.Parameter.Boolean.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:170 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:170 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 170 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:170: Arke.Core.Parameter.Float.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:136 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:136 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 136 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:136: Arke.Core.Parameter.Integer.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/parameter.ex:102 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/parameter.ex:102 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 102 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/parameter.ex:102: Arke.Core.Parameter.String.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.handle_insert/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.import/1 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/link.ex:18 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/link.ex:18 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 18 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/link.ex:18: Arke.Core.Link.import_units/5 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/project.ex:21 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/project.ex:21 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/project.ex:21: Arke.Core.Project.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.import/1 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/group.ex:20 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/group.ex:20 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/group.ex:20: Arke.Core.Group.import_units/5 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/file.ex:20 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/file.ex:20 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 20 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/file.ex:20: Arke.Core.File.import_units/5 warning: Logger.warn/1 is undefined or private. However, there is a macro with the same name and arity. Be sure to require Logger if you intend to invoke this macro │ 69 │ Logger.warn("error while loading the image: #{msg}") │ ~ │ └─ lib/arke/core/file.ex:69:16: Arke.Core.File.on_struct_encode/4 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/system.ex:373 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/system.ex:373 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 373 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/system.ex:373: Arke.System.Arke.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/group_manager.ex:17: Arke.Boundary.GroupManager.call_nodes_manager/3 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 21 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/arke_manager.ex:21: Arke.Boundary.ArkeManager.call_nodes_manager/3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.handle_insert/4 warning: ArkeAuth.Guardian.get_member/1 is undefined (module ArkeAuth.Guardian is not available or is yet to be defined) │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.import/1 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke/core/arke.ex:21 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke/core/arke.ex:21 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 21 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke/core/arke.ex:21: Arke.Core.Arke.import_units/5 warning: Unit.update/2 is undefined (module Unit is not available or is yet to be defined). Did you mean: * Arke.Core.Unit.update/2 │ 45 │ unit = Unit.update(unit, %{parameters: parameters}) │ ~ │ └─ lib/arke/core/arke.ex:45:17: Arke.Core.Arke.on_update/2 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke/boundary/parameter_manager.ex:17: Arke.Boundary.ParameterManager.call_nodes_manager/3 warning: Arke.DatetimeHandler.now/1 is undefined (module Arke.DatetimeHandler is not available or is yet to be defined) │ 291 │ :datetime => Arke.DatetimeHandler.now(:datetime) │ ~ │ └─ lib/arke/core/unit.ex:291:43: Arke.Core.Unit.update_encoded_unit_data/3 Generated arke app ==> arke_auth Compiling 13 files (.ex) warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager.handle_info/2 warning: @compile {:parse_transform, :ms_transform} is deprecated. Elixir will no longer support Erlang-based transforms in future versions │ 15 │ defmodule ArkeAuth.Boundary.OtpManager do │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:15: ArkeAuth.Boundary.OtpManager (module) warning: variable "arke" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 30 │ def on_unit_load(arke, data, _persistence_fn), do: {:ok, data} │ ~~~~ │ └─ lib/arke_auth/core/member.ex:30:20: ArkeAuth.Core.Member.on_unit_load/3 warning: variable "arke_user" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 63 │ arke_user = ArkeManager.get(:user, :arke_system) │ ~~~~~~~~~ │ └─ lib/arke_auth/core/member.ex:63:5: ArkeAuth.Core.Member.before_unit_update/2 warning: variable "arke_member_public" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 91 │ arke_member_public = QueryManager.get_by(project: project, arke_id: "ake", id: "member_public") │ ~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/member.ex:91:5: ArkeAuth.Core.Member.handle_get_permission/2 warning: function permission_dict/1 is unused │ 107 │ defp permission_dict(data \\ %{}) do │ ~ │ └─ lib/arke_auth/core/member.ex:107:8: ArkeAuth.Core.Member (module) warning: function handle_get_permission/2 is unused │ 89 │ defp handle_get_permission(member, %{metadata: %{project: project}}=arke) do │ ~ │ └─ lib/arke_auth/core/member.ex:89:8: ArkeAuth.Core.Member (module) warning: function get_permission_dict/2 is unused │ 119 │ defp get_permission_dict(permission_list, is_public \\ false) do │ ~ │ └─ lib/arke_auth/core/member.ex:119:8: ArkeAuth.Core.Member (module) warning: function get_parent_list/1 is unused │ 127 │ defp get_parent_list(nil), do: ["member_public"] │ ~ │ └─ lib/arke_auth/core/member.ex:127:8: ArkeAuth.Core.Member (module) warning: unused alias Member │ 17 │ alias ArkeAuth.Core.Member │ ~ │ └─ lib/arke_auth/core/member.ex:17:3 warning: this clause cannot match because a previous clause at line 6 matches the same pattern as this clause │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6 warning: this clause cannot match because a previous clause at line 23 matches the same pattern as this clause │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23 warning: this clause cannot match because a previous clause at line 24 matches the same pattern as this clause │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24 warning: this clause cannot match because a previous clause at line 24 matches the same pattern as this clause │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24 warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ use Guardian, otp_app: :arke_auth │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/guardian.ex:19: ArkeAuth.Guardian (module) warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead │ 19 │ use Guardian, otp_app: :arke_auth │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/sso_guardian.ex:19: ArkeAuth.SSOGuardian (module) warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 44 │ data = Map.get(user,:data,%{}) │ ~ │ └─ lib/arke_auth/sso_guardian.ex:44:9: ArkeAuth.SSOGuardian.resource_from_claims/1 warning: this clause for subject_for_token/2 cannot match because a previous clause at line 24 always matches │ 32 │ def subject_for_token(_, _) do │ ~ │ └─ lib/arke_auth/sso_guardian.ex:32:7 warning: this clause for resource_from_claims/1 cannot match because a previous clause at line 39 always matches │ 49 │ def resource_from_claims(_claims) do │ ~ │ └─ lib/arke_auth/sso_guardian.ex:49:7 warning: variable "parent_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 34 │ parent_list = get_parent_list(member) │ ~~~~~~~~~~~ │ └─ lib/arke_auth/utils/permission.ex:34:5: ArkeAuth.Utils.Permission.get_member_permission/3 warning: variable "parent_list" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 59 │ parent_list = get_parent_list(member) │ ~~~~~~~~~~~ │ └─ lib/arke_auth/utils/permission.ex:59:5: ArkeAuth.Utils.Permission.get_member_permission/3 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 112 │ defp permission_dict(data, %{arke_id: :super_admin} = _member), │ ~~~~ │ └─ lib/arke_auth/utils/permission.ex:112:24: ArkeAuth.Utils.Permission.permission_dict/2 warning: variable "data" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 115 │ defp permission_dict(data, %{data: %{subscription_active: false}}), │ ~~~~ │ └─ lib/arke_auth/utils/permission.ex:115:24: ArkeAuth.Utils.Permission.permission_dict/2 warning: this clause for subject_for_token/2 cannot match because a previous clause at line 51 always matches │ 61 │ def subject_for_token(_, _) do │ ~ │ └─ lib/arke_auth/guardian.ex:61:7 warning: this clause for resource_from_claims/1 cannot match because a previous clause at line 68 always matches │ 81 │ def resource_from_claims(_claims) do │ ~ │ └─ lib/arke_auth/guardian.ex:81:7 warning: default values for the optional arguments in the private function permission_dict/2 are never used │ 110 │ defp permission_dict(data, member \\ nil) │ ~ │ └─ lib/arke_auth/utils/permission.ex:110:8: ArkeAuth.Utils.Permission (module) warning: default values for the optional arguments in the private function get_permission_dict/3 are never used │ 92 │ defp get_permission_dict(permission_list, member \\ nil, is_public \\ false) do │ ~ │ └─ lib/arke_auth/utils/permission.ex:92:8: ArkeAuth.Utils.Permission (module) warning: unused alias Error │ 19 │ alias Arke.Utils.ErrorGenerator, as: Error │ ~ │ └─ lib/arke_auth/utils/permission.ex:19:3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24: ArkeAuth.Core.TemporaryToken.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/temporary_token.ex:24 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/temporary_token.ex:24 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/temporary_token.ex:24: ArkeAuth.Core.TemporaryToken.import_units/5 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24: ArkeAuth.Core.User.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/user.ex:24 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/user.ex:24 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 24 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/user.ex:24: ArkeAuth.Core.User.import_units/5 warning: ArkeAuth.Guardian.Plug.current_resource/1 is undefined (module ArkeAuth.Guardian.Plug is not available or is yet to be defined) │ 30 │ true -> ArkeAuth.Guardian.Plug.current_resource(conn) │ ~ │ └─ lib/arke_auth/guardian.ex:30:38: ArkeAuth.Guardian.get_member/2 └─ lib/arke_auth/guardian.ex:37:32: ArkeAuth.Guardian.get_impersonate_resources/1 warning: ArkeAuth.Guardian.Plug.current_resource/2 is undefined (module ArkeAuth.Guardian.Plug is not available or is yet to be defined) │ 35 │ case ArkeAuth.Guardian.Plug.current_resource(conn, key: :impersonate) do │ ~ │ └─ lib/arke_auth/guardian.ex:35:33: ArkeAuth.Guardian.get_impersonate_resources/1 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23: ArkeAuth.Core.Otp.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/otp.ex:23 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/otp.ex:23 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 23 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/otp.ex:23: ArkeAuth.Core.Otp.import_units/5 warning: module attribute @impl was not set for function handle_call/3 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: module attribute @impl was not set for function handle_info/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: module attribute @impl was not set for function terminate/2 callback (specified in GenServer). This either means you forgot to add the "@impl true" annotation before the definition or that you are accidentally overriding this callback │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager (module) warning: Tuple.append/2 is deprecated. Use insert_at instead │ 17 │ use Arke.Boundary.UnitManager │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/boundary/otp_manager.ex:17: ArkeAuth.Boundary.OtpManager.call_nodes_manager/3 warning: ArkePostgres.Repo.insert_all/3 is undefined (module ArkePostgres.Repo is not available or is yet to be defined) │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6: ArkeAuth.ResetPasswordToken.handle_insert/4 warning: comparison between distinct types found: check_existing_units_for_import(project, arke, header, u, existing_units) == false given types: dynamic(true) == false where "arke" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 arke where "existing_units" (context Arke.System) was given the type: # type: empty_list() # from: lib/arke_auth/core/reset_password_token.ex:6 existing_units = get_existing_units_for_import(project, arke, header, correct_units) where "header" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 header = parse_header_for_import(template_header, file_header) where "project" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 project where "u" (context Arke.System) was given the type: # type: dynamic() # from: lib/arke_auth/core/reset_password_token.ex:6 u While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false typing violation found at: │ 6 │ use Arke.System │ ~~~~~~~~~~~~~~~ │ └─ lib/arke_auth/core/reset_password_token.ex:6: ArkeAuth.ResetPasswordToken.import_units/5 Generated arke_auth app ==> nerves_compatibility_test Nerves environment MIX_TARGET: host MIX_ENV: prod Checking for prebuilt Nerves artifacts... Compiling 2 files (.ex) Generated nerves_compatibility_test app