text:
pyzeebe installation fails on Mac OS X Catalina (10.15.7) due to dependency on grpcio 1.32.0

Describe the bug
pip install pyzeebe==2.2.2 on Mac OS X Catalina (10.15.7) fails due to an incompatibility between grpcio 1.32.0 and GCC:
https://github.com/grpc/grpc/issues/25060#issuecomment-758270979
Interestingly, pip installs the latest stable version of grpcio (1.34.0) without issue.
I'm using the following dependencies:

pip: 20.2.3
python: 3.9.1
gcc:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

To Reproduce
Steps to reproduce the behavior:

Run pip install pyzeebe==2.2.2 on Mac OS X Catalina (10.15.7) with the exact dependencies specified above.

Expected behavior
Installation via pip should succeed without error.
Additional context
I notice that the grpcio dependency was removed 25 days ago:
https://github.com/JonatanMartens/pyzeebe/pull/91/files
Can we please release a new version of pyzeebe which includes this commit? That should unblock us.
Thank you so much for taking the time to maintain this useful library!

Unfortunately, I now see that zeebe-grpc also depends on version 1.32.0 of grpcio:
https://gitlab.com/stephane.ludwig/zeebe_python_grpc/-/blob/master/requirements_dev.txt
I'll raise the same issue over there.

Unfortunately, I now see that zeebe-grpc also depends on version 1.32.0 of grpcio:
https://gitlab.com/stephane.ludwig/zeebe_python_grpc/-/blob/master/requirements_dev.txt
I'll raise the same issue over there.

Actually, it appears that the latest version of zeebe-grpc (0.25.1.0) depends on version 1.33.2 of grpc:
https://gitlab.com/stephane.ludwig/zeebe_python_grpc/-/blob/master/setup.py#L17
I had no trouble pip installing this version of zeebe-grpc onto my machine.
So it appears that pinning to version 0.25.1.0 of zeebe-grpc should fix this issue.

Actually, it appears that the latest version of zeebe-grpc (0.25.1.0) depends on version 1.33.2 of grpc:
https://gitlab.com/stephane.ludwig/zeebe_python_grpc/-/blob/master/setup.py#L17
I had no trouble pip installing this version of zeebe-grpc onto my machine.
So it appears that pinning to version 0.25.1.0 of zeebe-grpc should fix this issue.

Hey @StevenDas-Tomo, thanks for bringing this to our attention.
Version 2.2.3 was just released, so I'm closing this.
Please feel free to reopen this issue if you encounter any more problems.

Hey @StevenDas-Tomo, thanks for bringing this to our attention.
Version 2.2.3 was just released, so I'm closing this.
Please feel free to reopen this issue if you encounter any more problems.

I managed to reproduce this with pyzeebe==2.2.2 + Python 3.9 - not 3.8 or 3.7 however (interesting). It's resolved with pyzeebe==2.2.3. 🙂
I think this issue is related: https://gitlab.com/stephane.ludwig/zeebe_python_grpc/-/issues/4 - as it will allow the user to specify the grpc version (or simply resolve to latest, which wouldn't have caused this). I gave it a thumb-up, hopefully it will be prioritized soon.

I managed to reproduce this with pyzeebe==2.2.2 + Python 3.9 - not 3.8 or 3.7 however (interesting). It's resolved with pyzeebe==2.2.3. 🙂
I think this issue is related: https://gitlab.com/stephane.ludwig/zeebe_python_grpc/-/issues/4 - as it will allow the user to specify the grpc version (or simply resolve to latest, which wouldn't have caused this). I gave it a thumb-up, hopefully it will be prioritized soon.

Thank you so much for the fast turnaround, @JonatanMartens!
I can confirm that version 2.2.3 of pyzeebe unblocks me.

Thank you so much for the fast turnaround, @JonatanMartens!
I can confirm that version 2.2.3 of pyzeebe unblocks me.

authors: JonatanMartens StevenDas-Tomo kbakk

repo: JonatanMartens/pyzeebe


text:
Panic when joystick has no buttons

When using my Saitek Cessna Rudder Pedals the project panics at
https://github.com/Jonesey13/multiinput-rust/blob/master/src/rawinput.rs#L274
Thrustmaster Warthog Joystick and Throtte work both fine. I suspect it happens because the pedals have no buttons, only axis.
with the following log:
PS C:\Users\Dev\Documents\RustProjects\multiinput-rust> cargo run --example apitest
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target\debug\examples\apitest.exe`
thread '<unnamed>' panicked at 'assertion failed: HidP_GetButtonCaps(HidP_Input,
                   p_button_caps.as_mut_ptr() as PHIDP_BUTTON_CAPS,
                   &mut caps_length,
                   preparsed_data.as_mut_ptr() as PHIDP_PREPARSED_DATA) ==
    HIDP_STATUS_SUCCESS', src\rawinput.rs:274:13
note: Run with `RUST_BACKTRACE=1` for a backtrace.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: RecvError', libcore\result.rs:945:5
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', libcore\result.rs:945:5
stack backtrace:
   0:     0x7ff7abafa29a - std::sys::windows::backtrace::unwind_backtrace
                               at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:65
   1:     0x7ff7abb00aff - std::sys_common::backtrace::_print
                               at C:\projects\rust\src\libstd\sys_common\backtrace.rs:71
   2:     0x7ff7abb00aff - std::sys_common::backtrace::print
                               at C:\projects\rust\src\libstd\sys_common\backtrace.rs:59
   3:     0x7ff7abaf572e - std::panicking::default_hook::{{closure}}
                               at C:\projects\rust\src\libstd\panicking.rs:207
   4:     0x7ff7abaf53da - std::panicking::default_hook
                               at C:\projects\rust\src\libstd\panicking.rs:223
   5:     0x7ff7abaf5cee - std::panicking::rust_panic_with_hook
                               at C:\projects\rust\src\libstd\panicking.rs:402
   6:     0x7ff7abaf5a9f - std::panicking::begin_panic_fmt
                               at C:\projects\rust\src\libstd\panicking.rs:349
   7:     0x7ff7abaf59c1 - std::panicking::rust_begin_panic
                               at C:\projects\rust\src\libstd\panicking.rs:325
   8:     0x7ff7abb0627c - core::panicking::panic_fmt
                               at C:\projects\rust\src\libcore\panicking.rs:72
   9:     0x7ff7aba894c2 - core::result::unwrap_failed<std::sync::mpsc::SendError<multiinput::manager::Command>>
                               at C:\projects\rust\src\libcore\macros.rs:26
  10:     0x7ff7aba86e29 - core::result::Result<(), std::sync::mpsc::SendError<multiinput::manager::Command>>::unwrap<(),std::sync::mpsc::SendError<multiinput::manager::Command>>
                               at C:\projects\rust\src\libcore\result.rs:782
  11:     0x7ff7aba786d0 - multiinput::manager::{{impl}}::drop
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\src\manager.rs:140
  12:     0x7ff7aba661ae - core::ptr::drop_in_place<multiinput::manager::RawInputManager>
                               at C:\projects\rust\src\libcore\ptr.rs:59
  13:     0x7ff7aba61279 - apitest::main
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\examples\apitest.rs:25
  14:     0x7ffe0406c8bf - _C_specific_handler
  15:     0x7ffe04062be6 - _TypeMatch
  16:     0x7ffe04061ee2 - is_exception_typeof
  17:     0x7ffe0406bfaf - _CxxFrameHandler3
  18:     0x7ffe2484513c - _chkstk
  19:     0x7ffe247be524 - RtlUnwindEx
  20:     0x7ffe0406c358 - FindAndUnlinkFrame
  21:     0x7ffe04062d38 - _TypeMatch
  22:     0x7ffe040623dd - is_exception_typeof
  23:     0x7ffe04061fde - is_exception_typeof
  24:     0x7ffe0406bfaf - _CxxFrameHandler3
  25:     0x7ffe248450bc - _chkstk
  26:     0x7ffe247bd277 - RtlWalkFrameChain
  27:     0x7ffe247bb6e2 - RtlRaiseException
  28:     0x7ffe20d84007 - RaiseException
  29:     0x7ffe040646e1 - CxxThrowException
  30:     0x7ff7abb04b6b - panic_unwind::imp::panic
                               at C:\projects\rust\src\libpanic_unwind\seh.rs:291
  31:     0x7ff7abb04b6b - panic_unwind::__rust_start_panic
                               at C:\projects\rust\src\libpanic_unwind\lib.rs:118
  32:     0x7ff7abaf5e0e - std::panicking::rust_panic
                               at C:\projects\rust\src\libstd\panicking.rs:433
  33:     0x7ff7abaf5dbb - std::panicking::rust_panic_with_hook
                               at C:\projects\rust\src\libstd\panicking.rs:418
  34:     0x7ff7abaf5a9f - std::panicking::begin_panic_fmt
                               at C:\projects\rust\src\libstd\panicking.rs:349
  35:     0x7ff7abaf59c1 - std::panicking::rust_begin_panic
                               at C:\projects\rust\src\libstd\panicking.rs:325
  36:     0x7ff7abb0627c - core::panicking::panic_fmt
                               at C:\projects\rust\src\libcore\panicking.rs:72
  37:     0x7ff7aba895e5 - core::result::unwrap_failed<std::sync::mpsc::RecvError>
                               at C:\projects\rust\src\libcore\macros.rs:26
  38:     0x7ff7aba87172 - core::result::Result<core::option::Option<multiinput::event::RawEvent>, std::sync::mpsc::RecvError>::unwrap<core::option::Option<multiinput::event::RawEvent>,std::sync::mpsc::RecvError>
                               at C:\projects\rust\src\libcore\result.rs:782
  39:     0x7ff7aba785bf - multiinput::manager::RawInputManager::register_devices
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\src\manager.rs:111
  40:     0x7ff7aba61063 - apitest::main
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\examples\apitest.rs:6
  41:     0x7ff7aba69d53 - std::rt::lang_start::{{closure}}<()>
                               at C:\projects\rust\src\libstd\rt.rs:74
  42:     0x7ff7abaf58fc - std::rt::lang_start_internal::{{closure}}
                               at C:\projects\rust\src\libstd\rt.rs:59
  43:     0x7ff7abaf58fc - std::panicking::try::do_call<closure,i32>
                               at C:\projects\rust\src\libstd\panicking.rs:306
  44:     0x7ff7abb04a91 - panic_unwind::__rust_maybe_catch_panic
                               at C:\projects\rust\src\libpanic_unwind\lib.rs:102
  45:     0x7ff7abaf9f02 - std::panicking::try
                               at C:\projects\rust\src\libstd\panicking.rs:285
  46:     0x7ff7abaf9f02 - std::panic::catch_unwind
                               at C:\projects\rust\src\libstd\panic.rs:361
  47:     0x7ff7abaf9f02 - std::rt::lang_start_internal
                               at C:\projects\rust\src\libstd\rt.rs:58
  48:     0x7ff7aba69d23 - std::rt::lang_start<()>
                               at C:\projects\rust\src\libstd\rt.rs:74
  49:     0x7ff7aba612b6 - main
  50:     0x7ff7abb110f0 - invoke_main
                               at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:64
  51:     0x7ff7abb110f0 - __scrt_common_main_seh
                               at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253
  52:     0x7ffe22551fe3 - BaseThreadInitThunk
  53:     0x7ffe2480f060 - RtlUserThreadStart
thread panicked while panicking. aborting.
error: process didn't exit successfully: `target\debug\examples\apitest.exe` (exit code: 3221225501)

Yes this can hopefully be fixed by skipping this logic whenever caps_length == 0 (cheers for the suggestion!)

Pushed a new version to cargo. Let me know if this fixes the error for you!

Just tested it. Not sure if this error is related, but it only happens on the latest master with the rudder pedals (which don't have buttons) when I move any axis.

$ RUST_BACKTRACE=1 cargo run --example apitest
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target\debug\examples\apitest.exe`
Mice:
["\\\\?\\HID#VID_093A&PID_2521#6&2c46c546&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}\u{0}"]
None
["\\\\?\\HID#VID_04D9&PID_0141&MI_02&Col03#7&2b29a21e&0&0002#{378de44c-56ef-11d1-bc8c-00a0c91405dd}\u{0}"]
None
Keyboards:
["\\\\?\\HID#VID_04D9&PID_0141&MI_02&Col04#7&2b29a21e&0&0003#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}\u{0}"]
None
["\\\\?\\HID#VID_04D9&PID_0141&MI_00#7&15f24e50&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}\u{0}"]
None
Hids:
["\\\\?\\HID#VID_06A3&PID_0765#6&54e22ef&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\u{0}"]
None
thread '<unnamed>' panicked at 'index out of bounds: the len is 0 but the index is 0', C:\projects\rust\src\libcore\slice\mod.rs:865:10
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::windows::backtrace::unwind_backtrace
             at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:65
   1: std::sys_common::backtrace::_print
             at C:\projects\rust\src\libstd\sys_common\backtrace.rs:71
   2: std::sys_common::backtrace::print
             at C:\projects\rust\src\libstd\sys_common\backtrace.rs:59
   3: std::panicking::default_hook::{{closure}}
             at C:\projects\rust\src\libstd\panicking.rs:207
   4: std::panicking::default_hook
             at C:\projects\rust\src\libstd\panicking.rs:223
   5: std::panicking::rust_panic_with_hook
             at C:\projects\rust\src\libstd\panicking.rs:402
   6: std::panicking::begin_panic_fmt
             at C:\projects\rust\src\libstd\panicking.rs:349
   7: std::panicking::rust_begin_panic
             at C:\projects\rust\src\libstd\panicking.rs:325
   8: core::panicking::panic_fmt
             at C:\projects\rust\src\libcore\panicking.rs:72
   9: core::panicking::panic_bounds_check
             at C:\projects\rust\src\libcore\panicking.rs:58
  10: core::slice::{{impl}}::index<winapi::shared::hidpi::HIDP_BUTTON_CAPS>
             at C:\projects\rust\src\libcore\slice\mod.rs:865
  11: core::slice::{{impl}}::index<winapi::shared::hidpi::HIDP_BUTTON_CAPS,usize>
             at C:\projects\rust\src\libcore\slice\mod.rs:767
  12: alloc::vec::{{impl}}::index<winapi::shared::hidpi::HIDP_BUTTON_CAPS,usize>
             at C:\projects\rust\src\liballoc\vec.rs:1648
  13: multiinput::joystick::process_joystick_data
             at .\src\joystick.rs:20
  14: multiinput::rawinput::read_input_buffer
             at .\src\rawinput.rs:78
  15: multiinput::rawinput::get_event
             at .\src\rawinput.rs:90
  16: multiinput::manager::{{impl}}::new::{{closure}}
             at .\src\manager.rs:88
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: RecvError', libcore\result.rs:945:5
stack backtrace:
   0: std::sys::windows::backtrace::unwind_backtrace
             at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:65
   1: std::sys_common::backtrace::_print
             at C:\projects\rust\src\libstd\sys_common\backtrace.rs:71
   2: std::sys_common::backtrace::print
             at C:\projects\rust\src\libstd\sys_common\backtrace.rs:59
   3: std::panicking::default_hook::{{closure}}
             at C:\projects\rust\src\libstd\panicking.rs:207
   4: std::panicking::default_hook
             at C:\projects\rust\src\libstd\panicking.rs:223
   5: std::panicking::rust_panic_with_hook
             at C:\projects\rust\src\libstd\panicking.rs:402
   6: std::panicking::begin_panic_fmt
             at C:\projects\rust\src\libstd\panicking.rs:349
   7: std::panicking::rust_begin_panic
             at C:\projects\rust\src\libstd\panicking.rs:325
   8: core::panicking::panic_fmt
             at C:\projects\rust\src\libcore\panicking.rs:72
   9: core::result::unwrap_failed<std::sync::mpsc::RecvError>
             at C:\projects\rust\src\libcore\macros.rs:26
  10: core::result::Result<core::option::Option<multiinput::event::RawEvent>, std::sync::mpsc::RecvError>::unwrap<core::option::Option<multiinput::event::RawEvent>,std::sync::mpsc::RecvError>
             at C:\projects\rust\src\libcore\result.rs:782
  11: multiinput::manager::RawInputManager::get_event
             at .\src\manager.rs:117
  12: apitest::main
             at .\examples\apitest.rs:11
  13: std::rt::lang_start::{{closure}}<()>
             at C:\projects\rust\src\libstd\rt.rs:74
  14: std::rt::lang_start_internal::{{closure}}
             at C:\projects\rust\src\libstd\rt.rs:59
  15: std::panicking::try::do_call<closure,i32>
             at C:\projects\rust\src\libstd\panicking.rs:306
  16: panic_unwind::__rust_maybe_catch_panic
             at C:\projects\rust\src\libpanic_unwind\lib.rs:102
  17: std::panicking::try
             at C:\projects\rust\src\libstd\panicking.rs:285
  18: std::panic::catch_unwind
             at C:\projects\rust\src\libstd\panic.rs:361
  19: std::rt::lang_start_internal
             at C:\projects\rust\src\libstd\rt.rs:58
  20: std::rt::lang_start<()>
             at C:\projects\rust\src\libstd\rt.rs:74
  21: main
  22: invoke_main
             at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:64
  23: __scrt_common_main_seh
             at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253
  24: BaseThreadInitThunk
  25: RtlUserThreadStart
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', libcore\result.rs:945:5
stack backtrace:
   0:     0x7ff7ad87a30a - std::sys::windows::backtrace::unwind_backtrace
                               at C:\projects\rust\src\libstd\sys\windows\backtrace\mod.rs:65
   1:     0x7ff7ad880b6f - std::sys_common::backtrace::_print
                               at C:\projects\rust\src\libstd\sys_common\backtrace.rs:71
   2:     0x7ff7ad880b6f - std::sys_common::backtrace::print
                               at C:\projects\rust\src\libstd\sys_common\backtrace.rs:59
   3:     0x7ff7ad87579e - std::panicking::default_hook::{{closure}}
                               at C:\projects\rust\src\libstd\panicking.rs:207
   4:     0x7ff7ad87544a - std::panicking::default_hook
                               at C:\projects\rust\src\libstd\panicking.rs:223
   5:     0x7ff7ad875d5e - std::panicking::rust_panic_with_hook
                               at C:\projects\rust\src\libstd\panicking.rs:402
   6:     0x7ff7ad875b0f - std::panicking::begin_panic_fmt
                               at C:\projects\rust\src\libstd\panicking.rs:349
   7:     0x7ff7ad875a31 - std::panicking::rust_begin_panic
                               at C:\projects\rust\src\libstd\panicking.rs:325
   8:     0x7ff7ad8862ec - core::panicking::panic_fmt
                               at C:\projects\rust\src\libcore\panicking.rs:72
   9:     0x7ff7ad808ec2 - core::result::unwrap_failed<std::sync::mpsc::SendError<multiinput::manager::Command>>
                               at C:\projects\rust\src\libcore\macros.rs:26
  10:     0x7ff7ad806ad9 - core::result::Result<(), std::sync::mpsc::SendError<multiinput::manager::Command>>::unwrap<(),std::sync::mpsc::SendError<multiinput::manager::Command>>
                               at C:\projects\rust\src\libcore\result.rs:782
  11:     0x7ff7ad7f86d0 - multiinput::manager::{{impl}}::drop
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\src\manager.rs:140
  12:     0x7ff7ad7e644e - core::ptr::drop_in_place<multiinput::manager::RawInputManager>
                               at C:\projects\rust\src\libcore\ptr.rs:59
  13:     0x7ff7ad7e1279 - apitest::main
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\examples\apitest.rs:25
  14:     0x7ffa9335c8bf - _C_specific_handler
  15:     0x7ffa93352be6 - _TypeMatch
  16:     0x7ffa93351ee2 - is_exception_typeof
  17:     0x7ffa9335bfaf - _CxxFrameHandler3
  18:     0x7ffaa552513c - _chkstk
  19:     0x7ffaa549e524 - RtlUnwindEx
  20:     0x7ffa9335c358 - FindAndUnlinkFrame
  21:     0x7ffa93352d38 - _TypeMatch
  22:     0x7ffa933523dd - is_exception_typeof
  23:     0x7ffa93351fde - is_exception_typeof
  24:     0x7ffa9335bfaf - _CxxFrameHandler3
  25:     0x7ffaa55250bc - _chkstk
  26:     0x7ffaa549d277 - RtlWalkFrameChain
  27:     0x7ffaa549b6e2 - RtlRaiseException
  28:     0x7ffaa1bb4007 - RaiseException
  29:     0x7ffa933546e1 - CxxThrowException
  30:     0x7ff7ad884bdb - panic_unwind::imp::panic
                               at C:\projects\rust\src\libpanic_unwind\seh.rs:291
  31:     0x7ff7ad884bdb - panic_unwind::__rust_start_panic
                               at C:\projects\rust\src\libpanic_unwind\lib.rs:118
  32:     0x7ff7ad875e7e - std::panicking::rust_panic
                               at C:\projects\rust\src\libstd\panicking.rs:433
  33:     0x7ff7ad875e2b - std::panicking::rust_panic_with_hook
                               at C:\projects\rust\src\libstd\panicking.rs:418
  34:     0x7ff7ad875b0f - std::panicking::begin_panic_fmt
                               at C:\projects\rust\src\libstd\panicking.rs:349
  35:     0x7ff7ad875a31 - std::panicking::rust_begin_panic
                               at C:\projects\rust\src\libstd\panicking.rs:325
  36:     0x7ff7ad8862ec - core::panicking::panic_fmt
                               at C:\projects\rust\src\libcore\panicking.rs:72
  37:     0x7ff7ad809125 - core::result::unwrap_failed<std::sync::mpsc::RecvError>
                               at C:\projects\rust\src\libcore\macros.rs:26
  38:     0x7ff7ad8068c2 - core::result::Result<core::option::Option<multiinput::event::RawEvent>, std::sync::mpsc::RecvError>::unwrap<core::option::Option<multiinput::event::RawEvent>,std::sync::mpsc::RecvError>
                               at C:\projects\rust\src\libcore\result.rs:782
  39:     0x7ff7ad7f8631 - multiinput::manager::RawInputManager::get_event
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\src\manager.rs:117
  40:     0x7ff7ad7e10b4 - apitest::main
                               at C:\Users\Dev\Documents\RustProjects\multiinput-rust\examples\apitest.rs:11
  41:     0x7ff7ad7e9d53 - std::rt::lang_start::{{closure}}<()>
                               at C:\projects\rust\src\libstd\rt.rs:74
  42:     0x7ff7ad87596c - std::rt::lang_start_internal::{{closure}}
                               at C:\projects\rust\src\libstd\rt.rs:59
  43:     0x7ff7ad87596c - std::panicking::try::do_call<closure,i32>
                               at C:\projects\rust\src\libstd\panicking.rs:306
  44:     0x7ff7ad884b01 - panic_unwind::__rust_maybe_catch_panic
                               at C:\projects\rust\src\libpanic_unwind\lib.rs:102
  45:     0x7ff7ad879f72 - std::panicking::try
                               at C:\projects\rust\src\libstd\panicking.rs:285
  46:     0x7ff7ad879f72 - std::panic::catch_unwind
                               at C:\projects\rust\src\libstd\panic.rs:361
  47:     0x7ff7ad879f72 - std::rt::lang_start_internal
                               at C:\projects\rust\src\libstd\rt.rs:58
  48:     0x7ff7ad7e9d23 - std::rt::lang_start<()>
                               at C:\projects\rust\src\libstd\rt.rs:74
  49:     0x7ff7ad7e12b6 - main
  50:     0x7ff7ad891160 - invoke_main
                               at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:64
  51:     0x7ff7ad891160 - __scrt_common_main_seh
                               at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253
  52:     0x7ffaa5101fe3 - BaseThreadInitThunk
  53:     0x7ffaa54ef060 - RtlUserThreadStart
thread panicked while panicking. aborting.
error: process didn't exit successfully: `target\debug\examples\apitest.exe` (exit code: 3221225501)
Illegal instruction

Ah that's somewhere else that assumes buttons exist! Looks easy to fix...

OK I've pushed another fix (let's hope there's not something else I've missed!)

Yeah that one did it! Thank you so much for the quick fixed, this project needs way more exposure!

source: gharchive/issue

license: mit

license_type: permissive

license_source: bigquery


text:
No admin page

There is no admin page aside from the basic User admin
Go to http://localhost:8000/admin/
You should be able to edit the various tables that are part of the database. Simply needs implementing!

It's better just done by editing models.py and running a migration, surely?

Admin doesn't let you change tables, it lets you edit the data (more-ish easily).
It's super useful especially for fields that you might be hiding, or want to change relationships, yadayada

Sounds good, submit a PR and link it to this issue and I'll take a look :)

authors: CBindahouse Jongmassey

repo: Jongmassey/ubuc-dev

license: MIT

license_source: github-api


text:
🛑 JonnyIsland Website is down

In 11b067f, JonnyIsland Website (https://jonnyisland.net) was down:

HTTP code: 0
Response time: 0 ms

Resolved: JonnyIsland Website is back up in 7bc0eb0 after 45 minutes.

repo: JonnyIslandNetwork/status-page


text:
🐛 Bug: Polyfill parseArgs for Node < 20

Bug Report Checklist

[X] I have tried restarting my IDE and the issue persists.
[X] I have pulled the latest main branch of the repository.
[X] I have searched for related issues and found none that matched my issue.

Expected
Running npx tidelift-me-up on Node v18.2.0 should work.
Actual
import { parseArgs } from "node:util";
         ^^^^^^^^^
SyntaxError: The requested module 'node:util' does not provide an export named 'parseArgs'

Thanks @jfmengels for reporting! fosstodon.org/@jfmengels@mastodon.cloud/110564190480083424
Additional Info
Deja vu! https://github.com/JoshuaKGoldberg/should-semantic-release/issues/55 cc @cakeinpanic

@all-contributors please add @joshuakgoldberg for bug.

🤖 Beep boop! This comment was added automatically by all-contributors-auto-action.
Not all contributions can be detected from Git & GitHub alone. Please comment any missing contribution types this bot missed.
...and of course, thank you for contributing! 💙

repo: JoshuaKGoldberg/tidelift-me-up


text:
feat: add flow node type guards

PR Checklist

[x] Addresses an existing open issue: fixes #248
[ ] That issue was marked as status: accepting prs
[x] Steps in CONTRIBUTING.md were taken

Overview
Adds type guards for flow nodes.

Closing pending #248 to keep the queue small

source: gharchive/pull-request

authors: JoshuaKGoldberg RebeccaStevens

repo: JoshuaKGoldberg/ts-api-utils


text:
Can't automatic renew certificates

got error logs like this
Creating/renewal www.semimajoraxis.com certificates... (www.semimajoraxis.com)
2017-10-11 18:24:29,789:INFO:simp_le:1213: Generating new account key
2017-10-11 18:26:39,077:ERROR:acme.challenges:311: Unable to reach http://www.semimajoraxis.com/.well-known/acme-challenge/CTehfImmbm55NlFJ5UnhBkE_EEr-j2_Ljh6QI405aCU: HTTPConnectionPool(host='www.semimajoraxis.com', port=80): Max retries exceeded with url: /.well-known/acme-challenge/CTehfImmbm55NlFJ5UnhBkE_EEr-j2_Ljh6QI405aCU (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fddb4368190>: Failed to establish a new connection: [Errno 110] Operation timed out',))
2017-10-11 18:26:39,082:WARNING:simp_le:1304: www.semimajoraxis.com was not successfully self-verified. CA is likely to fail as well!
2017-10-11 18:26:39,221:INFO:simp_le:1314: Generating new certificate private key
2017-10-11 18:26:41,132:ERROR:simp_le:1272: CA marked some of the authorizations as invalid, which likely means it could not access http://example.com/.well-known/acme-challenge/X. Did you set correct path in -d example.com:path or --default_root? Is there a warning log entry about unsuccessful self-verification? Are all your domains accessible from the internet? Failing authorizations: https://acme-v01.api.letsencrypt.org/acme/authz/-WpaCqooC7HziH3jb_foG_xSy_oYmmeEce72cc7tKa4
Challenge validation has failed, see error log.

executing curl http://www.semimajoraxis.com/.well-known/acme-challenge/CTehfImmbm55NlFJ5UnhBkE_EEr-j2_Ljh6QI405aCU -v
works well as intended, output is shown below
curl http://www.semimajoraxis.com/.well-known/acme-challenge/CTehfImmbm55NlFJ5UnhBkE_EEr-j2_Ljh6QI405aCU -v
*   Trying 107.170.194.132...
* Connected to www.semimajoraxis.com (107.170.194.132) port 80 (#0)
> GET /.well-known/acme-challenge/CTehfImmbm55NlFJ5UnhBkE_EEr-j2_Ljh6QI405aCU HTTP/1.1
> Host: www.semimajoraxis.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.13.5
< Date: Thu, 12 Oct 2017 01:17:25 GMT
< Content-Type: application/octet-stream
< Content-Length: 87
< Last-Modified: Wed, 11 Oct 2017 18:24:31 GMT
< Connection: keep-alive
< ETag: "59de61df-57"
< Accept-Ranges: bytes
<
* Connection #0 to host www.semimajoraxis.com left intact
CTehfImmbm55NlFJ5UnhBkE_EEr-j2_Ljh6QI405aCU.NhO8DKdtahIVYrcuddIpzgbebx5RWK9HfMg-u5Vjl7E

degraded http site works aswell,so likely an cert issuing problem

Same problem here +1

@ArtemisSaber probable CAA record issue with your DNS provider: Letsencrypt have to check for a CAA record on your domain before issuing a certificate and can't issue if they get a SERVFAIL from you DNS provider.
https://unboundtest.com allows you to test for this and it seems your DNS provider have this issue.
Query results for CAA semimajoraxis.com

Response:
;; opcode: QUERY, status: SERVFAIL, id: 23720
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;semimajoraxis.com.	IN	 CAA

I'm getting this same issue (where it isn't auto-updating the cert) and my domain is returning no errors:
Query results for CAA krakenreview.civicplus.com
Response:
;; opcode: QUERY, status: NOERROR, id: 42237
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;krakenreview.civicplus.com.	IN	 CAA
;; ANSWER SECTION:
krakenreview.civicplus.com.	900	IN	CNAME	krakenreview.civicplus.com.cdn.cloudflare.net.
;; AUTHORITY SECTION:
cloudflare.net.	0	IN	SOA	ns1.cloudflare.net. dns.cloudflare.com. 2025983728 10000 2400 604800 3600

Getting the same error, while unboundtest.com returns NOERROR. Only difference compared to the response above is that it returns ANSWER: 0 and there is no ANSWER SECTION.

In my same there something irrelevant that was bringing down the proxy's nginx container so Let's Encrypt couldn't contact the service and therefore wouldn't issue the certs.

No activity for 90+ days, closing.

authors: ArtemisSaber Avd6977 buchdag krystalcode mindrunner


text:
problems adding a node-express rest api

I have an app running on port 3000 which is https://www.example.com
then i have an api running on 2030 which is https://www.api.example.com
the problem is I am unable to reach my routes
one of my routes being user
ie: https://www.api.example.com/users = should return JSON list of users.
I get no response and the server times-out.
I tried adding a proxy_pass in the vhost section but then https://www.api.example.com doesn't respond.
I'm by no means a NGINX expert in fact quite the opposite so any help with this would be much appreciated.
My main question is can I add some code to VHOST to solve my problem,
	ex: in vhost dir - www.api.example.com (tried and failed experiment)

	location /users {

		proxy_pass: www.api.examples.com/users
	}

Hi.
This project (JrCs/docker-letsencrypt-nginx-proxy-companion) "only" purpose is to:

enable the automatic creation of certificates from containers env var.
put them in the right place with the right name so they can be used by nginx-proxy docker-gen template.
reload the nginx proxy when needed (cert creation or renewal).

What you want to achieve depends entirely on the jwilder/nginx-proxy project, which does the actual proxying and is maintained by different peoples.
We only deal with issues related to letsencrypt-nginx-proxy-companion, so please submit your nginx-proxy issues directly to the nginx-proxy repo.

authors: buchdag tonysworking


text:
_posts/0000-01-02-JrodThaNinja.md

stuff and things.

stuff and things

repo: JrodThaNinja/github-slideshow


text:
c0gBbiUZe6k requires login to view

i have this error
c0gBbiUZe6k requires login to view
what to do now?

It still happening in 6.9.2

2024-08-07T02:13:53.803Z
Retry failed ozTWlCoI5BE requires login to viewTraceback (most recent call last):

2024-08-07T02:13:53.803Z
File "/var/task/pytubefix/main.py", line 612, in title

2024-08-07T02:13:53.803Z
self._title = self.vid_info['videoDetails']['title']

2024-08-07T02:13:53.803Z
KeyError: 'videoDetails'

2024-08-07T02:13:53.803Z
During handling of the above exception, another exception occurred:

2024-08-07T02:13:53.803Z
Traceback (most recent call last):

2024-08-07T02:13:53.803Z
File "/var/task/handler.py", line 577, in entry

2024-08-07T02:13:53.803Z
title, video_length, description = get_title(

2024-08-07T02:13:53.803Z
File "/var/task/utils/misc.py", line 15, in wrapper

2024-08-07T02:13:53.803Z
return func(*args, **kwargs)

2024-08-07T02:13:53.803Z
File "/var/task/handler.py", line 104, in get_title

2024-08-07T02:13:53.803Z
return yt.title, yt.length, yt.description

2024-08-07T02:13:53.803Z
File "/var/task/pytubefix/main.py", line 616, in title

I am facing similar issue

Similar issue

Same problem

same problem

yt = YouTube(url, use_oauth=True, allow_oauth_cache=True, on_progress_callback = on_progress)

Good day.
I'm also getting this error as the others but the actual error coming from Youtube/Google is
{'responseContext': {'visitorData': 'Cgs4QkpLcTVJOS1OcyjVis61BjIiCgJCRxIcEhgSFgsMDg8QERITFBUWFxgZGhscHR4fICEgXQ%3D%3D', 'maxAgeSeconds': 0}, 'playabilityStatus': {'status': 'LOGIN_REQUIRED', 'reason': 'Sign in to confirm you’re not a bot'}, 'trackingParams': 'CAAQu2kiEwic-IiqjOOHAxWy6UIFHawtCfA=', 'adBreakHeartbeatParams': 'Q0FBJTNE'}
Regards

what code are you using to test?

I'm using s = Search(query)
then call s.videos
loop over this then call
s.get_next_results()
when all is done and i'm getting video.title from each Youtube object and this when the error happens.
Regards

the same problem
File "/usr/local/lib/python3.10/site-packages/pytubefix/main.py", line 616, in title
self.check_availability()
File "/usr/local/lib/python3.10/site-packages/pytubefix/main.py", line 310, in check_availability
raise exceptions.LoginRequired(video_id=self.video_id)
pytubefix.exceptions.LoginRequired: M7-h3FO-KKo requires login to view

The same problem
(vscode-notebook-cell:?execution_count=7&line=12)
10 yt = YouTube(data["youtube_url"])
11 video_id = parse_video_id(data["youtube_url"])
---> 12 video_stream = yt.streams.filter(progressive=True, file_extension='mp4', res="360p").first()
13 save_file = os.path.join('peterVideo', video_id+'.mp4')
14 video_stream.download(filename=save_file)
File [d:\anaconda3\envs\geo\lib\site-packages\pytubefix_main_.py:552](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:552), in YouTube.streams(self)
[546](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:546) @property
[547](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:547) def streams(self) -> StreamQuery:
[548](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:548)     """Interface to query both adaptive (DASH) and progressive streams.
[549](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:549)
[550](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:550)     :rtype: :class:StreamQuery <StreamQuery>.
[551](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:551)     """
--> [552](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:552)     self.check_availability()
[553](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:553)     return StreamQuery(self.fmt_streams)
File [d:\anaconda3\envs\geo\lib\site-packages\pytubefix_main_.py:310](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:310), in YouTube.check_availability(self)
[308](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:308)         raise exceptions.AgeRestrictedError(video_id=self.video_id)
[309](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:309)     else:
--> [310](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:310)         raise exceptions.LoginRequired(video_id=self.video_id)
[312](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:312) elif status == 'AGE_CHECK_REQUIRED':
[313](file:///D:/anaconda3/envs/geo/lib/site-packages/pytubefix/main.py:313)     if self.use_oauth:
LoginRequired: 1c3XwxTTcgA requires login to view

yt = YouTube(url, use_oauth=True, allow_oauth_cache=True, on_progress_callback = on_progress)

Yes! it works out on me. It requires you to connect Youtube with Youe google account ,and the problem "requires login to view"  will be fixed

Problem here is when using Search() class the YouTube() class is called internally to create the YouTube objects so then would need to update pytubefix/contrib/search.py module under
def fetch_and_parse(self, continuation=None):
# Get videos results
if 'videoRenderer' in video_details:
videos.append(YouTube(f"https://www.youtube.com/watch?v={video_details['videoRenderer']['videoId']}"))
to use_oauth=True, allow_oauth_cache=True

yt = YouTube(url, use_oauth=True, allow_oauth_cache=True, on_progress_callback = on_progress)

Is this the solution? What was the cause of the issue and how does this solution solve it?
FYI I am running my code on AWS Lambda function

I did try the oauth but haven't tested enough to see if the if I still get login errors.
So this thing with YouTube login to make sure you are not a bot is newish because after writing my app code it's only now in last few days that I got this issue.
After using oauth once then I do need to remove or set oauth back to false otherwise it keeps asking to login with the code.
Now I just need to come up with a more elegant way to handle the oauth prompt in pyside6 app.

I have saame problem but i can ot auth because i use pytube with docker

This issue is still happening even when oauth was used.
{'responseContext': {'visitorData': 'Cgsxc0hqRmVodmJrMCjOnte1BjIiCgJCRxIcEhgSFgsMDg8QERITFBUWFxgZGhscHR4fICEgGw%3D%3D', 'maxAgeSeconds': 0}, 'playabilityStatus': {'status': 'LOGIN_REQUIRED', 'reason': 'Sign in to confirm you’re not a bot'}, 'trackingParams': 'CAAQu2kiEwjH8OmTu-eHAxUy5kIFHVziC_A=', 'adBreakHeartbeatParams': 'Q0FBJTNE'}

Same problem, haven't found a solution yet, I am also running it in a docker container in AWS Lambda....

for those running this on lambda, I got it working by getting token data from google oauth playground

Go to the Google OAuth 2.0 Playground (https://developers.google.com/oauthplayground/)
On the left side, scroll down and select "YouTube Data API v3" under the YouTube APIs section.
Select the scopes you need, "https://www.googleapis.com/auth/youtube.readonly" for read-only access.
Click the "Authorize APIs" button.

then create the token file before you instantiate YouTube
    data = {
        "access_token": os.getenv("access_token"),
        "refresh_token": os.getenv("refresh_token"),
        "expires": 1823266077 # some number in the future so it doesn't try refreshing the bearer token
    }
    with open("/tmp/token.json", "w") as f: # make sure you write to /tmp for lambda
        json.dump(data, f)

then specify the token_file parameter for YouTube
yt = YouTube(
        url, use_oauth=True, allow_oauth_cache=True, token_file="/tmp/token.json"
)

take a look at #170

YouTube
I used the method you provided, and it prompted 403

token_file

Tried out this one and got HTTP Error 401: Unauthorized

authors: JuanBindez Mak5er Morteza820 Win-commit ablackoff buffalobill571 danielfabriq giklepach ohs2033 robochopbg rowlinsonmike tanzhengyang yannickErp

repo: JuanBindez/pytubefix


text:
I have a problem with using SOCKS5 proxies in pytubefix.

I have got this error: Произошла ошибка: <urlopen error [WinError 10053] Программа на вашем хост-компьютере разорвала установленное подключение>
This error is coming to me. when I'm using my SOCKS5 proxie. Please help me to solve this error.

Show here your code that is leading to such error

Share here your code that is leading to such error

def download():
    yt = YouTube('url', proxies={"socks5":"socks5 proxy", "socks5":""socks5 proxy"})
 yt.streams.get_audio_only().download(True
`````

Share here your code that is leading to such error

def download():
    yt = YouTube('url', proxies={"socks5":"socks5 proxy", "socks5":""socks5 proxy"})
 yt.streams.get_audio_only().download(True

try:
proxies={"http": "socks5://proxy_address", "https": "socks5://proxy_address"}

Where do you guys get your proxies from? Are they not super expensive and/or slow?

Where do you guys get your proxies from? Are they not super expensive and/or slow?

I bought this proxy in proxy6.net. Type: Soscks5
In another applications works cool.

An observation that may be important, some applications may bypass the SOCKS5 proxy or make direct connections that expose their real IP, to resolve this you must force your scripts to pass through the proxy.

authors: JuanBindez NannoSilver florestdev yannickErp


text:
Mejorar la visualización de la alerta

          ### Se agregó una alerta automatizada.

Para recordar al usuario que tiene recordatorios próximos a vencer (dentro de las 24 hrs).
Con un tiempo de visualización de 5 segundos para no afectar la experiencia de usuario.
Con un estilo simple pero agradable.

Vista Previa (Página Recordatorios Automatizados):

Originally posted by @JuanDiegoGuerra in https://github.com/JuanDiegoGuerra/asistente-inteligente-delivery/issues/5#issuecomment-2439034606

Cambios Sugeridos 🛠:

[ ] ⚙Optar por mostrar la alerta en una esquina y superpuesta en la página.
[ ] ⚙Reducir el tiempo para llamar a la alerta de 24hrs a 1 o 2 hrs tal vez.


text:
Changes:

Made one word_list XML-layout for category activities instead of four different
deleted useless XML-layouts
Started to working with the Color Activity

Making new better one.

repo: JukioKe/LearnFinnish


text:
Add multi-target feature to make_regression

Replaces #780.

woohoo!

Codecov Report

Merging #811 (8511664) into dev (548b09a) will increase coverage by 0.00%.
The diff coverage is 91.66%.

@@           Coverage Diff           @@
##              dev     #811   +/-   ##
=======================================
  Coverage   85.70%   85.70%
=======================================
  Files          36       36
  Lines        3497     3505    +8
=======================================
+ Hits         2997     3004    +7
- Misses        500      501    +1

Impacted Files
Coverage Δ

src/data/datasets_synthetic.jl
94.91% <91.66%> (-0.54%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 548b09a...8511664. Read the comment docs.

authors: ablaom codecov-commenter josephsdavid


text:
iszero

Not high priority but this won't work if the SparseCoefficients is not canonicalized:
https://github.com/JuliaAlgebra/StarAlgebras.jl/blob/ba3697f45b957b1881950aa096932a42b1cc7c9b/src/coefficients.jl#L37
This doesn't work for tuples:
https://github.com/JuliaAlgebra/StarAlgebras.jl/blob/ba3697f45b957b1881950aa096932a42b1cc7c9b/src/types.jl#L92

Yes, we need to fix our semantics and develop a consistent mindset for dealing with canonicalization.

Is is a temporary state within unsafe_ functions?
If yes, do we bring the coefficients to canonical form upon construction, or should we trust the user?
does canonical always perform its task, or is is a no-op (and hence we can call it freely in our code) for already canonicalized coeffs?

especially the latter will experience problems with thread-safety, but maybe its not our goal?

You can only bring it to a non-canonical state if we call unsafe_ function of UnsafeAddMul then you are responsible to call canonicalize!. I don't think it's a no-op then, we need canonicalize! to do its thing right. If the user calls it, it means the user know that he did unsafe things so he's calling it explicitly. If the user never calls unsafe methods then he should never have to canonicalize. If he does, then it's not a no-op and there is a cost, so he should just not do it ^^

authors: blegat kalmarek


text:
[BUG] Javis breaks windows

Running Javis on Windows breaks the computer, stops being able to type or similar, I had to restart it.
Can't figure out why this happens. The only that changed is now I have Windows 11.

Julia Version (i.e. output of julia -v): 1.7

Operating system (Mac, Linux, Windows): Windows

Javis version (i.e output of ] status Javis in the REPL): 0.7.2

Is that reproducable and does it work with 0.7.1 or Julia v1.6?

Will check both those.
About reproducible, in my pc it does so however I use Pluto and javis.
Unfortunately I only have one pc with Windows so I can check for different devices.

Does using Javis already result in a freeze or do you have to run it with Pluto or do you have to actually call the render function?

So i tried some more things and I think it is just the fact that on Windows using Javis requires a lot of memory.
But if you run a script from Julia this will last a few moments, whereas in Pluto for some reason I don't know it looks like this situation becomes constant until one closes the Pluto notebook.
However there are two things to notice:

I have moved to Windows 11 which I think is known to require more performance in a lot of ways.
Since Windows 11 Javis can be run in WSL even if GTKInteractive is there, I think that made it impossible until recently.

Sorry this is all vague but I can't figure out much more.

authors: Wikunia gpucce


text:
Level sets and indicator functions

Work in progress for #75 and #76

This pull request is getting a bit more comprehensive than originally planned. I'll merge this soon with master and open a separate issue to discuss the design changes. I improved coverage a lot, which led to a lot of minor bug fixes. But there are also some syntax changes, so this is breaking.


text:
V0p3p3b

I ran https://rtyley.github.io/bfg-repo-cleaner/ to reduce the size of the repo

java -jar ../bfg-1.14.0.jar --strip-blobs-bigger-than 300k ./
git reflog expire --expire=now --all && git gc --prune=now --aggressive

Artifact > lazy, add ci.yml, + related updates
bump version and compat

Codecov Report

Merging #80 (75bfe99) into master (53022b5) will increase coverage by 0.66%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #80      +/-   ##
==========================================
+ Coverage   80.08%   80.75%   +0.66%
==========================================
  Files           4        5       +1
  Lines         477      478       +1
==========================================
+ Hits          382      386       +4
+ Misses         95       92       -3

Impacted Files
Coverage Δ

src/IndividualDisplacements.jl
100.00% <100.00%> (ø)

src/read.jl
52.11% <0.00%> (+4.22%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 53022b5...75bfe99. Read the comment docs.

authors: codecov-commenter gaelforget


text:
ERROR: UndefVarError: T not defined

This is an interesting one:
using IndexedTables, DataValues

L = ndsparse((id=[1,2,3],), (val=[1,2,3],))
R = ndsparse((id=[1,2,4],), (val=[1,2,4],))
join((l,r) -> isna(r.val) ? l : r, L,R,how=:left)

gives
julia> join((l,r) -> isna(r.val) ? l : r, L,R,how=:left)
ERROR: UndefVarError: T not defined
Stacktrace:
 [1] fieldstupletype(::Type{NamedTuple{(:val,),T<:Tuple}}) at /Users/simon/.julia/dev/IndexedTables/src/utils.jl:165
 [2] fieldtypes(::Type) at /Users/simon/.julia/dev/IndexedTables/src/utils.jl:168
 [3] strip_unionall_params(::Type) at /Users/simon/.julia/dev/IndexedTables/src/utils.jl:203
 [4] strip_unionall_params(::UnionAll) at /Users/simon/.julia/dev/IndexedTables/src/utils.jl:202
 [5] strip_unionall(::Type) at /Users/simon/.julia/dev/IndexedTables/src/utils.jl:232
 [6] arrayof(::Type) at /Users/simon/.julia/dev/IndexedTables/src/utils.jl:181
 [7] init_join_output(::Val{:left}, ::Val{false}, ::Function, ::Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}, ::Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}, ::NDSparse{NamedTuple{(:val,),Tuple{Int64}},Tuple{Int64},Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}},Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}}, ::Bool, ::Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}}, ::Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}}, ::Nothing, ::Nothing) at /Users/simon/.julia/dev/IndexedTables/src/join.jl:211
 [8] #join#287(::Symbol, ::Bool, ::Tuple{Symbol}, ::Tuple{Symbol}, ::Tuple{Int64}, ::Tuple{Int64}, ::Nothing, ::Bool, ::Nothing, ::Nothing, ::Bool, ::typeof(join), ::getfield(Main, Symbol("##23#24")), ::NDSparse{NamedTuple{(:val,),Tuple{Int64}},Tuple{Int64},Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}},Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}}, ::NDSparse{NamedTuple{(:val,),Tuple{Int64}},Tuple{Int64},Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}},Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}}) at /Users/simon/.julia/dev/IndexedTables/src/join.jl:444
 [9] (::getfield(Base, Symbol("#kw##join")))(::NamedTuple{(:how,),Tuple{Symbol}}, ::typeof(join), ::Function, ::NDSparse{NamedTuple{(:val,),Tuple{Int64}},Tuple{Int64},Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}},Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}}, ::NDSparse{NamedTuple{(:val,),Tuple{Int64}},Tuple{Int64},Columns{NamedTuple{(:id,),Tuple{Int64}},NamedTuple{(:id,),Tuple{Array{Int64,1}}}},Columns{NamedTuple{(:val,),Tuple{Int64}},NamedTuple{(:val,),Tuple{Array{Int64,1}}}}}) at ./none:0
 [10] top-level scope at none:0

This is due to the use of return_type. It's inferring the passed function on types NamedTuple{(:val,),Tuple{Int64}} and NamedTuple{(:val,),Tuple{DataValue{Int64}}}, which gives NamedTuple{(:val,),T} where T<:Tuple, which is too abstract to know the field types.

IndexedTables no longer relies on return_type so this now gives the correct result.

authors: JeffBezanson piever simonbyrne


text:
Timeseries implementation on top of IndexedTables.jl

Hello,
https://github.com/tanmaykm/JuliaTS.jl implemented some time series and relational algebra operations over NDSparseData.
I wonder if there is some efforts in this direction.
Kind regards

Thanks for opening this issue!
I believe IndexedTables is a great fit for representing time-series data because of its sorted nature with fast lookups and range access. JuliaTS.jl was an experiment by Tanmay in the early stages of this package worth revisiting now.
A time-series implementation could work on IndexedTables directly - an IndexedTable indexed by Date, DateTime, or Time columns (and possibly other columns of different types) would act as a time-series. This makes array-like and relational data operations in this package readily usable -- already very useful functionality. The other half of the story is time-series operations such as those here -- I daresay most of them look straightforward to implement on top of IndexedTables. A next (optional) step is to wrap these operations in JuliaDB.jl which will give us a distributed time-series implementation.
Since you have expertise in this area, you are very welcome to contribute these operations if you're willing! We might get to doing this eventually, but presently this is not a pressing concern. A time-series roadmap issue might be in order.
Cheers

Maybe we should have an issue opened at https://github.com/JuliaComputing/JuliaDB.jl ?

@femtotrader Sounds good! incidentally there's an exact complement of this issue :) https://github.com/JuliaComputing/JuliaDB.jl/issues/6

authors: femtotrader shashi


text:
Remove stale connect and use named arguments

Update tests accordingly

I took the liberty to remove the old signature connect and move the body into the new connect.
I have also added properly named keyword arguments: I found it brittle to having the variable names w1 and 'z1' forced on the user. If you agree, I can rename those variables: if there is a variable called w1 I ask myself if I should also look for a variable w0 or w2.

I cannot merge this PR, the new signature was added but the old one was kept in place to not break code that used it. Me and colleagues still have code around that uses it.
I also don't want to break the interface by removing the z1/w1 keyword arguments, and these are consistent with the corresponding arguments to the lower-level feedback function in ControlSystems.jl

The choices z,y,w,u are also consistent with the robust control literature, for example "ROBUST AND OPTIMAL
CONTROL" by ZHOU, DOYLE and GLOVER, and I would prefer to keep them that way.

The example complicated_feedback.jl is run twice: is this intentional?

Nope, that's probably a mistake
In general, breaking the interface in any way is something I avoid to the greatest extent possible, each breaking change causes a ton of downstream problems that I and other users cannot afford.

No worries
Keyword arguments that have the same name as your variable do not require the repeating in (; w1=w1). This is true all over Julia, for example, in named tuple creation (; w1), struct unpacking etc.

authors: baggepinnen mzaffalon


text:
Reinterpret Vector of TaylorScalars as Matrix

By reinterpreting Vector of TaylorScalars as Matrix we can take advantage of matrix multiplication.
Also relax the type annotation so that we can use TaylorDiff on gpu.

The test failure does not look related to this PR.


text: Images


text:
Detection with complex fails

using SparsityDetection
function f(du, u, p, t)
    Q = reinterpret(Complex{Float64}, u)
    dQ = reinterpret(Complex{Float64}, du)
    dQ .= Q
end

input = rand(Float64, 4)
output = similar(input)
sparsity_pattern = sparsity!((dx, x) -> f(dx, x, [], 0), output, input)
jac = Float64.(sparse(sparsity_pattern))
colors = matrix_colors(jac)

sorry it took me a few hours to get to this!

@shashi might this have a quick solution?

So each complex element comes from 2 inputs?
I think the problem is reinterpret. It would work if you just used 1.0 + 2.0im.

the problem is almost certainly reinterpret... but i want to use
reinterpret!
On Thu, Apr 2, 2020 at 9:13 PM Shashi Gowda notifications@github.com
wrote:

So each complex element comes from 2 inputs?
I think the problem is reinterpret. It would work if you just used 1.0 +
2.0im.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/SciML/SparsityDetection.jl/issues/21#issuecomment-608218847,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEABWVGMGM2DGVL75ZTQP3LRKVO7JANCNFSM4LF6XW6Q
.

authors: ChrisRackauckas atombear shashi


text:
Change the interface for grouping and matching attractors

This PR is part of an effort to bring the same continuation capabilities to Features mapper and Recurences mapper.
This is the part 1. What has been done so far:

Complete rewrite of the matching routine. It is mostly moving the code around in order to separate the two important steps: collecting the attractors and then the matching.
Adding a primitive form of grouping attractors. A distance matrix is computed and passed to a low level function of dbscan. This must be improved in order to pull the muscle of the grouping capabilities of Attractors.jl.
Very basic test.

There are some issues about using attractors as Features. I haven't solve the problem of the clustering with an automatic epsilon radius. Maybe it is not necessary.  Also I have to test with other function info extraction (such as the mean of the Datasets).
It is still primitive but it will let you know where I want to get to. The code is not ready for review. There are still plenty of details that I need to take care of.
The part 2 of the PR has not started yet, it will be adding the slice matching to the Feature mapper.

The part 1 and 2 of the changes I am proposing are almost done. The outline of the changes are:

There are now two ways of doing continuation: with recurrences and featuring.
You can do both matching between slices and grouping accross parameters.

I don't think the interface is the ideal. Maybe breaking the matching and grouping into separate functions is better. We can discuss that.
The grouping of the attractors does not use the group_features function because of the type of attractors . These are datasets and features are vectors. Now the grouping is done by computing the distance between attractors pairwise and fed to the DBSCAN algorithm with a fixed threshold. I don't think it is a big issue since the number of attractors is fairly small. Also it makes sense to set a fixed threshold as in the matching process. In this aspect, the functions in aggregator become obsolete since the grouping is doing the same job. Now you can also group with a feature function on the attractors.
TODOs:

Documentation
Try it on "real" cases such as the kuramoto net.
Reduce the codebase by sharing functions between the Featuring and Recurrence part. There are some progress to be done there.

Why are there some many file conflicts...? Where did you branch of to do this? I mentioned in the email to branch of the latest version of code I've pushed to include all changes from DynamicalSystems.jl 3.

(also, remember, it is "Featurizing" not "Featuring" :D )
Let me know when the docs are done and I will review.

It's a matter of depencencies for the tests. I was not abble to run the code on the latest version. I will merge the latest commits into the PR so you can checkout the branch cleanly.

(also, remember, it is "Featurizing" not "Featuring" :D )
Let me know when the docs are done and I will review.

Damn... you're right

I'll start working on the docs.

@Datseris I have finished for now the part 1 and 2 of my program. I left the part 3 for later (the stuff about using the parameter p as an extra feature).
Lots of things have changed but the basic functionalities of continuation still remain. I believe that the code is more general now and more structured. I still have doubt about deleting the aggregate_attractors file. We can discuss the details once you have seen the code.  I have been using the code on some examples but I still need to perform more profound tests.
The funny thing is that some piece of code you have programmed for attractors work perfectly well with features ( match_attractors_id!). So nice!!
It is harder to use the code for grouping features with attractors since they are dictionaries of Datasets. They are not compatible with the interface of group_features. Maybe it is possible to adapt an interface but I could not do it.

Close this PR until further advance in the design.

authors: Datseris awage


text:
Update Cartesian constructors

Now, Cartesian constructors accept a tuple of number or a tuple of quantities:
Cartesian((1.0, 1.0))
Cartesian((1.0u"m", 1.0u"m"))

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 95.06%. Comparing base (f6ecea8) to head (f805ae4).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #77   +/-   ##
=======================================
  Coverage   95.06%   95.06%
=======================================
  Files          22       22
  Lines        1053     1053
=======================================
  Hits         1001     1001
  Misses         52       52

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

authors: codecov-commenter eliascarv


text:
configure TagBot for monorepo

https://github.com/JuliaRegistries/TagBot?tab=readme-ov-file#subpackage-configuration

Now we have the basic tagbot configuation and commenting
@JuliaRegistrator register subdir=GNNLib

should produce a github release specific to GNNlib.
The remaining problem is that all closed issues and PRs will appear in the release notes of all packages.
We should follow these instructions
https://github.com/JuliaRegistries/TagBot?tab=readme-ov-file#changelogs
to filter-in items based on the labels (lux, flux, gnnlib, gnngraphs).

Error while trying to register: "File (Julia)Project.toml not found"

authors: CarloLucibello JuliaRegistrator


text:
Add mirrors for bottles

There seems to be some issue with downloading the bottles from archive.org. The system continues with source downloads, so this is not a blocker. However, it now takes a while, so its a bit annoying.
One example below, but similar errors for all bottles on archive.org
==> Downloading http://archive.org/download/julialang/bottles/libtasn1-3.4.snow_leopard_or_later.bottle.tar.gz

curl: (22) The requested URL returned error: 503
Warning: Bottle installation failed: building from source.
==> Downloading http://ftpmirror.gnu.org/libtasn1/libtasn1-3.4.tar.gz

We don't use archive.org anymore, and AWS has been stable enough that I'm going to close this.

authors: aviks staticfloat


text:
ditch IPython _* history variables?

Early on, I made IJulia emulate IPython's history variables: _/__/___ refer to the last three execution results, and _nn refers to Out[nn].
At this point, however, I'm not sure that was a great idea, and I'm inclined to ditch them, keeping only ans for the last execution result (like Matlab and the Julia REPL) and Out[nn] to fetch any output.   _ in particular just seems to be too popular as a variable name to shadow it with a global (see e.g. kmsquire/Match.jl#14).
Thoughts?  @StefanKarpinski, @Carreau, are these underscore history variables important to anyone?

_ is a convention IPython inherited from the vanilla Python REPL (IPython added __ and ___), I'm not sure if anyone uses anything beyond _, even in IPython. If there's a better precedent in the community, I think dropping _* is a good idea.

+1. I was only aware of them from digging around in the iJulia source code, so I wouldn't imagine there are many reliances on them. I think using ans is much more common in the Julia community.

+1 also.
Envoyé de mon iPhone

Le 30 janv. 2015 à 23:09, Jacob Quinn notifications@github.com a écrit :
+1. I was only aware of them from digging around in the iJulia source code, so I wouldn't imagine there are many reliances on them. I think using ans is much more common in the Julia community.
—
Reply to this email directly or view it on GitHub.

+1 – I never cared for this in the first place. How about also exposing In[n]?

@StefanKarpinski, In and Out are already exposed.

So ends an era.

authors: Carreau StefanKarpinski malmaud minrk quinnj stevengj


text:
MacOS fixes for issue #968

Changes to run with Julia >1.5 on MacOS: heartbeat calls removed, dynamically-created
redirect functions replaced by one statically-created function to get around
problems with incremental compilation.

I don't think that removing the heartbeat socket is an option. Jupyter uses unresponsive heartbeats to detect dead kernels.

I don't think that removing the heartbeat socket is an option. Jupyter uses unresponsive heartbeats to detect dead kernels.

I don't think that removing the heartbeat socket is an option. Jupyter uses unresponsive heartbeats to detect dead kernels.

Well, that's unfortunate. The segfault is still there if I put the heartbeat back in, so something deeper is broken. Even with the heartbeat, Julia kernels appear to hang around forever if not killed by hand via the Shutdown command in the notebook. I just tried it with a fresh install on 1.5.3, after making sure there were no cached version of any IJulia code hanging around. Quitting the server from the shell did not shut down the Julia kernel.

I don't think that removing the heartbeat socket is an option. Jupyter uses unresponsive heartbeats to detect dead kernels.

Well, that's unfortunate. The segfault is still there if I put the heartbeat back in, so something deeper is broken. Even with the heartbeat, Julia kernels appear to hang around forever if not killed by hand via the Shutdown command in the notebook. I just tried it with a fresh install on 1.5.3, after making sure there were no cached version of any IJulia code hanging around. Quitting the server from the shell did not shut down the Julia kernel.

authors: rgobbel travigd


text:
Grace

Fixes #46

Codecov Report

Merging #47 into master will increase coverage by 0.71%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #47      +/-   ##
==========================================
+ Coverage   29.89%   30.61%   +0.71%
==========================================
  Files           5        5
  Lines          97       98       +1
==========================================
+ Hits           29       30       +1
  Misses         68       68

Impacted Files
Coverage Δ

src/types.jl
45.83% <100.00%> (+1.15%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4a9d903...043ae3c. Read the comment docs.

authors: aminya codecov-commenter


text:
AMDGPU tweaks

Looking into the scripts, I see you are using AMDGPU v0.8 which has now the same "convention" as CUDA wrt using threads and blocks as kernel launch params; gridsize = blocks and thus
https://github.com/JuliaORNL/JACC.jl/blob/041c271a8711cbf02fb9ce3f5d7043f60daade8c/ext/JACCAMDGPU/JACCAMDGPU.jl#L7-L9
should be:
@roc groupsize = threads gridsize = blocks _parallel_for_amdgpu(f, x...)

Regarding the issue https://github.com/JuliaGPU/AMDGPU.jl/issues/614 it could be that using weakdeps (adding Project.toml to /test) in tests could solve the issue as since JACC is using extensions one could make sure not relying on conditional loading but truly on extension mechanism?
Also, it looks like you are running AMDGPU CI on Julia 1.9. There used to be issues because of LLVM on Julia 1.9 and thus Julia 1.10 could globally be preferred (although depending on the GPU 1.9 would work fine).

We have to make a few modifications on AMDGPU according to the "new" syntax.

Yes, and I suspect this may address part of your perf issue you report wrt to tuning kernel launch params.

changes for device synchronization

The behaviour of AMDGPU wrt synchronisation should be fairly similar to CUDA. Unless specified otherwise, kernel are launched on the task local default device and normal priority stream. On the default device and default queue, kernel execution is ordered (and would not need explicit synchronisation). AMDGPU.synchronize(), as CUDA, syncs the streams and not the device. A lower-level device sync is also available but is a heavier operations.


text:
boundserror after Pkg.update() and Pkg.test("LsqFit")

ERROR: LoadError: LoadError: BoundsError
in getindex at ./number.jl:21 [inlined]
in model(::LinSpace{Float64}, ::Float64) at /Users/raukhur/.julia/v0.5/LsqFit/test/curve_fit.jl:2
in f at /Users/raukhur/.julia/v0.5/LsqFit/src/curve_fit.jl:38 [inlined]
in #lmfit#1(::Array{Any,1}, ::Function, ::LsqFit.#f#3{#model,LinSpace{Float64},Array{Float64,1}}, ::Array{Float64,1}) at /Users/raukhur/.julia/v0.5/LsqFit/src/curve_fit.jl:31
in #curve_fit#2(::Array{Any,1}, ::Function, ::#model, ::LinSpace{Float64}, ::Array{Float64,1}, ::Array{Float64,1}) at /Users/raukhur/.julia/v0.5/LsqFit/src/curve_fit.jl:39
in curve_fit(::Function, ::LinSpace{Float64}, ::Array{Float64,1}, ::Array{Float64,1}) at /Users/raukhur/.julia/v0.5/LsqFit/src/curve_fit.jl:38
in include_from_node1(::String) at ./loading.jl:488
in include_from_node1(::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
in macro expansion; at /Users/raukhur/.julia/v0.5/LsqFit/test/runtests.jl:13 [inlined]
in anonymous at ./:?
in include_from_node1(::String) at ./loading.jl:488
in include_from_node1(::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
in process_options(::Base.JLOptions) at ./client.jl:262
in _start() at ./client.jl:318
in _start() at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
while loading /Users/raukhur/.julia/v0.5/LsqFit/test/curve_fit.jl, in expression starting on line 9
while loading /Users/raukhur/.julia/v0.5/LsqFit/test/runtests.jl, in expression starting on line 11
Maybe something with new Optim.jl version?

Please provide versioninfo() and git SHA of the LsqFit.jl version where you see this error. Thanks!

Julia Version 0.5.0
Commit 3c9d753 (2016-09-19 18:14 UTC)
Platform Info:
System: Darwin (x86_64-apple-darwin13.4.0)
CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.7.1 (ORCJIT, broadwell)
could you give me a hint how to find the SHA for the package? trying to look in the folder .jlia/v0.5/LsqFit/ but can't see it

I have

LsqFit                        0.0.2

update: I did Pkg.checkout("LsqFit) and then build and now the test passes but lots of warnings, e.g. :
WARNING: Problem solving for delta_x: predicted residual increase.
3.3671457655432 (predicted_residual) >
3.3582265007798275 (residual) + 4.440892098500626e-16 (eps)
and
WARNING: MultivariateOptimizationResults(method,initial_x,minimizer,minimum,iterations,iteration_converged,x_converged,x_tol,f_converged,f_tol,g_converged,g_tol,trace,f_calls,g_calls) is deprecated, use MultivariateOptimizationResults(method,initial_x,minimizer,minimum,iterations,iteration_converged,x_converged,x_tol,f_converged,f_tol,g_converged,g_tol,trace,f_calls,g_calls,0) instead.

It looks like the BoundsError is generated at https://github.com/JuliaOpt/LsqFit.jl/blob/v0.0.2/src/curve_fit.jl#L30 and the correct call should be result.minimizer.
@blakejohnson Will you maintainers be tagging a new release soon or would you like a PR?

I'll tag a new release.

@blakejohnson Thank you.

I believe this is now fixed in LsqFit v0.1.0.

authors: blakejohnson mzaffalon zahachtah


text:
New release

@ulfworsoe Any objection to tag v0.1.0 ? We cannot tag v0.0.2 since we drop support for MOI v0.2.

No objections. I'll get get to it.

authors: blegat ulfworsoe


text:
Quadratic Objectives not being solved

When using JuMP v0.19 and MathOptInterfaceMosek.jl, I cannot solve models that I was previously solving with JuMP v0.18 and Mosek.jl
These models have a quadratic objective... I even tried with very simple models (objective such as x[i].^2) but it says that the solver (Mosek) cannot handle Scalar Quadratic objects or something similar.
Do you know what to do? or how should I be writing these functions? Thank you

I'm having this same issue- has it been resolved? Is the above workaround what we should be doing?

Also, I tried the workaround above-
The optimizer supports second-order cone constraints and not quadratic constraints but you entered a quadratic constraint of type: `MathOptInterface.ScalarQuadraticFunction{Float64}`-in-`MathOptInterface.LessThan{Float64}`. A bridge attempted to transform the quadratic constraint to a second order cone constraint but the constraint is not strongly convex, i.e., the symmetric matrix of quadratic coefficients is not positive definite. Convex constraints that are not strongly convex, i.e. the matrix is positive semidefinite but not positive definite, are not supported yet.

No, objective bridges have not been added, yet, the workaround is still the way to go

Any thoughts on the above error message that I get when I try it?

It means that the objective is not convex so it cannot be transformed into a SOC. Which objective did you enter ?

A standard quadratic z' L z + z' q for some matrix L, vector of variables z, and vector of constants q.

What is eigvals(L + L') ?

Looks like the first one is negative.
  -0.649373433583957
   0.10460780869676427
   0.1184287900271472
   0.14145591328958082
   0.17367838622258608
   0.2150827792602814
   0.2656541849115951
   0.32537719536705545
   0.3942365802283815
   0.472217646160893
   0.5593063290616023
   0.6554890992764286
   0.7607527602485178
   ⋮
 166.4033515912563
 166.50837219324285
 166.60429916717237
 166.6911219935768
 166.76883115135976
 166.8374181188413
 166.89687537469132
 166.9471963987555
 166.98837567276928
 167.02040868096367
 167.04329191056016
 167.05702285215617

If this specific error message about the cone constraints is just a quirk of the parameters we chose (i.e., the specific L matrix), we can choose different ones.

The only condition for this to work is all the eigenvalues of L should be strictly positive.

Because we need to take the cholesky decomposition of L to rewrite it as as a SOC, see e.g. https://en.wikipedia.org/wiki/Second-order_cone_programming#Example:_Quadratic_constraint

Roger that, thanks for clarifying.

Objective bridges have been added in MOI v0.9.2

authors: arnavs blegat rodrigogarciana


text:
Fix CI build in v1.7

ERROR: Unsatisfiable requirements detected for package JuMP [4076af6c]:
 JuMP [4076af6c] log:
 ├─possible versions are: 0.18.3-0.23.0 or uninstalled
 ├─restricted to versions 0.22 by an explicit requirement, leaving only versions 0.22.0-0.22.3
 └─restricted by compatibility requirements with CDDLib [3391f64e] to versions: 0.21.0-0.21.10 — no versions left
   └─CDDLib [3391f64e] log:
     ├─possible versions are: 0.4.0-0.9.0 or uninstalled
     └─restricted to versions 0.7 by an explicit requirement, leaving only versions 0.7.0

Originally posted by @schillic in https://github.com/JuliaReach/ReachabilityAnalysis.jl/issues/605#issuecomment-1058848639

This seems to work now. Strange...


text:
Pleqase, only one PR to add/update all compat entries

FOR THE LOVE OF GOD why doesn't CompatHelper suggest all of its changes in a single pull request with sorted compat entries rather than opening dozens of conflicting ones?
This is infuriating.

Duplicate of #126

authors: DilumAluthge MarkNahabedian


text:
New package: ApproxMasterEqs v1.0.0

Registering package: ApproxMasterEqs
Repository: https://github.com/d4v1d-cub/ApproxMasterEqs.jl
Created by: @d4v1d-cub
Version: v1.0.0
Commit: f43c14017edce2f4b4647075a8d9e579b0e8d5a4
Reviewed by: @d4v1d-cub
Reference: https://github.com/d4v1d-cub/ApproxMasterEqs.jl/issues/5
Description:  This Julia package performs the numerical integration of two Approximated Master Equations on networks: the Cavity Master Equation and the Conditional Dynamic Approximation

[noblock]
I would still favor a more explicit package name. What's wrong with ApproximateMasterEquations?

authors: JuliaRegistrator gdalle

repo: JuliaRegistries/General


text:
New version: DiffResults v1.0.0

Registering package: DiffResults
Repository: https://github.com/JuliaDiff/DiffResults.jl
Created by: @andreasnoack
Version: v1.0.0
Commit: 41e3a16f52c08af4e65359a09d59d4e863320a46
Reviewed by: @andreasnoack
Reference: https://github.com/JuliaDiff/DiffResults.jl/commit/41e3a16f52c08af4e65359a09d59d4e863320a46#commitcomment-36261073

Whats breaking in https://github.com/JuliaDiff/DiffResults.jl/compare/v0.0.4...master ?

Dropping Julia 0.6 and 0.7 and bumping StaticArrays from 0.5 to 0.8.

Neither of those can break usercode though, right?

I don't think so but I think the bot here asks me to make it a minor release and since that is breaking when < 1.0.0 I thought I'd make it 1.0.0. I'm fine just bumping the patch number if you'll merge it.

I think that is best, the bot is a bit confused with old Julia versions like that.

On the other hand, it is easier in the future to have 3 version numbers to play with, so maybe we can just merge this and let packages update.

But shouldn't this version at least support newer staticarrays?

Indeed. What is the process for updating the release proposal? Should I just as JuliaRegistrator again on a newer commit and this PR will get updated automatically?

yea


text:
New package: MathProgIncidence v0.1.0

Registering package: MathProgIncidence
Repository: https://github.com/lanl-ansi/MathProgIncidence.jl
Created by: @Robbybp
Version: v0.1.0
Commit: b5c9d4e51592b685592b13e9fc1cb3dba0b9c511
Reviewed by: @Robbybp
Reference: https://github.com/lanl-ansi/MathProgIncidence.jl/issues/25
Description: Tools for constructing and analyzing the incidence graph or matrix of variables and constraints in a JuMP model

[noblock] I fixed the AutoMerge issues, then re-triggered JuliaRegistrator in https://github.com/lanl-ansi/MathProgIncidence.jl/issues/25, but this seemed to open a "patch release" PR to this repo, https://github.com/JuliaRegistries/General/pull/89558, rather than updating this PR.

This PR has been superseded and should be closed

authors: JuliaRegistrator Robbybp


text:
TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/32667

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/32748

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/32847

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/78066

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/101659


text:
fix note constants

seems like a simple couple mistakes but

-11 from MIDDLE_C would be a C#
F_FLAT and F can't have the same offset F_FLAT should have the offset as E

@Julusian any issue with this?

repo: Julusian/node-midi


text:
logging does not work

parents?
no debug

not working in init


text:
Errors with spotify playlists

Please tick all applicable boxes.

[✔] I am using Python 3.5.3 or higher (run python --version on the command line)
[✔] I have followed the official guides to install the bot for my system
[✔] I have updated my dependencies to the latest version using the appropriate update script

Which version are you using?

[✔] The latest master version (release-260419)

What type of issue are you creating?

[✔] Bug

Description of issue

It was working fine a few days ago with the same playlist. I'm not sure what changed.
Steps to reproduce

!play spotify:playlist:37i9dQZF1E4mmDxZR2bY1X

Log file

I am receiving these errors as well.  You have trigger YouTube into thinking you are a bot, it is expecting a captcha.  I believe this is the same API change that is affecting the other Music Bots.

@azcoigreach How do you make YouTube think you're a bot?

For others

RH1-N0 BOT Today at 4:36 AM
YouTube has suddenly started fighting against ripping services and music bots, and is banning VPS services and machines that generate a large number of traffic. If you are affected, this means your bot won't be able to interact with YouTube or pick up any songs or their info. If your bot is affected, you might be seeing it start producing one of two errors:
YouTube said: 429: Too many requests
or Unable to extract video data
The latter isn't guaranteed to be the issue though, to confirm you have been blocked, open CMD or your terminal, and type youtube-dl (any video url here)
What can I do about this?
Unfortunately, this is a tricky situation, and there isn't much that can be done without a lot of work. If your hosts allow using multiple IPs, you should try making your machine use one of the alternate IPs to see if YouTube banned the whole host service you're using, or just one single IP.
Another way around this would be using a VPN service, but there's a chance that YouTube could have blocked some VPN services too. A VPN could be slow, and might stunt download speeds, but if it's your only option, it's better than nothing.
Another bypass could be moving to another host, but nothing stops YouTube from blocking a new host that you've switched to.
However, one thing to note is that not all of these YouTube blocks are permanent. Some might be temporary. To see if your IP can be unblocked, simply leave the bot off, or don't use that IP for a few days. Then, try using the bot after that wait. If it works, your block was temporary and you can continue using the bot after this time.

Closing this as it's a youtube throttling issue not a Musicbot issue.

authors: azcoigreach rwilliams

repo: Just-Some-Bots/MusicBot


text:
Use "original" instead of "origin"

According to the Pexels API, the array "src" does not have a "origin" key, it has a "original" key. Because of that mistake, I was not able to use the "original" key to get the original image and "origin" was null.
So, I changed "origin" to "original" in PhotoSrc.php to make sure it works properly.

@NicolasSacC , thank you very much!

authors: DeDmytro NicolasSacC

repo: JustRaviga/laravel-pexels


text:
Sample中的IPC WebView独立进程必现Crash

Crash日志
2021-05-24 14:25:51.996 23790-23790/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.just.agentweb.sample:web, PID: 23790
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.just.agentweb.sample/com.just.agentweb.sample.activity.RemoteWebViewActivity}: android.view.InflateException: Binary XML file line #17 in com.just.agentweb.sample:layout/fragment_twk_web: Binary XML file line #17 in com.just.agentweb.sample:layout/fragment_twk_web: Error inflating class android.webkit.WebView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3898)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2462)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8393)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: android.view.InflateException: Binary XML file line #17 in com.just.agentweb.sample:layout/fragment_twk_web: Binary XML file line #17 in com.just.agentweb.sample:layout/fragment_twk_web: Error inflating class android.webkit.WebView
Caused by: android.view.InflateException: Binary XML file line #17 in com.just.agentweb.sample:layout/fragment_twk_web: Error inflating class android.webkit.WebView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:864)
at android.view.LayoutInflater.createView(LayoutInflater.java:786)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
at com.android.internal.policy.HwPhoneLayoutInflater.onCreateView(HwPhoneLayoutInflater.java:91)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:940)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:960)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1014)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:971)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1133)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1094)
at android.view.LayoutInflater.inflate(LayoutInflater.java:692)
at android.view.LayoutInflater.inflate(LayoutInflater.java:536)
at android.view.LayoutInflater.inflate(LayoutInflater.java:483)
at com.just.agentweb.sample.widget.WebLayout.(WebLayout.java:47)
at com.just.agentweb.sample.activity.BaseWebActivity.onCreate(BaseWebActivity.java:77)
at com.just.agentweb.sample.activity.RemoteWebViewActivity.onCreate(RemoteWebViewActivity.java:26)
at android.app.Activity.performCreate(Activity.java:8121)
at android.app.Activity.performCreate(Activity.java:8109)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3871)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2462)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8393)
2021-05-24 14:25:51.997 23790-23790/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: java.lang.RuntimeException: Using WebView from more than one process at once with the same data directory is not supported. https://crbug.com/558377 : Current process com.just.agentweb.sample:web (pid 23790), lock owner  unknown
at org.chromium.android_webview.AwDataDirLock.b(chromium-TrichromeWebViewGoogle.aab-stable-438910533:27)
at sp0.j(chromium-TrichromeWebViewGoogle.aab-stable-438910533:31)
at sp0.b(chromium-TrichromeWebViewGoogle.aab-stable-438910533:22)
at sp0.l(chromium-TrichromeWebViewGoogle.aab-stable-438910533:2)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.g(chromium-TrichromeWebViewGoogle.aab-stable-438910533:2)
at com.android.webview.chromium.WebViewChromium.init(chromium-TrichromeWebViewGoogle.aab-stable-438910533:14)
at android.webkit.WebView.(WebView.java:445)
at android.webkit.WebView.(WebView.java:367)
at android.webkit.WebView.(WebView.java:350)
at android.webkit.WebView.(WebView.java:337)
... 33 more
造成Crash原因
Android9.0之后不同进程的Webview不允许使用同一个目录存储数据，可以通过                    WebView.setDataDirectorySuffix(processName)方法给不同进程的WebView设置不同的数据存储目录。但是示例代码中的WebLayout中的WebView创建时机早于DefaultWebCreator的Create方法，导致出现该异常。

解决办法
参考链接

repo: Justson/AgentWeb


text:
boot: zephyr: move to non-deprecated GPIO flags

GPIO_DIR_IN has been replaced by GPIO_INPUT, GPIO_PUD_PULL_UP by
GPIO_PULL_UP, and gpio_pin_read() by gpio_pin_get_raw().  Update the
code to use the preferred API if it available.  This avoids
deprecation warnings in the build.
Signed-off-by: Peter Bigot peter.bigot@nordicsemi.no

This patch works against both master and topic-gpio in Zephyr.  @nvlsianpu

zephyr fork synchronized, please upgrade the reference in your convenience.

@pabigot ^^ https://github.com/zephyrproject-rtos/zephyr/pull/22369

authors: nvlsianpu pabigot

repo: JuulLabs-OSS/mcuboot


text:
广播任务支持管控每个worker的任务状态

目前如果正在运行一个长时间的秒级广播任务，加入新worker后，需要将原本的任务禁用再启用，新的worker才能运行该任务，建议对于广播任务每个worker的任务状态能独立展示，把非当前配置状态的恢复为当前状态。谢谢！

since v3.3.1

authors: KFCFans junyan-zg

repo: KFCFans/PowerJob


text:
[TODO] Create placeholder background for testing purposes

What needs to be done?
Generate a bitmap with WaveFunctionCollapse
When should this be done by? (optional)
Next iteration

[x] Refactor black screen to World
[ ] Add bitmap to repo
[ ] Add bitmap to test_map metadata
[ ] Change black screen to render background image
[x] Load background image dynamically from active map metadata

WFC no longer needed due to a migration to tile-based system.
This has been implemented by @Bratah123 in bc233ae64da5d4cb99c2c1bf6c545ac390d84625

repo: KOOKIIEStudios/Califorknia


text:
Removing Project Manager at author's request

As per KSP-CKAN/Netkan#5462

Thank you, didn't realize it had to be done manually here

Yep. CKAN-meta is where we need to delete mods from. Deleting from NetKAN stops the robot re-adding them.

Ok, I'll keep that in mind.
I had misread a thread, thought the author had requested it be added.  But it wasn't, and once I was aware, I did the deletion.
Thanks for picking up on this

authors: linuxgurugamer politas

repo: KSP-CKAN/CKAN-meta


text:
Previous files are ordered in a weird way I guess?

Thanks for wanting to bring an issue to our attention!

Before you open a ticket, please do a quick search of the existing issues to see if it's already been brought up.

Please note that this repository is strictly for metadata (issues relating to incorrect information about mods, missing versions, or incorrect installations). If you want to suggest something or report a bug relating to CKAN as a whole, open the issue in: https://github.com/KSP-CKAN/CKAN

I had installed the Karibou Rover by Umbra Space Industries (RoverDude) a while ago, and I was doing mod updates to catch me up on 1.2.2's latest release, and it told me that it was trying to overwrite another mod's files, but that mod wasn't actually listed in the modlist, so I deleted it locally and tried to find which update was trying to ghost update, but now it's trying to update a mod that doesn't exist anymore. And I'm confused.

On going through my mod updates one by one, I think it might be because USI MKS merged some of its child folders in a way CKAN doesn't understand, and I can't figure out how to get it to recognize however its newly structured to not bug out on me when updating.

My understanding is that Karibour Rover is now part of MKS, so just uninstall the separate mod.

That's just the thing, Karibou Rover is now no longer listed on my mod installs and trying to remove it manually has it throwing even more errors as it tries to update something that doesn't exist.

If you select the "Installed" filter, you should see it.

Whelp. Thanks. I'm so used to being on compatible.

repo: KSP-CKAN/NetKAN


text:
Galactic Neighborhood and Planet Packs in general

First of all I apologize for the wall of text, it came out longer than I expected 😐
my mod "GN" requires planet packs to be installed in a specific way in order to funcion properly, and with the addition of more and more planet packs, I think CKAN could be a very useful tool to help players install these mods correctly.
since the installation of these planet packs might differ slightly from the one setup on CKAN, I would like to create a set of .netkan files that handles installation of GN and planet packs for GN
I am willing to maintain those files myself, unless some of you preferes handling the files themselves
I would like to get some feedback from you about some points:
• Hiding mods
is it possible to hide mods from CKAN unless certain conditions are met?
eg: on a clean install, CKAN shows all planet packs available + GN, but hides all GN-specific packs
if the user selects any planet pack, GN becomes invisible.
if the user selects GN, all planet packs become invisible and the GN-specific packs become visible
• KSP version compatibility
most planet packs compatible with GN have been long abandoned and are not officially compatible with the latest KSP version.
in most cases that's just a matter of form, meaning that the mod is actually compatible but hasn't been officially declared so by the dev (who has abandoned it)
in other cases the mod is actually not compatible, but within GN I provide patches that fix all compatibility issues basically making the mod compatible as long as it's installed with GN
I usually do this only for abandoned mods, mods in active development (like RSS) are still dependent on their developers to fix compatibility so that I don't risk developers getting bug reports from GN mods
I would like to add the GN-versions of these (abandoned) mods as they were compatible with the KSP version GN uses, but I'm not sure what your policy is about that
• "provides" : [ "PlanetPack" ]
at a certain point, all planet packs were providing the tag "PlanetPack"
that would come in handy with GN but I noticed that this is not used anymore, is there an easy way to make GN not compatible with all planet packs by default, without having to edit all planet pack's netkan files?
maybe I could make GN incompatible with Kopernicus, and provide a GN-specific version of Kopernicus
this would allow to make sure GN is only installed with the mods that are compatible with it

A few responses. I expect I've misinterpreted some things, so consider this just a continuation of the dialog.
Hiding mods
As far as I know, the only thing that can cause a mod to be hidden is if it doesn't match the currently selected filter; the default filter is "Compatible", which shows mods that are compatible with the currently installed version of KSP, but there are also other filters such as "Cached" or even "Incompatible". Hiding probably isn't desirable, though---think about exceptional cases where the user corrupts their install by deleting random files, etc., we would just make it that much harder to clean up if mods could be in an invisible state.
I would advise to plan the approach to GN around the assumption that all of the mods involved will always be visible.
GN-incompatible planet packs
I would think GN would be marked as conflicting with these mods, in GN's metadata, since GN is the one with special requirements.
GN-compatible planet packs
If these are abandoned, and especially if they do not work in 1.3.x without GN's patches, we could mark them as depending on GN. Maybe give them a "GN-" prefix to make it clear that they're essentially content packs for GN.
If a planet pack can be used either with or without GN, then we could just leave it as-is, with neither a conflict nor a dependency.
Policy on indexing abandoned mods without authors' consent
Frankly I am confused about what the official policy is at this point. I make a habit of asking authors before I index anything and refraining from merges without permission, and other team members seem to be doing the same, but the response to KSP-CKAN/CKAN#2147 makes it look like that is personal courtesy rather than policy. @politas?
One option, depending on licensing, might be for you to formally adopt these mods as their new maintainer. Then we would have the (new) author's permission. @linuxgurugamer does this two or three times per day and could probably share some advice on how to go about it.
"provides": [ "PlanetPack" ]
I don't think this would help you. If this was a convention, then it should be followed by both the mods that are compatible with GN and the ones that are incompatible, otherwise you would have to explain to authors or users how some planet packs are not actually planet packs.
Another Kopernicus
Please no. Why can't GN itself be the central mod in the relationship spiderweb?

the problem is that new planet packs pop up like mushrooms these days
I don't have the time to keep GN's metadata up-to-date with all new planet packs that come out.
plus all mods that require Kopernicus will be automatically incompatible with GN, because GN requires the install to follow specific instructions and can't work properly if stuff not marked expressively as compatible is added.
after giving it some thought I came to the conclusion that the best way to approach this is to have a completely separated "ecosystem" possibly using a different kopernicus so that I can easily mark everything as conflicting by adding GN as conflicting with kopernicus/scatterer/EVE
the downside is that the player will have to re-download the kopernicus archive as if it was a different mod, but honestly the size of the download is so small that I hardly think that it will be an issue
that said, if this is agains the spirit of CKAN I completely understand and I won't complain

What about planet packs that can be used with or without GN (so far I understand that there are some such mods)? Those would depend on Kopernicus, so you would lose the ability to install them alongside GN.

yeah I realized that as soon as I sent my message
is CKAN smart enough to not download twice the same archive even if it's listed in two different "mods"?

Yeah, if the URL is the same, it will be downloaded once, saved to the cache, and then re-used as needed.

ok, if this is the case then I think the best way would be to create alternate versions of those mods that are defined specifically for GN
most mods will require a different installation than the one already on CKAN  anyways since most planet packs provide clouds for EVE and other things that are not compatible with GN, so either you will need to split the installation of those mods in multiple parts (with the risk of breaking the installation of the original mod, which I think would be a bad idea)
or we use a different metadata to install the mod like I am already doing with SASS
@Olympic1  @politas  any suggestions?

here's a proof of concept of what I would like to do:
https://github.com/Sigma88/CKAN/tree/master/GalacticNeighborhood

Frankly I am confused about what the official policy is at this point. I make a habit of asking authors before I index anything and refraining from merges without permission, and other team members seem to be doing the same, but the response to KSP-CKAN/CKAN#2147 makes it look like that is personal courtesy rather than policy. @politas?

Restricted-licence mods require author approval before listing. That is not a legal requirement, as CKAN is not strictly redistributing anything, it's a community standard we have adopted.
For freely-distributable mods, the policy is that we make a good faith attempt to contact the author so that they can choose to opt-out from listing on CKAN before we list their mod. We should allow the author at least a week to respond before listing the mod under the implied permission of the freely distributable licence.
Obviously, for mods that have come in via Space-Duck, we have an affirmative statement from the author that they wish the mod to be listed (or at least, the person who put it up on Spacedock)
Does that make it clear?

I decided to make an installer for gn planet packs since the installation of those packs is different from the standard installation so there is no need to mess everything up in the ckan files.
Closing this issue

authors: HebaruSan Sigma88 politas