RemoveSingleIterationLoop crashes trying to simplify a mod 0 affine expression

#device_target_cpu = #hal.device.target<"cpu", {executable_targets = [#hal.executable.target<"llvm", "embedded-elf-x86_64", {cpu_features = "", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 16 : index, target_triple = "x86_64-unknown-unknown-eabi-elf"}>]}>
#executable_layout = #hal.executable.layout<push_constants = 0, sets = [#hal.descriptor_set.layout<0, bindings = [#hal.descriptor_set.binding<0, storage_buffer>, #hal.descriptor_set.binding<1, storage_buffer>, #hal.descriptor_set.binding<2, storage_buffer>]>]>
#executable_target_embedded_elf_x86_64_ = #hal.executable.target<"llvm", "embedded-elf-x86_64", {cpu_features = "", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 16 : index, target_triple = "x86_64-unknown-unknown-eabi-elf"}>
#map0 = affine_map<()[s0] -> (s0 ceildiv 4)>
#map1 = affine_map<()[s0] -> (s0 * 4)>
#map2 = affine_map<()[s0, s1] -> (-((s0 * -4 + 4) mod (s1 * 4)) + 4)>
#map3 = affine_map<(d0)[s0] -> (d0 + s0)>
#translation = #iree_codegen.translation_info<CPUDoubleTilingExpert workload_per_wg = [4]>
module attributes {hal.device.targets = [#device_target_cpu]} {
  hal.executable private @simple_mul_dispatch_0 {
    hal.executable.variant public @embedded_elf_x86_64, target = #executable_target_embedded_elf_x86_64_ {
      hal.executable.entry_point public @simple_mul_dispatch_0 ordinal(0) layout(#executable_layout) {translation_info = #translation} {
      ^bb0(%arg0: !hal.device, %arg1: index, %arg2: index, %arg3: index):
        %c1 = arith.constant 1 : index
        %0 = affine.apply #map0()[%arg1]
        hal.return %0, %c1, %c1 : index, index, index
      }
      builtin.module {
        func.func @simple_mul_dispatch_0() {
          %cst = arith.constant 0.000000e+00 : f32
          %c4 = arith.constant 4 : index
          %c0 = arith.constant 0 : index
          %0 = hal.interface.binding.subspan set(0) binding(0) type(storage_buffer) offset(%c0) alignment(64) : memref<4xf32>
          memref.assume_alignment %0, 64 : memref<4xf32>
          %1 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) offset(%c0) alignment(64) : memref<4xf32>
          memref.assume_alignment %1, 64 : memref<4xf32>
          %2 = hal.interface.binding.subspan set(0) binding(2) type(storage_buffer) offset(%c0) alignment(64) : memref<4xf32>
          memref.assume_alignment %2, 64 : memref<4xf32>
          %workgroup_id_x = hal.interface.workgroup.id[0] : index
          %workgroup_count_x = hal.interface.workgroup.count[0] : index
          %3 = affine.apply #map1()[%workgroup_id_x]
          %4 = affine.apply #map1()[%workgroup_count_x]
          %5 = affine.apply #map2()[%workgroup_id_x, %workgroup_count_x]
          scf.for %arg0 = %3 to %5 step %4 {
            %6 = memref.subview %2[%arg0] [4] [1] : memref<4xf32> to memref<4xf32, #map3>
            %7 = memref.subview %0[%arg0] [4] [1] : memref<4xf32> to memref<4xf32, #map3>
            %8 = memref.subview %1[%arg0] [4] [1] : memref<4xf32> to memref<4xf32, #map3>
            %9 = vector.transfer_read %7[%c0], %cst {in_bounds = [true]} : memref<4xf32, #map3>, vector<4xf32>
            %10 = vector.transfer_read %8[%c0], %cst {in_bounds = [true]} : memref<4xf32, #map3>, vector<4xf32>
            %11 = arith.mulf %9, %10 : vector<4xf32>
            vector.transfer_write %11, %6[%c0] {in_bounds = [true]} : vector<4xf32>, memref<4xf32, #map3>
          }
          scf.for %arg0 = %5 to %c4 step %4 {
            %6 = memref.subview %2[%arg0] [4] [1] : memref<4xf32> to memref<4xf32, #map3>
            %7 = memref.subview %0[%arg0] [4] [1] : memref<4xf32> to memref<4xf32, #map3>
            %8 = memref.subview %1[%arg0] [4] [1] : memref<4xf32> to memref<4xf32, #map3>
            %9 = vector.transfer_read %7[%c0], %cst {in_bounds = [true]} : memref<4xf32, #map3>, vector<4xf32>
            %10 = vector.transfer_read %8[%c0], %cst {in_bounds = [true]} : memref<4xf32, #map3>, vector<4xf32>
            %11 = arith.mulf %9, %10 : vector<4xf32>
            vector.transfer_write %11, %6[%c0] {in_bounds = [true]} : vector<4xf32>, memref<4xf32, #map3>
          }
          return
        }
      }
    }
  }
}

RemoveSingleIterationLoop crashes when analyzing the last loop in the function above (scf.for %arg0 = %5 to %c4 step %4).  alwaysRunsFirstIteration utility invokes substituteMin which tries to simplify the affine expression () -> (8 mod 0).  The mod 0 expression is not properly handled and compilation crashes with:
.../llvm-project/mlir/lib/IR/AffineExpr.cpp:1186: void mlir::SimpleAffineExprFlattener::visitModExp
r(mlir::AffineBinaryOpExpr): Assertion `rhsConst > 0 && "RHS constant has to be positive"' failed.

  %5 = affine.apply affine_map<()[s0, s1] -> (-((s0 * -4 + 4) mod (s1 * 4)) + 4)>()[%workgroup_id_x, %workgroup_count_x]

It looks more complicated than all the cases I've seen before. Could you elaborate how the IR is generated? What's the original IR (maybe at Linalg level) and the configurations?

That code is generated after applying peeling to the original loop. In particular, it's from iree/samples/simple_embedding/simple_embedding_test.mlir. Perhaps @matthias-springer can help clarify how that expression is generated.

Peeling on wrong loops might breaks the assumption in RemoveSingleIterationLoop. Do you have full dump log (i.e., -mlir-print-ir-after-all)? How do we repro the issue? Are there patches to apply?

Sorry, I thought it was obvious but it's actually not! I tried iree-opt simplify_bug.mlir -iree-codegen-remove-single-iteration-loop on the initial code that I provided and it looks like RemoveSingleIterationLoop is HAL dependent. I update the code above to also include the module but I'm still not able to reproduce with iree-opt. I'll check tomorrow with more time.
The loop before peeling is the following. It looks like a valid loop to peel to me:
#config = #iree_codegen.lowering_config<tile_sizes = [[4], [4], [0]]>
#device_target_cpu = #hal.device.target<"cpu", {executable_targets = [#hal.executable.target<"llvm", "embedded-elf-x86_64", {cpu_features = "", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 16 : index, target_triple = "x86_64-unknown-unknown-eabi-elf"}>]}>
#executable_layout = #hal.executable.layout<push_constants = 0, sets = [#hal.descriptor_set.layout<0, bindings = [#hal.descriptor_set.binding<0, storage_buffer>, #hal.descriptor_set.binding<1, storage_buffer>, #hal.descriptor_set.binding<2, storage_buffer>]>]>
#executable_target_embedded_elf_x86_64_ = #hal.executable.target<"llvm", "embedded-elf-x86_64", {cpu_features = "", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 16 : index, target_triple = "x86_64-unknown-unknown-eabi-elf"}>
#map0 = affine_map<()[s0] -> (s0 ceildiv 4)>
#map1 = affine_map<()[s0] -> (s0 * 4)>
#map2 = affine_map<(d0) -> (d0)>
#translation = #iree_codegen.translation_info<CPUDoubleTilingExpert workload_per_wg = [4]>
module attributes {hal.device.targets = [#device_target_cpu]} {
  hal.executable private @simple_mul_dispatch_0 {
    hal.executable.variant public @embedded_elf_x86_64, target = #executable_target_embedded_elf_x86_64_ {
      hal.executable.entry_point public @simple_mul_dispatch_0 ordinal(0) layout(#executable_layout) {translation_info = #translation} {
      ^bb0(%arg0: !hal.device, %arg1: index, %arg2: index, %arg3: index):
        %c1 = arith.constant 1 : index
        %0 = affine.apply #map0()[%arg1]
        hal.return %0, %c1, %c1 : index, index, index
      }
      builtin.module {
        func.func @simple_mul_dispatch_0() {
          %c1 = arith.constant 1 : index
          %c4 = arith.constant 4 : index
          %c0 = arith.constant 0 : index
          %0 = hal.interface.binding.subspan set(0) binding(0) type(storage_buffer) offset(%c0) alignment(64) : !flow.dispatch.tensor<readonly:4xf32>
          %1 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) offset(%c0) alignment(64) : !flow.dispatch.tensor<readonly:4xf32>
          %2 = hal.interface.binding.subspan set(0) binding(2) type(storage_buffer) offset(%c0) alignment(64) : !flow.dispatch.tensor<writeonly:4xf32>
          %workgroup_id_x = hal.interface.workgroup.id[0] : index
          %workgroup_count_x = hal.interface.workgroup.count[0] : index
          %3 = affine.apply #map1()[%workgroup_id_x]
          %4 = affine.apply #map1()[%workgroup_count_x]
          scf.for %arg0 = %3 to %c4 step %4 {
            %5 = flow.dispatch.tensor.load %2, offsets = [%arg0], sizes = [4], strides = [1] : !flow.dispatch.tensor<writeonly:4xf32> -> tensor<4xf32>
            %6 = flow.dispatch.tensor.load %0, offsets = [%arg0], sizes = [4], strides = [1] : !flow.dispatch.tensor<readonly:4xf32> -> tensor<4xf32>
            %7 = flow.dispatch.tensor.load %1, offsets = [%arg0], sizes = [4], strides = [1] : !flow.dispatch.tensor<readonly:4xf32> -> tensor<4xf32>
            %8 = linalg.generic {indexing_maps = [#map2, #map2, #map2], iterator_types = ["parallel"]} ins(%6, %7 : tensor<4xf32>, tensor<4xf32>) outs(%5 : tensor<4xf32>) attrs =  {__internal_linalg_transform__ = "1", lowering_config = #config, name = "mul.1"} {
            ^bb0(%arg1: f32, %arg2: f32, %arg3: f32):
              %9 = arith.mulf %arg1, %arg2 : f32
              linalg.yield %9 : f32
            } -> tensor<4xf32>
            flow.dispatch.tensor.store %8, %2, offsets = [%arg0], sizes = [4], strides = [%c1] : tensor<4xf32> -> !flow.dispatch.tensor<writeonly:4xf32>
          }
          return
        }
      }
    }
  }
}

Sorry for the confusion.. I meant that if it can get reproduced through iree-translate. I'd like to see full dump before jumping into this specific issue. The actual issue could happen in other places. We might want to fix it in the first place.
E.g., what's the IR before and after peeling. What loops are we target on for peeling? It looks like the peeling transform is applied on distributed loops. I'd expect it happens on the second tiling level. It would be clearer to me if you can provide the commit and IR dumps. We can also chat through VC if there are many details.

(Begin soap box) The use of RemoveSingleIterationLoop is a hack. We should really not be using it, but have it for reasons that are not entirely technical. (End soap box).
For purpose of prototyping might be worth just dropping this pass and seeing if things work. (worst case for development purposes add a flag that guards this pass usage, and leave it default true)

iree-opt --split-input-file --pass-pipeline='hal.executable(hal.executable.variant(builtin.module(func.func(iree-codegen-remove-single-iteration-loop))))' simplify_bug.mlir seems to repro it. I find surprising that we can't run passes in isolation and we need to run a "small pipeline" even for simple passes like this one. I guess that's because we have dependencies with the HAL dialect? Anyways...
I'm also attaching the output of print-ir-after-all. If you want to reproduce it yourself, you can pull https://github.com/dcaballe/iree/tree/peeling for IREE and https://github.com/dcaballe/llvm-project/tree/peeling for third-party/llvm.
If I remove RemoveSingleIterationLoop from the double tiling expert and peeling is disabled, tests/e2e/linalg_transform/linalg_transform.mlir.test and iree/compiler/Codegen/LLVMCPU/test/linalg_transform.mlir.test crash with:
iree-run-mlir: /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h:134: mlir::transform::TransformState::RegionScope::RegionScope(mlir::transform::Transform
State &, mlir::Region &): Assertion `state.regionStack.back()->isProperAncestor(&region) && "scope started at a non-nested region"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: iree-run-mlir /usr/local/google/home/diegocaballero/iree2/tests/e2e/linalg_transform/linalg_transform.mlir --iree-hal-target-backends=dylib-llvm-aot --iree-codegen-use-linalg-transform-interp --linalg-transf
orm-file-name=/usr/local/google/home/diegocaballero/iree2/tests/e2e/linalg_transform/linalg_transform_spec.mlir
 #0 0x0000000004852d4a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:11
 #1 0x0000000004852efb PrintStackTraceSignalHandler(void*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x0000000004851596 llvm::sys::RunSignalHandlers() /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Signals.cpp:103:5
 #3 0x0000000004853625 SignalHandler(int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f2428dd7200 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12200)
 #5 0x00007f24289878a1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
 #6 0x00007f2428971546 abort ./stdlib/abort.c:81:7
 #7 0x00007f242897142f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
 #8 0x00007f242897142f _nl_load_domain ./intl/loadmsgcat.c:970:34
 #9 0x00007f2428980222 (/lib/x86_64-linux-gnu/libc.so.6+0x31222)
#10 0x0000000007d98e84 mlir::transform::TransformState::RegionScope::RegionScope(mlir::transform::TransformState&, mlir::Region&) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Dialect/Transform
/IR/TransformInterfaces.h:135:7
#11 0x0000000007d9554b mlir::transform::TransformState::make_region_scope(mlir::Region&) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h:349:10
#12 0x0000000007e7cb90 mlir::transform::WithPDLPatternsOp::apply(mlir::transform::TransformResults&, mlir::transform::TransformState&) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Dialect/Transform/IR/TransformOps.cpp:313:22
#13 0x0000000007e6c2d6 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::WithPDLPatternsOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir
::transform::TransformResults&, mlir::transform::TransformState&) /usr/local/google/home/diegocaballero/iree2/build/debug/third_party/llvm-project/llvm/tools/mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h.inc:55:56
#14 0x0000000007e6eb63 mlir::transform::TransformOpInterface::apply(mlir::transform::TransformResults&, mlir::transform::TransformState&) /usr/local/google/home/diegocaballero/iree2/build/debug/third_party/llvm-project/llvm/tools/mlir
/include/mlir/Dialect/Transform/IR/TransformInterfaces.cpp.inc:10:14
#15 0x0000000007e6e768 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp:1
26:24
#16 0x0000000007d53523 (anonymous namespace)::LinalgTransformInterp::runOnOperation() /usr/local/google/home/diegocaballero/iree2/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp:97:24
#17 0x0000000004ac8cba mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:471:21
#18 0x0000000004ac92b4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /usr
/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:534:16
#19 0x0000000004acd571 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_4::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero
/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:456:12
#20 0x0000000004acd2f2 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool,
unsigned int)::$_4>(long, mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#21 0x0000000004d4b131 llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llv
m/include/llvm/ADT/STLFunctionalExtras.h:68:12
#22 0x0000000004d48785 mlir::Pass::runPipeline(mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Pass/Pass.h:195:12
#23 0x0000000007d0ab70 mlir::iree_compiler::(anonymous namespace)::LLVMCPULowerExecutableTargetPass::runOnOperation() /usr/local/google/home/diegocaballero/iree2/compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPULowerExecutableTarget.
cpp:236:14
#24 0x0000000004ac8cba mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:471:21
#25 0x0000000004ac92b4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /usr
/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:534:16
#26 0x0000000004acd571 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_4::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero
/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:456:12
#27 0x0000000004acd2f2 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool,
unsigned int)::$_4>(long, mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#28 0x0000000004d4b131 llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llv
m/include/llvm/ADT/STLFunctionalExtras.h:68:12
#29 0x0000000004d48785 mlir::Pass::runPipeline(mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Pass/Pass.h:195:12
#30 0x000000000782af37 mlir::iree_compiler::IREE::HAL::TranslateTargetExecutableVariantsPass::runOnOperation() /usr/local/google/home/diegocaballero/iree2/compiler/src/iree/compiler/Dialect/HAL/Transforms/TranslateExecutables.cpp:67:16

If I enable peeling, more tests are crashing with:
FAILED: samples/static_library/simple_mul_c_module.h samples/static_library/simple_mul_c_module.o samples/static_library/simple_mul_emitc.h /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library/simple_mul_c_module.h /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library/simple_mul_c_module.o /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library/simple_mul_emitc.h
cd /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library && /usr/local/google/home/diegocaballero/iree2/build/debug/tools/iree-compile --iree-mlir-to-vm-c-module --iree-hal-target-backends=dylib-llvm-aot --iree-llvm-link-embedded=false --iree-llvm-link-static --iree-llvm-static-library-output-path=simple_mul_c_module.o /usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir -o simple_mul_emitc.h
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: error: semi-affine expressions (modulo by non-const) are not supported
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:1:1: note: called from
func.func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: error: failed to legalize operation 'builtin.unrealized_conversion_cast' that was explicitly marked illegal
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:1:1: note: called from
func.func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: note: see current operation: %67 = "builtin.unrealized_conversion_cast"(%66) : (i64) -> index
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: error: failed to run translation of source executable to target executable for backend #hal.executable.target<"llvm", "static", {cpu_features = "", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 16 : index, target_triple = "x86_64-unknown-linux-gnu"}>
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:1:1: note: called from
func.func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
^

But I'm not sure if this happens because RemoveSingleIterationLoop is disabled or this is a new unrelated issue. It seems related to the mod operation as well so, before investigating this further, it would be great to have confirmation from @matthias-springer that the first example is a good candidate for peeling and peeling is generating the right code. Perhaps we are hitting a gap in the peeling implementation.

iree-opt --split-input-file --pass-pipeline='hal.executable(hal.executable.variant(builtin.module(func.func(iree-codegen-remove-single-iteration-loop))))' simplify_bug.mlir seems to repro it. I find surprising that we can't run passes in isolation and we need to run a "small pipeline" even for simple passes like this one. I guess that's because we have dependencies with the HAL dialect? Anyways...

That particular pass needs to look at the hal.executable.entry_point to remove the loop. Hence its a not great, and also why you need to whole nesting...

I'm also attaching the output of print-ir-after-all. If you want to reproduce it yourself, you can pull https://github.com/dcaballe/iree/tree/peeling for IREE and https://github.com/dcaballe/llvm-project/tree/peeling for third-party/llvm.
If I remove RemoveSingleIterationLoop from the double tiling expert and peeling is disabled, tests/e2e/linalg_transform/linalg_transform.mlir.test and iree/compiler/Codegen/LLVMCPU/test/linalg_transform.mlir.test crash with:

Strange. Didnt know that the linalg_transform relied on this. You can ignore these errors. If these are the only ones left we can pull in Nicolas to help.

iree-run-mlir: /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h:134: mlir::transform::TransformState::RegionScope::RegionScope(mlir::transform::Transform
State &, mlir::Region &): Assertion `state.regionStack.back()->isProperAncestor(&region) && "scope started at a non-nested region"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/[](https://github.com/llvm/llvm-project/issues/) and include the crash backtrace.
Stack dump:
0.      Program arguments: iree-run-mlir /usr/local/google/home/diegocaballero/iree2/tests/e2e/linalg_transform/linalg_transform.mlir --iree-hal-target-backends=dylib-llvm-aot --iree-codegen-use-linalg-transform-interp --linalg-transf
orm-file-name=/usr/local/google/home/diegocaballero/iree2/tests/e2e/linalg_transform/linalg_transform_spec.mlir
 #0 0x0000000004852d4a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:11
 #1 0x0000000004852efb PrintStackTraceSignalHandler(void*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x0000000004851596 llvm::sys::RunSignalHandlers() /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Signals.cpp:103:5
 #3 0x0000000004853625 SignalHandler(int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f2428dd7200 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12200)
 #5 0x00007f24289878a1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
 #6 0x00007f2428971546 abort ./stdlib/abort.c:81:7
 #7 0x00007f242897142f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
 #8 0x00007f242897142f _nl_load_domain ./intl/loadmsgcat.c:970:34
 #9 0x00007f2428980222 (/lib/x86_64-linux-gnu/libc.so.6+0x31222)
#10 0x0000000007d98e84 mlir::transform::TransformState::RegionScope::RegionScope(mlir::transform::TransformState&, mlir::Region&) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Dialect/Transform
/IR/TransformInterfaces.h:135:7
#11 0x0000000007d9554b mlir::transform::TransformState::make_region_scope(mlir::Region&) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h:349:10
#12 0x0000000007e7cb90 mlir::transform::WithPDLPatternsOp::apply(mlir::transform::TransformResults&, mlir::transform::TransformState&) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Dialect/Transform/IR/TransformOps.cpp:313:22
#13 0x0000000007e6c2d6 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::WithPDLPatternsOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir
::transform::TransformResults&, mlir::transform::TransformState&) /usr/local/google/home/diegocaballero/iree2/build/debug/third_party/llvm-project/llvm/tools/mlir/include/mlir/Dialect/Transform/IR/TransformInterfaces.h.inc:55:56
#14 0x0000000007e6eb63 mlir::transform::TransformOpInterface::apply(mlir::transform::TransformResults&, mlir::transform::TransformState&) /usr/local/google/home/diegocaballero/iree2/build/debug/third_party/llvm-project/llvm/tools/mlir
/include/mlir/Dialect/Transform/IR/TransformInterfaces.cpp.inc:10:14
#15 0x0000000007e6e768 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Dialect/Transform/IR/TransformInterfaces.cpp:1
26:24
#16 0x0000000007d53523 (anonymous namespace)::LinalgTransformInterp::runOnOperation() /usr/local/google/home/diegocaballero/iree2/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp:97:24
#17 0x0000000004ac8cba mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:471:21
#18 0x0000000004ac92b4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /usr
/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:534:16
#19 0x0000000004acd571 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_4::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero
/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:456:12
#20 0x0000000004acd2f2 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool,
unsigned int)::$_4>(long, mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#21 0x0000000004d4b131 llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llv
m/include/llvm/ADT/STLFunctionalExtras.h:68:12
#22 0x0000000004d48785 mlir::Pass::runPipeline(mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Pass/Pass.h:195:12
#23 0x0000000007d0ab70 mlir::iree_compiler::(anonymous namespace)::LLVMCPULowerExecutableTargetPass::runOnOperation() /usr/local/google/home/diegocaballero/iree2/compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPULowerExecutableTarget.
cpp:236:14
#24 0x0000000004ac8cba mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:471:21
#25 0x0000000004ac92b4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /usr
/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:534:16
#26 0x0000000004acd571 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_4::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero
/iree2/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:456:12
#27 0x0000000004acd2f2 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool,
unsigned int)::$_4>(long, mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#28 0x0000000004d4b131 llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::operator()(mlir::OpPassManager&, mlir::Operation*) const /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/llv
m/include/llvm/ADT/STLFunctionalExtras.h:68:12
#29 0x0000000004d48785 mlir::Pass::runPipeline(mlir::OpPassManager&, mlir::Operation*) /usr/local/google/home/diegocaballero/iree2/third_party/llvm-project/mlir/include/mlir/Pass/Pass.h:195:12
#30 0x000000000782af37 mlir::iree_compiler::IREE::HAL::TranslateTargetExecutableVariantsPass::runOnOperation() /usr/local/google/home/diegocaballero/iree2/compiler/src/iree/compiler/Dialect/HAL/Transforms/TranslateExecutables.cpp:67:16

If I enable peeling, more tests are crashing with:
FAILED: samples/static_library/simple_mul_c_module.h samples/static_library/simple_mul_c_module.o samples/static_library/simple_mul_emitc.h /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library/simple_mul_c_module.h /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library/simple_mul_c_module.o /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library/simple_mul_emitc.h
cd /usr/local/google/home/diegocaballero/iree2/build/debug/samples/static_library && /usr/local/google/home/diegocaballero/iree2/build/debug/tools/iree-compile --iree-mlir-to-vm-c-module --iree-hal-target-backends=dylib-llvm-aot --iree-llvm-link-embedded=false --iree-llvm-link-static --iree-llvm-static-library-output-path=simple_mul_c_module.o /usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir -o simple_mul_emitc.h
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: error: semi-affine expressions (modulo by non-const) are not supported
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:1:1: note: called from
func.func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: error: failed to legalize operation 'builtin.unrealized_conversion_cast' that was explicitly marked illegal
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:1:1: note: called from
func.func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: note: see current operation: %67 = "builtin.unrealized_conversion_cast"(%66) : (i64) -> index
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:3:8: error: failed to run translation of source executable to target executable for backend #hal.executable.target<"llvm", "static", {cpu_features = "", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 16 : index, target_triple = "x86_64-unknown-linux-gnu"}>
  %0 = "arith.mulf"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
       ^
/usr/local/google/home/diegocaballero/iree2/samples/static_library/simple_mul.mlir:1:1: note: called from
func.func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
^

But I'm not sure if this happens because RemoveSingleIterationLoop is disabled or this is a new unrelated issue. It seems related to the mod operation as well so, before investigating this further, it would be great to have confirmation from @matthias-springer that the first example is a good candidate for peeling and peeling is generating the right code. Perhaps we are hitting a gap in the peeling implementation.

Yeah this seems related to mod 0 issue. Btw, fact that mod 0 is appearing is itself strange. Is n mod 0 supposed to simplify to n?

it would be great to have confirmation from @matthias-springer that the first example is a good candidate for peeling and peeling is generating the right code. Perhaps we are hitting a gap in the peeling implementation.

The loop looks fine. There are actually no requirements for the loop itself. Any loop can be peeled. (Unless every iteration is already a full iteration, then we may not do anything, I forgot...) After the peeling, we try to simplify affine.max and affine.min ops inside of the loop. If there are invalid affine expressions somewhere inside the loop, this may fail.
An affine expression that has a mod 0 sounds ill-formed to me. It's like a division by zero, which is also invalid. I'm wondering where this is coming from. Are you sure it is generated during peeling?
The loop peeling replaces the upper bound of the loop with a new bound. If we have many constant parts in the computation, this new bound can be very simple. In the general case, with an SSA value step (like we have it here), it can get pretty complex. The upper bound is computed in SCF/Transforms/LoopSpecialization.cpp:
// New upper bound: %ub - (%ub - %lb) mod %step

An affine expression that has a mod 0 sounds ill-formed to me.

The mod 0 seems to be a thing, based on this TODO comment. Not sure how it should be resolved to, though.

Are you sure it is generated during peeling?

// New upper bound: %ub - (%ub - %lb) mod %step

You can search for 'Peel' in this dump. Peeling generates:
#map0 = affine_map<()[s0] -> (s0 ceildiv 4)>
#map1 = affine_map<()[s0] -> (s0 * 4)>
#map2 = affine_map<()[s0, s1, s2] -> (s1 - (s1 - s0) mod s2)>
#map3 = affine_map<(d0) -> (d0)>
...
          %3 = affine.apply #map1()[%workgroup_id_x]
          %4 = affine.apply #map1()[%workgroup_count_x]
          %5 = affine.apply #map2()[%3, %c4, %4]
          scf.for %arg0 = %3 to %5 step %4 {

Let's replace:

%c4 in map2: affine_map<()[s0, s1] -> (4 - (4 - s0) mod s1)>
%3 in map2: affine_map<()[s0, s1] -> (4 - (4 - s0 *4) mod s1)>
%4 in map2: affine_map<()[s0, s1] -> (4 - (4 - s0 *4) mod (s1 * 4))>
which can be canonicalized to affine_map<()[s0, s1] -> (-((s0 * -4 + 4) mod (s1 * 4)) + 4)>`. This looks good to me.

However, when we instantiate the map, s0 = workgroup_id_x and s1 = workgroup_count_x. workgroup_count_x should always be > 0, right? Something weird seems to be happening here in the simplifyMin call. I don't see any 'min' operation in the IR...

There are in fact no affine.min/affine.max ops in the IR. The loop peeling is actually pretty straightforward in that case. And looking at the IR in the dump, it looks like it does the right thing.
The mod 0 still looks very suspicious to me. I'd recommend looking into how this is generated. Maybe there is a bug in SimplifyTrivialLoops. I have no idea what SimplifyTrivialLoops is doing, but it almost looks like it is trying to compute something given the bounds of some value (GetMinMaxExprFn). With that in mind, the function name simplifyMin would make sense ("lower bound") and maybe does not refer to an affine.min op.

I think I know why. There are issues in getNumWorkgroup. IREE can't infer the bound, so they are replaced with 0. (The same issue happens in dynamic shapes, but I don't know why unconditionally converting them to zeros works.)
I dont find the documentation yet. I feel that it means unknown when setting the values to zeros. In this case, we should do nothing when they are zeros.
This should fix the issue: https://github.com/google/iree/pull/9258
For more exploration, I'd suggest to disable the pass in the pipeline.


fix(progress): do not abort compilation when emit fails

Summary
Minor fix to innerprogress plugin that prevents whole compilation if sendAPIDataToClient throws.
Related Links
closes https://github.com/web-infra-dev/rsdoctor/issues/481

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for your pr~


clickout.js:24 Uncaught: key is not defined

When used object as parameters like with {event: callback, active: true}, the error bellow as ocurred:
clickout.js:24 Uncaught: key is not defined
The problem is caused by this line in clickout.js:
if ( typeof args === 'object' ) {
    for (key in params) {
         // Arguments 'require' checking

The Javascript requires the let ou var keyword in this line.

Hello. it really is, my mistake, thanks a lot. Will be fixed within a few hours.

781dad8:
• fixing variable declaration in params
• changed version in NPM to 1.1.1
Please update the package. If everything is alright, I'll close this issue.

Thanks!


Bugfix: instance_group

这个 PR 实现什么功能/修复什么问题:
guest 删除的时候离开group的操作不应该放在RealDelete函数里面
是否需要 backport 到之前的 release 分支:

release/2.12

/area region

Codecov Report

Merging #3224 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #3224   +/-   ##
======================================
  Coverage    7.12%   7.12%
======================================
  Files         478     478
  Lines       77509   77509
======================================
  Hits         5524    5524
  Misses      71522   71522
  Partials      463     463

Flag
Coverage Δ

#aFlag
7.12% <ø> (ø)
:arrow_up:

Impacted Files
Coverage Δ

pkg/compute/models/guests.go
0.64% <ø> (ø)
: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 905fb30...01f31bd. Read the comment docs.

/cc @swordqiu

/lgtm

/approve


An attached table which source does not already exist can be pasted successfully

Storage Explorer Version: 1.10.0
Platform/OS: Windows 10
Architecture: x64
Commit: f06deb7a6
Regression From: Not a regression
Steps to reproduce:

Expand one account -> Select one table to attach with SAS URI.
Delete the original table from the selected account.
Expand 'Local & Attached' -> 'Storage Accounts' -> 'Tables'.
Make sure the current attached table cannot be opened.
Right click the attached table and select 'Copy Table'.
Select an another account -> Try to paste the attached table.

Expect Experience:
The attached table cannot be pasted successfully due to it does not exist.
Actual Experience:

The attached table can be pasted successfully.
The pasted table is empty.

I'm gonna say won't fix on this. This is similar to receiving a SAS URL to a table that doesn't exist. You can still attach regardless of whether the table is there or not. @MRayermannMSFT or @jinglouMSFT, do you agree?


New IP-Adapter model type (IPAdapterPlusXL)

What type of PR is this? (check all applicable)

[ ] Refactor
[x] Feature
[ ] Bug Fix
[ ] Optimization
[ ] Documentation Update
[ ] Community Node Submission

Have you discussed this change with the InvokeAI team?

[x] Yes
[ ] No, because:

Have you updated all relevant documentation?

[ ] Yes
[ ] No

Description
Add support for IPAdapterPlusXL based on https://github.com/tencent-ailab/IP-Adapter/commit/6219530507cb4696a0496f10c0e5a4f1dbdc7672.
This is required to support the new IP-Adapter model here: https://huggingface.co/InvokeAI/ip-adapter-plus_sdxl_vit-h
QA Instructions, Screenshots, Recordings
I tested manually that all of the IP-Adapter models here still work: https://huggingface.co/InvokeAI
Added/updated tests?

[ ] Yes
[x] No : Model dependent tests are coming soon, but not here yet.

@RyanJDick keeping light model separate?

@RyanJDick keeping light model separate?

The ip-adapter_sd15_light.bin model actually uses the standard IPAdapter architecture, so no new model is needed to run it. The only description I've found of what is meant by 'light' is in the commit message: "add the light version of ip-adapter (more compatible with text even scale=1.0)"

Yep - Looks like it does just work

@RyanJDick - Think I merged this prematurely.
[2023-10-04 22:48:00,108]::[InvokeAI]::ERROR --> Error while invoking:
Unexpected IP-Adapter model format: C:\Users\kentr\Invoke\models\sdxl\ip_adapter\ip_adapter_plus_sdxl_vit_h

@RyanJDick - Think I merged this prematurely.
[2023-10-04 22:48:00,108]::[InvokeAI]::ERROR --> Error while invoking: Unexpected IP-Adapter model format: C:\Users\kentr\Invoke\models\sdxl\ip_adapter\ip_adapter_plus_sdxl_vit_h

@hipsterusername How did you install that model? The name is different than the InvokeAI/ip-adapter-plus_sdxl_vit-h repo name. The name itself doesn't matter, but I'm wondering if the directory contents might be incorrect.

@RyanJDick - Think I merged this prematurely.
[2023-10-04 22:48:00,108]::[InvokeAI]::ERROR --> Error while invoking: Unexpected IP-Adapter model format: C:\Users\kentr\Invoke\models\sdxl\ip_adapter\ip_adapter_plus_sdxl_vit_h

@hipsterusername How did you install that model? The name is different than the InvokeAI/ip-adapter-plus_sdxl_vit-h repo name. The name itself doesn't matter, but I'm wondering if the directory contents might be incorrect.

Pulled from the GH repo. I can delete and retest this morning


Adding Profile data

hey @DSCRTUkota  , can you describe our issue  because  , i want to conrtibute on this .

@DSCRTUkota , could you please permit me to solve the issue and also give me a brief about the issue
-@kylashreddy.


Axis tool constraints not pasting right after https://github.com/wiremod/advdupe2/pull/324

I think we just need to use the bones rather than the entity. https://github.com/wiremod/advdupe2/blob/master/lua/advdupe2/sv_misc.lua#L40


Allow to kill tasks during a deployment

Killing tasks via the API is now always directly processed by the KillService. Before, when the wipe flag was not specified as true, killing tasks was indirected via the MarathonSchedulerService, and silently failed if the associated app was locked by a deployment, even if force=true was specified. With this patch, it is possible to kill tasks even if they are subject of a running deployment.
JIRA issues: MARATHON-1686

Let's see what the CI says :trollface:

Nobody requested it yet, but I think there should be an explicit integration test to verify a deployment runs fine with a task being killed in between.

a) starts a never-ending-deployment (1 agent, hostname UNIQUE, 2 instances)

on the second thought - I don't think this step is necessary. We're testing there a code path that doesn't exist anymore, so why should we? 🤔

The change looks great to me; I would like to see a couple of manual tests spelled out (and, run) to check this change in behavior. Can we add a few to the linked JIRA ticket?

Commandeering this.

Should be reconsidered once we have instance goals


Inconsistent line length (black vs 120)

What happened?
Black defines a line length of 88 characters, but other places still configure 120 characters:

setup.cfg
.pylintrc

What should've happened instead?
Consistency: use 88 characters everywhere. Especially because some IDEs will automatically use these values to show guides in the editor.

Pull request welcome!

I think we should follow Django and ignore the standard imposed by Black.
We have widescreen display that is widely available and there is no reason to be stuck in 88 characters. The Django standard, (119 characters) is good enough for me.
So the solution to this is:
1 - Create pyproject.toml and include the Black custom configuration [1].
2 - Migrate flake8 settings to pyproject.toml
3 - Migrate isort settings to pyproject.toml
4 - Update the .editorconfig to follow the max_line_length
references:
https://github.com/django/django/blob/master/.editorconfig
https://black.readthedocs.io/en/stable/pyproject_toml.html
https://timothycrosley.github.io/isort/docs/configuration/config_files/

Flake8 does not seem to have support for reading pyproject.toml yet
https://gitlab.com/pycqa/flake8/-/issues/428

The 2 and 3 are optional.

@luzfcb Moving configuration to pyproject.toml is interesting, but it seems to have some consequences (based on a quick reading of the linked issues). Maybe you can open a separate issue about it, so we can keep this discussion about the line length?
(I have no preference about the actual line length chosen, I just like consistency)

@janfabry since 2 and 3 are optional, I think the way to keep consistency is executing 1 and 4 to 7.

Hello! If you still need help wih this, I could follow steps 1 and 4-7

Are we still considering this? I can create a PR for this if you are open


Changed failure details background color to $neutral-2

Pull request checklist

[x] Addresses an existing issue: Fixes 1457633
[ ] N/A Added relevant unit test for your changes. (npm run test)
[ ] N/AVerified code coverage for the changes made. Check coverage report at: <rootDir>/test-results/unit/coverage
[x] Ran precheckin (npm run precheckin)
[x] Added screenshots/GIFs for UI changes.

Description of changes
Added background color to Failure Details. One-line change to CSS.

Notes for reviewers
The change is subtle but was requested by design. I also revised the padding and margins to match the figma.

IMO, with the changed background color it seems the 'Failure details' text should now have some padding. It wasn't as apparent when the background color was white

Sigh....
@karanbirsingh, you are right about this. The figma has the gray extending further to the left. More CSS to do.

Updated....


Add --dd option to output DD files

This PR adds the ability to output DD files instead of CSV so that we can run GAMS on the result of our tool.
I'm keeping this as a Draft while I work out how to run GAMS and gdxdiff in CI so that we can compare the gdx files we get with the ones we get on the ground truth.
For now, here's how to run Demo 1 through GAMS:
python times_excel_reader.py benchmarks/xlsx/DemoS_001 --output_dir benchmarks/out/DemoS_001-all --dd
cp gams_scaffold/* benchmarks/out/DemoS_001-all
cd benchmarks/out/DemoS_001-all
gams runmodel

If we have run the groundtruth DD files through GAMS too, then we can compare as follows:
gdxdiff ~/code/times-excel-reader/benchmarks/dd/DemoS_001-all/SCENARIO.gdx SCENARIO.gdx
# If gdxdiff complains about differences, view it as follows:
gdxdump diffile.gdx

Demo 1 currently has no differences with ground truth! Demo 2 has a small difference, but maybe only in the datatype for years?
% gdxdiff ~/code/times-excel-reader/benchmarks/dd/DemoS_002-all/SCENARIO.gdx SCENARIO.gdx
GDXDIFF          43.4.1 3da5975b Jun 22, 2023          DEG x86 64bit/macOS
File1 : /Users/sid/code/times-excel-reader/benchmarks/dd/DemoS_002-all/SCENARIO.gdx
File2 : SCENARIO.gdx
Summary of differences:
PRC_RESID   Keys are different
Output: diffile.gdx
GDXDiff finished
% gdxdump diffile.gdx
$onEmpty

Parameter PRC_RESID(*,*,*,*) Differences /
'REG1'.'2015'.'ROTEGAS'.'ins1' Eps,
'REG1'.'2015'.'TOTEOIL'.'ins1' Eps /;

Set FilesCompared(*) /
'File1' '/Users/sid/code/times-excel-reader/benchmarks/dd/DemoS_002-all/SCENARIO.gdx',
'File2' SCENARIO.gdx /;

$offEmpty

@olejandro , a couple of questions:

Right now, MILESTONYR is hard-coded in SCENARIO.RUN. Where do we get this value from for each Demo?
In order to run the ground truth Demos via GAMS, I need to $BATINCLUDE the DD files in the correct order in SCENARIO.RUN. In Demo 4 and above, there's quite a few files, how do I know what order to include them in?

Looks great @siddharth-krishna! 💪
On the questions:

For MILESTONYR there may be several alternatives specified in model files, so we may need to have a user input for that. There are currently at least two ways of specifying MILESTONYR in a TIMES model. One of them we looked at in #1
For the order, could use the order in #72? If yes, I can modify existing / add missing order.

@rschuchmann FYI

Thanks Olex. I'll introduce a command line argument for model years. But my second question asks about the order in which to process the DD files in the ground truth repo: https://github.com/olejandro/demos-dd
Are you proposing to add this order to the benchmarks YAML file? Would it be better placed in the demos-dd repo?

The reason why I am proposing the order in the YAML is because when we write out our dd files we also need an overwriting order. I.e. when we have rows generated by different scenario files that only differ in their value, we need to know which one to keep. This is the same order in which the dd files from the ground truth should be read.
Another reason for not including the order with the ground truth dd files is that they may be used to define several cases. This way we could reduce the number of ground truth dd variants to 1 per Demo (i.e. just DemoS_*-all).

I'm still a bit confused, but perhaps we can discuss further on our call today?
In the meantime, if you have the order of DD files from https://github.com/olejandro/demos-dd to be processed by GAMS I can run the gdxdiff tool on more Demos and report. Thanks.

The reason why I am proposing the order in the YAML is because when we write out our dd files we also need an overwriting order. I.e. when we have rows generated by different scenario files that only differ in their value, we need to know which one to keep. This is the same order in which the dd files from the ground truth should be read.
Another reason for not including the order with the ground truth dd files is that they may be used to define several cases. This way we could reduce the number of ground truth dd variants to 1 per Demo

Comment: The correct order will automatically determine which value is kept: for each parameter instance, the last value read by GAMS will survive.  In principle each case may have a different order of the scenarios, and thereby different final parameter values that will survive.

The reason why I am proposing the order in the YAML is because when we write out our dd files we also need an overwriting order. I.e. when we have rows generated by different scenario files that only differ in their value, we need to know which one to keep. This is the same order in which the dd files from the ground truth should be read.
Another reason for not including the order with the ground truth dd files is that they may be used to define several cases. This way we could reduce the number of ground truth dd variants to 1 per Demo

Comment: The correct order will automatically determine which value is kept: for each parameter instance, the last value read by GAMS will survive. In principle each case may have a different order of the scenarios, and thereby different final parameter values that will survive.

Thanks @Antti-L ! At present (with this PR) we are outputing just 2 dd files: TS and rest. That's why we are not relying on GAMS for overwritting.

A bit of a diversion, but wondering if you TIMES/GAMS experts could help me with an issue I'm having:
Because of a laptop accident, I'm working on a new machine (Ubuntu 20.04), but I'm unable to get GAMS to run on the demos-dd ground truth repo. (This used to work on my macbook.) I get errors such as:
--- ..... uc_cap.mod(42) 5 Mb 6 Errors
*** Error 119 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/uc_cap.mod
    Number (primary) expected
*** Error 140 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/uc_cap.mod
    Unknown symbol
*** Error   8 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/uc_cap.mod
    ')' expected
*** Error  37 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/uc_cap.mod
    '=l=' or '=e=' or '=g=' operator expected
*** Error 409 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/uc_cap.mod
    Unrecognizable item - skip to find a new statement
      looking for a ';' or a key word to get started again
--- .. pp_qack.mod(352) 5 Mb 20 Errors
*** Error 120 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/pp_qack.mod
    Unknown identifier entered as set
*** Error 340 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/pp_qack.mod
    A label/element with the same name exist. You may have forgotten
       to quote a label/element reference. For example,
       set i / a,b,c /; parameter x(i); x('a') = 10;
--- .. pp_qack.mod(353) 5 Mb
--- $echo File /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/END_GAMS
***
*** Abort "*** ERRORS IN GAMS COMPILE ***"
***
*** Error 343 in /home/sid/times-excel-reader/benchmarks/dd/DemoS_001-all/source/err_stat.mod

I also tried to run https://github.com/etsap-TIMES/TIMES_Demo but I got errors there too:
*** Error 461 in /home/sid/TIMES_Demo/model/peak_rsv.dd
    Cannot have empty data statement without knowing dimension
--- . peak_rsv.dd(26) 3 Mb
--- demo12.run(51) 3 Mb
--- . refinery.dd(12) 3 Mb 9 Errors
*** Error 461 in /home/sid/TIMES_Demo/model/refinery.dd
    Cannot have empty data statement without knowing dimension
--- . refinery.dd(39) 3 Mb
--- demo12.run(52) 3 Mb
--- . demproj_dtcar.dd(12) 3 Mb 10 Errors
*** Error 461 in /home/sid/TIMES_Demo/model/demproj_dtcar.dd
    Cannot have empty data statement without knowing dimension
--- . demproj_dtcar.dd(26) 3 Mb
--- demo12.run(53) 3 Mb
--- . uc_nuc_maxcap.dd(49) 3 Mb
--- demo12.run(54) 3 Mb
--- . bounds-uc_wsets.dd(74) 3 Mb
--- demo12.run(66) 3 Mb 11 Errors
*** Error 282 in /home/sid/TIMES_Demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(66) 3 Mb 11 Errors
*** Status: Compilation error(s)
--- Job demo12.run Stop 07/21/23 07:06:55 elapsed 0:00:00.027
sh: 1: /home/sid/TIMES_Demo/model/../source: Permission denied
--- rundemo.gms(12) 2 Mb 1 Error
*** above call failed, RC=126
*** ERRORLEVEL set to 1
*** Error 330 in /home/sid/TIMES_Demo/model/rundemo.gms
    CALL failed
--- rundemo.gms(14) 2 Mb
*** Could not open GDX: /home/sid/TIMES_Demo/model/demo12.gdx
*** Msg: No such file or directory

Am I missing some GAMS setup step? Or is this a GAMS version issue? I'm using the latest version gams43.4_linux_x64_64_sfx. The trnsport demo model that game with GAMS runs fine.

@olejandro I get similar errors with your times-dk_gams:
*** Error 600 in /home/sid/times-dk_gams/source/pp_qack.mod
    Could not match index space
--- .. pp_qack.mod(231) 46 Mb 18 Errors
*** Error 120 in /home/sid/times-dk_gams/source/pp_qack.mod
    Unknown identifier entered as set
*** Error 340 in /home/sid/times-dk_gams/source/pp_qack.mod
    A label/element with the same name exist. You may have forgotten
       to quote a label/element reference. For example,
       set i / a,b,c /; parameter x(i); x('a') = 10;
*** Error 171 in /home/sid/times-dk_gams/source/pp_qack.mod
    Domain violation for set
*** Error 148 in /home/sid/times-dk_gams/source/pp_qack.mod
    Dimension different - The symbol is referenced with more/less
       indices as declared
*** Error 120 in /home/sid/times-dk_gams/source/pp_qack.mod
    Unknown identifier entered as set
*** Error 340 in /home/sid/times-dk_gams/source/pp_qack.mod
    A label/element with the same name exist. You may have forgotten
       to quote a label/element reference. For example,
       set i / a,b,c /; parameter x(i); x('a') = 10;
*** Error 171 in /home/sid/times-dk_gams/source/pp_qack.mod
    Domain violation for set
*** Error 148 in /home/sid/times-dk_gams/source/pp_qack.mod
    Dimension different - The symbol is referenced with more/less
       indices as declared
--- .. pp_qack.mod(232) 46 Mb 20 Errors
*** Error 120 in /home/sid/times-dk_gams/source/pp_qack.mod
    Unknown identifier entered as set
*** Error 340 in /home/sid/times-dk_gams/source/pp_qack.mod
    A label/element with the same name exist. You may have forgotten
       to quote a label/element reference. For example,
       set i / a,b,c /; parameter x(i); x('a') = 10;
--- .. pp_qack.mod(233) 46 Mb 22 Errors
*** Error 120 in /home/sid/times-dk_gams/source/pp_qack.mod
    Unknown identifier entered as set
*** Error 340 in /home/sid/times-dk_gams/source/pp_qack.mod
    A label/element with the same name exist. You may have forgotten
       to quote a label/element reference.  You may have forgotten
       to quote a label/element reference. For example,
       set i / a,b,c /; parameter x(i); x('a') = 10;
--- .. pp_qack.mod(349) 46 Mb
--- ... pp_qaput.mod(16) 46 Mb
--- .. pp_qack.mod(354) 46 Mb
--- ... pp_qaput.mod(16) 46 Mb
--- .. pp_qack.mod(362) 46 Mb
--- ... pp_qaput.mod(16) 46 Mb
--- .. pp_qack.mod(367) 46 Mb
--- ... pp_qaput.mod(16) 46 Mb
--- .. pp_qack.mod(369) 46 Mb
--- . maindrv.mod(103) 46 Mb
--- .. err_stat.mod(43) 46 Mb
--- $echo File /home/sid/times-dk_gams/END_GAMS
***
*** Abort "*** ERRORS IN GAMS COMPILE ***"
***
*** Error 343 in /home/sid/times-dk_gams/source/err_stat.mod

Here are the LST files (runmodel-dk is from times-dk, rundemo is from TIMES_Demo, SCENARIO and runmodel-demo1 is from DemoS_001-all):
runmodel-demo1.lst.txt
SCENARIO.lst.txt
rundemo.lst.txt
demo12.lst.txt
runmodel-dk.lst.txt
DTU_Frozen_policy_scenarie.lst.txt

Thank you @Antti-L! By the way should we consider automated testing of times source code on Linux using github actions? (just remembering that you mentioned that you didn't have a Linux at your disposal in that thread)

Thank you @Antti-L but I'm afraid neither filecase=2 nor filecase=4 seem to solve my issue with TIMES_Demo. I even changed the folder directory to times_demo, and ensured that the absolute path was fully in lowercase. Here is my terminal output:
sid@simfazer:~/times_demo/model$ pwd
/home/sid/times_demo/model
sid@simfazer:~/times_demo/model$ ls
base.dd             demproj_dtcar.dd  syssettings.dd
bounds-uc_wsets.dd  newtechs.dd       trade_param.dd
dem_ref.dd          peak_rsv.dd       uc_nuc_maxcap.dd
demo12.run          refinery.dd
demo12_ts.dd        rundemo.gms

sid@simfazer:~/times_demo/model$ gams rundemo filecase=2
--- Job rundemo Start 07/22/23 07:57:01 43.4.1 3da5975b LEX-LEG x86 64bit/Linux
--- Applying:
    /opt/gams/gams43.4_linux_x64_64_sfx/gmsprmun.txt
--- GAMS Parameters defined
    Input /home/sid/times_demo/model/rundemo.gms
    ScrDir /home/sid/times_demo/model/225a/
    SysDir /opt/gams/gams43.4_linux_x64_64_sfx/
    FileCase 2
Licensee: ETSAP Project License                          S230310|0002CO-GEN
          GAMS Software GmbH, Braunschweig Office                   DCE2714
          /opt/gams/gams43.4_linux_x64_64_sfx/gamslice.txt
          License Admin: Frederik Fiand<EMAIL_ADDRESS>
          Other time limited license
Processor information: 1 socket(s), 8 core(s), and 16 thread(s) available
GAMS 43.4.1   Copyright (C) 1987-2023 GAMS Development. All rights reserved
--- Starting compilation
--- rundemo.gms(12) 2 Mb
--- Job demo12.run Start 07/22/23 07:57:01 43.4.1 3da5975b LEX-LEG x86 64bit/Linux
--- Applying:
    /opt/gams/gams43.4_linux_x64_64_sfx/gmsprmun.txt
--- GAMS Parameters defined
    Input /home/sid/times_demo/model/demo12.run
    ScrDir /home/sid/times_demo/model/225b/
    SysDir /opt/gams/gams43.4_linux_x64_64_sfx/
    InputDir1 /home/sid/times_demo/model/
Licensee: ETSAP Project License                          S230310|0002CO-GEN
          GAMS Software GmbH, Braunschweig Office                   DCE2714
          /opt/gams/gams43.4_linux_x64_64_sfx/gamslice.txt
          License Admin: Frederik Fiand<EMAIL_ADDRESS>
          Other time limited license
Processor information: 1 socket(s), 8 core(s), and 16 thread(s) available
GAMS 43.4.1   Copyright (C) 1987-2023 GAMS Development. All rights reserved
--- Starting compilation
--- demo12.run(35) 2 Mb
--- . demo12_ts.dd(11) 3 Mb
--- demo12.run(39) 3 Mb 1 Error
*** Error 282 in /home/sid/times_demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(42) 3 Mb 2 Errors
*** Error 282 in /home/sid/times_demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(45) 3 Mb
--- . base.dd(2769) 3 Mb 3 Errors
*** Error 461 in /home/sid/times_demo/model/base.dd
    Cannot have empty data statement without knowing dimension
--- . base.dd(4196) 3 Mb
--- demo12.run(46) 3 Mb
--- . newtechs.dd(685) 3 Mb 4 Errors
*** Error 461 in /home/sid/times_demo/model/newtechs.dd
    Cannot have empty data statement without knowing dimension
--- . newtechs.dd(1400) 3 Mb
--- demo12.run(47) 3 Mb
--- . trade_param.dd(12) 3 Mb 5 Errors
*** Error 461 in /home/sid/times_demo/model/trade_param.dd
    Cannot have empty data statement without knowing dimension
--- . trade_param.dd(20) 3 Mb
--- demo12.run(48) 3 Mb
--- . dem_ref.dd(12) 3 Mb 6 Errors
*** Error 461 in /home/sid/times_demo/model/dem_ref.dd
    Cannot have empty data statement without knowing dimension
--- . dem_ref.dd(783) 3 Mb
--- demo12.run(49) 3 Mb
--- . syssettings.dd(12) 3 Mb 7 Errors
*** Error 461 in /home/sid/times_demo/model/syssettings.dd
    Cannot have empty data statement without knowing dimension
--- . syssettings.dd(198) 3 Mb
--- demo12.run(50) 3 Mb
--- . peak_rsv.dd(18) 3 Mb 8 Errors
*** Error 461 in /home/sid/times_demo/model/peak_rsv.dd
    Cannot have empty data statement without knowing dimension
--- . peak_rsv.dd(26) 3 Mb
--- demo12.run(51) 3 Mb
--- . refinery.dd(12) 3 Mb 9 Errors
*** Error 461 in /home/sid/times_demo/model/refinery.dd
    Cannot have empty data statement without knowing dimension
--- . refinery.dd(39) 3 Mb
--- demo12.run(52) 3 Mb
--- . demproj_dtcar.dd(12) 3 Mb 10 Errors
*** Error 461 in /home/sid/times_demo/model/demproj_dtcar.dd
    Cannot have empty data statement without knowing dimension
--- . demproj_dtcar.dd(26) 3 Mb
--- demo12.run(53) 3 Mb
--- . uc_nuc_maxcap.dd(49) 3 Mb
--- demo12.run(54) 3 Mb
--- . bounds-uc_wsets.dd(74) 3 Mb
--- demo12.run(66) 3 Mb 11 Errors
*** Error 282 in /home/sid/times_demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(66) 3 Mb 11 Errors
*** Status: Compilation error(s)
--- Job demo12.run Stop 07/22/23 07:57:01 elapsed 0:00:00.009
sh: 1: /home/sid/times_demo/model/../source: Permission denied
--- rundemo.gms(12) 2 Mb 1 Error
*** above call failed, RC=126
*** ERRORLEVEL set to 1
*** Error 330 in /home/sid/times_demo/model/rundemo.gms
    CALL failed
--- rundemo.gms(14) 2 Mb
*** Could not open GDX: /home/sid/times_demo/model/demo12.gdx
*** Msg: No such file or directory
-------------------------------------------------------------------------------
--- The GAMS run for the TIMES model demo12 has been completed.
--- See folder /home/sid/times_demo/model/ for output files from the run:
         - demo12.lst for the GAMS listing file
         - demo12.gdx for the composite GDX file
         - demo12.vd* for the results files
--- See also /home/sid/times_demo/model/QA_CHECK.LOG for the TIMES QA log.
-------------------------------------------------------------------------------
sh: 1: ask: not found
*** above call failed, RC=127
*** ERRORLEVEL set to 1
*** Error 330 in /home/sid/times_demo/model/rundemo.gms
    CALL failed
--- rundemo.gms(34) 2 Mb 2 Errors
*** Status: Compilation error(s)
--- Job rundemo.gms Stop 07/22/23 07:57:01 elapsed 0:00:00.040

sid@simfazer:~/times_demo/model$ gams rundemo filecase=4
--- Job rundemo Start 07/22/23 07:57:45 43.4.1 3da5975b LEX-LEG x86 64bit/Linux
--- Applying:
    /opt/gams/gams43.4_linux_x64_64_sfx/gmsprmun.txt
--- GAMS Parameters defined
    Input /home/sid/times_demo/model/rundemo.gms
    ScrDir /home/sid/times_demo/model/225a/
    SysDir /opt/gams/gams43.4_linux_x64_64_sfx/
    FileCase 4
Licensee: ETSAP Project License                          S230310|0002CO-GEN
          GAMS Software GmbH, Braunschweig Office                   DCE2714
          /opt/gams/gams43.4_linux_x64_64_sfx/gamslice.txt
          License Admin: Frederik Fiand<EMAIL_ADDRESS>
          Other time limited license
Processor information: 1 socket(s), 8 core(s), and 16 thread(s) available
GAMS 43.4.1   Copyright (C) 1987-2023 GAMS Development. All rights reserved
--- Starting compilation
--- rundemo.gms(12) 2 Mb
--- Job demo12.run Start 07/22/23 07:57:45 43.4.1 3da5975b LEX-LEG x86 64bit/Linux
--- Applying:
    /opt/gams/gams43.4_linux_x64_64_sfx/gmsprmun.txt
--- GAMS Parameters defined
    Input /home/sid/times_demo/model/demo12.run
    ScrDir /home/sid/times_demo/model/225b/
    SysDir /opt/gams/gams43.4_linux_x64_64_sfx/
    InputDir1 /home/sid/times_demo/model/
Licensee: ETSAP Project License                          S230310|0002CO-GEN
          GAMS Software GmbH, Braunschweig Office                   DCE2714
          /opt/gams/gams43.4_linux_x64_64_sfx/gamslice.txt
          License Admin: Frederik Fiand<EMAIL_ADDRESS>
          Other time limited license
Processor information: 1 socket(s), 8 core(s), and 16 thread(s) available
GAMS 43.4.1   Copyright (C) 1987-2023 GAMS Development. All rights reserved
--- Starting compilation
--- demo12.run(35) 2 Mb
--- . demo12_ts.dd(11) 3 Mb
--- demo12.run(39) 3 Mb 1 Error
*** Error 282 in /home/sid/times_demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(42) 3 Mb 2 Errors
*** Error 282 in /home/sid/times_demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(45) 3 Mb
--- . base.dd(2769) 3 Mb 3 Errors
*** Error 461 in /home/sid/times_demo/model/base.dd
    Cannot have empty data statement without knowing dimension
--- . base.dd(4196) 3 Mb
--- demo12.run(46) 3 Mb
--- . newtechs.dd(685) 3 Mb 4 Errors
*** Error 461 in /home/sid/times_demo/model/newtechs.dd
    Cannot have empty data statement without knowing dimension
--- . newtechs.dd(1400) 3 Mb
--- demo12.run(47) 3 Mb
--- . trade_param.dd(12) 3 Mb 5 Errors
*** Error 461 in /home/sid/times_demo/model/trade_param.dd
    Cannot have empty data statement without knowing dimension
--- . trade_param.dd(20) 3 Mb
--- demo12.run(48) 3 Mb
--- . dem_ref.dd(12) 3 Mb 6 Errors
*** Error 461 in /home/sid/times_demo/model/dem_ref.dd
    Cannot have empty data statement without knowing dimension
--- . dem_ref.dd(783) 3 Mb
--- demo12.run(49) 3 Mb
--- . syssettings.dd(12) 3 Mb 7 Errors
*** Error 461 in /home/sid/times_demo/model/syssettings.dd
    Cannot have empty data statement without knowing dimension
--- . syssettings.dd(198) 3 Mb
--- demo12.run(50) 3 Mb
--- . peak_rsv.dd(18) 3 Mb 8 Errors
*** Error 461 in /home/sid/times_demo/model/peak_rsv.dd
    Cannot have empty data statement without knowing dimension
--- . peak_rsv.dd(26) 3 Mb
--- demo12.run(51) 3 Mb
--- . refinery.dd(12) 3 Mb 9 Errors
*** Error 461 in /home/sid/times_demo/model/refinery.dd
    Cannot have empty data statement without knowing dimension
--- . refinery.dd(39) 3 Mb
--- demo12.run(52) 3 Mb
--- . demproj_dtcar.dd(12) 3 Mb 10 Errors
*** Error 461 in /home/sid/times_demo/model/demproj_dtcar.dd
    Cannot have empty data statement without knowing dimension
--- . demproj_dtcar.dd(26) 3 Mb
--- demo12.run(53) 3 Mb
--- . uc_nuc_maxcap.dd(49) 3 Mb
--- demo12.run(54) 3 Mb
--- . bounds-uc_wsets.dd(74) 3 Mb
--- demo12.run(66) 3 Mb 11 Errors
*** Error 282 in /home/sid/times_demo/model/demo12.run
    Unable to open include file
       Hint: Does the filename need to be quoted?
--- demo12.run(66) 3 Mb 11 Errors
*** Status: Compilation error(s)
--- Job demo12.run Stop 07/22/23 07:57:45 elapsed 0:00:00.028
sh: 1: /home/sid/times_demo/model/../source: Permission denied
--- rundemo.gms(12) 2 Mb 1 Error
*** above call failed, RC=126
*** ERRORLEVEL set to 1
*** Error 330 in /home/sid/times_demo/model/rundemo.gms
    CALL failed
--- rundemo.gms(14) 2 Mb
*** Could not open GDX: /home/sid/times_demo/model/demo12.gdx
*** Msg: No such file or directory
-------------------------------------------------------------------------------
--- The GAMS run for the TIMES model demo12 has been completed.
--- See folder /home/sid/times_demo/model/ for output files from the run:
         - demo12.lst for the GAMS listing file
         - demo12.gdx for the composite GDX file
         - demo12.vd* for the results files
--- See also /home/sid/times_demo/model/QA_CHECK.LOG for the TIMES QA log.
-------------------------------------------------------------------------------
sh: 1: ask: not found
*** above call failed, RC=127
*** ERRORLEVEL set to 1
*** Error 330 in /home/sid/times_demo/model/rundemo.gms
    CALL failed
--- rundemo.gms(34) 2 Mb 2 Errors
*** Status: Compilation error(s)
--- Job rundemo.gms Stop 07/22/23 07:57:45 elapsed 0:00:00.054

The first errors are in lines 39 and 42 of demo12.run, which are:
$BATINCLUDE initsys.mod

* declare the (system/user) empties
$BATINCLUDE initmty.mod

I checked that both files exist (in the source/ directory) and that I am able to open them. Changing these above lines to quote the filenames, as suggested by the error message, doesn't help either...

Anyway, the error is Unable to open include file although as you say, the file is there and readable.  The GAMS code filenames are all in lower case in the TIMES source code, and those include statements also use lower case for the filename.  So, all seems fine, but something is still missing, on Linux.  On Windows all works fine, of course.
Sorry, but I cannot investigate the issue as I don't have any Linux system. Maybe Olex can help?

Ok, I think I can see where the problem is with your test run of  rundemo.gms
Your post above shows only:  InputDir1 /home/sid/times_demo/model/, and no InputDir2, meaning that for some reason your GAMS version on Ubuntu does not see the second InputDir, which is the ../source folder. You could test by fixing that in the GAMS call in rundemo.gms.
However, if you already can run the TIMES-DK model without errors, then that demonstrates that you are basically all set.

I've managed to successfully run Demo1 from the zip file from my previous comment in the GitHub Actions CI using a macOS runner: https://github.com/etsap-TIMES/times-excel-reader/actions/runs/5667512041/job/15356388527
The exact same files fail to run on Ubuntu using GAMS 41.5, 43.4, or 44.1. Very curious.
I guess this means we have a temporary solution: use the macOS runner for GitHub Actions? I'll work on adding a macOS test that runs our tool and compares it to the ground truth DD files using gdxdiff for now.

Well, like the earlier ones, these new errors have nothing to do with TIMES as such.  They are coming from the rundemo.gms wrapper file, which is only meant for running the TIMES Demo by beginner users on Windows. If you read again the GAMS output, this new error is different, and this time it is caused by the restart file specification being wrong on Ubuntu, which is again easy to fix for Ubuntu:  rundemo.zip
For normal TIMES runs, one of course never uses rundemo.gms.  I don't think you should either; just run GAMS directly on the RUN file.

As to the Actions failing on Ubuntu, there again one clear reason for that failure is easy to see: In the action, you use runmodel.gms, which in turn calls GAMS on the RUN file.  But you are not using the filecase=2 or filecase=4 command-line parameter in that call, which you should always use when running TIMES on u**x.

Thanks @Antti-L! I am indeed a complete beginner when it comes to GAMS, so this has been most helpful.
Your modified rundemo.gms file allowed me to successfully run the Times Demo on Ubuntu. (Why did changing the forward slash to a backward slash fix it? It's not a path separator is it, because it resulted in /tmp/times_demo/source_times.g00..) Would you like me to open a PR to add linux support to the Times Demo? Perhaps a separate rundemo-linux.gms file?
I also managed to run DemoS_001-all.zip on Ubuntu after adding filecase=4 and renaming SCENARIO.RUN to scenario.run. Thanks!
Now I have everything I need to run GAMS on our tool's output and compare with the ground truth. :)

Would you like me to open a PR to add linux support to the Times Demo? Perhaps a separate rundemo-linux.gms file?

My changes for the Ubuntu compatibility have already been updated there, so what would be the purpose of opening a "pull request", if that is what you mean?  What should be pulled, and from where? Do you have such a rundemo-linux.gms containing further updates not disclosed thus far?  As for me, my only remaining confusion is about the additional error (which was shown in your logs above) about invoking ask:
sh: ask: command not found
*** above call failed, RC=127
The executable ask should be included in the GAMS installation, and as such, it should be found in the GAMS system path (like it is under Windows). As the Ubuntu expert here, can you enlighten me about that error? Can you confirm whether ask is included in the Ubuntu version of GAMS, and if it is, why was there that error?

My changes for the Ubuntu compatibility have already been updated there, so what would be the purpose of opening a "pull request", if that is what you mean? What should be pulled, and from where?

My comment was written 3 hours before your commit that added the rundemo.gms fix to the TIMES_Demo repo. I was merely proposing to open a PR with that fix.

Do you have such a rundemo-linux.gms containing further updates not disclosed thus far?

I don't understand the fix exactly, but my guess was that the fix was changing a Windows-style \ to a *nix-style /. If we just change \ to /, would it still run on Windows? Assuming it wouldn't, I thought perhaps we'd need one rundemo file for Windows and one for *nix.
Btw, your commit doesn't fix the problem in *nix unless the user has placed the Times Demo in an entirely lowercase path. This is probably not the case because by default if you checkout the repo, it is placed in a folder with the same name as the repo i.e. TIMES_Demo. Perhaps we switch to filecase=4 or make the repo name lowercase?
There's still this error I see on Ubuntu, perhaps this is because my default GAMS installation picked a solver I don't have or have not configured?
*** Error Cannot open parameter file "/home/sid/TIMES_Demo/model/cbc.opt"
*** Error Error code = 2; No such file or directory

Can you confirm whether ask is included in the Ubuntu version of GAMS, and if it is, why was there that error?

I cannot find ask in either the Ubuntu or macOS installations of GAMS.

Looks like the ask command pops up a GUI window to get user input, so it won't work on the terminal or on CI

Looks like the ask command pops up a GUI window to get user input, so it won't work on the terminal or on CI

Yes, the whole purpose of the rundemo wrapper is to 1) make it very easy to run the demo, and 2) to inform the beginner user about the files produced by the TIMES run after it has been completed.  Therefore, a pop-up message box is of course highly desirable.  The rundemo.gms wrapper is certainly not meant to be used for any automation, such as Github actions.
Ok, if ask is really not included on Linux distributions of GAMS, I guess we should resort to using something simple like notify-send, which I guess is always available on Linux.

Sorry for the inadvertent status change!  I wanted to know what is behind the "Ready for Review" button, and clicked on it.  I don't know how to revert that status change...

Current status:
Benchmark        Time (s)  Result
-------------  ----------  ------------------
DemoS_001-all         1.0  OK
DemoS_002-all         1.4  Different
DemoS_003-all         1.6  Different
DemoS_004             1.7  Different
DemoS_004a            1.7  Different
DemoS_004b            1.7  Different
DemoS_004-all         1.8  Different
DemoS_005-all         2.1  Different
DemoS_006-all         2.6  Different
DemoS_007-all         3.5  Error running GAMS
DemoS_008-all        14.5  Error running GAMS
DemoS_009-all        15.7  Error running GAMS
DemoS_010-all        16.2  Error running GAMS
DemoS_011-all        16.5  Error running GAMS
DemoS_012-all        16.7  Error running GAMS

I'll update the summary table to show the size of the diff file so that we can track progress towards OK / 100%.
The differences in 2-4 seem to be because of keys that are years being string instead of integers.
The errors in Demo 7 onwards seem to be because of domain violations -- perhaps incorrect order of sets/parameters in the generated DD files?

You can see the output of GAMS here:

Thanks.  I can see that the errors (for Demos7 at least) were not at all order issues, but quite some different kind of errors:

TRACO2 was not defined as a COM_GRP at all (domain). All commodities must be.
COM_STEP parameters were written out without any commodity index
The UC name 'UC_GrowthOfNewCars' was not defined as an UC_N at all (domain)

Add the value of MILESTONYR to benchmarks.yml for each Demo. How do I obtain the correct values for each Demo?

The actual sets used in the Demo runs can be obtained from the corresponding RUN files produced by VEDA. But the full set is easy to obtain, as you are writing out the parameters B(year) and E(year), i.e. the full set of MILESTONYR in the Demo models is consisting of those years, for which B and E are defined. That set may only be changed in the actual run by "truncation" (i.e. a few last years may be dropped out).

Thanks @Antti-L ! I'll work on fixing these issues in the next PR.


Update Textarea.swift

Textarea bug: attribute value for disabled should be "disabled" and not "autofocus"
Tibor, this is the first time ever that I make a code change in Github. I hope, I do it correctly. Please check. Thx

Nice catch, thank you very much for the contribution. You did a nice job. :)


Fix 'v' hotkey image searching behavior.

It fixes 'v' hotkey image search behavior according to what asked in issue.
Implementation:

Search in current recipient block.
If image not found then move to last message of its upper recipient block.
If recipient blocks on upper side finish up. Then start form selected message and move downwards searching for image.

The basic working of this functionality has been tested by me.
Fixes #7621

@rishig Please review .

This will select and preview emojis because it looks for .message_content img, where it should really be looking for .message_inline_image img, which is what the preview images at the bottom are selected from.

Otherwise the rest of the behavior seems to work well!

@brockwhittaker I made necessary changes. Please review.

This looks good @pradeepgangwar.
Ready for merge @showell.

merged thanks @pradeepgangwar!


Transfer String data to wifi enabled device.

Firstly, thank you for this wonderful library.
I want to transfer data using wifi to connected wifi hotspot device. e.g. Android device has started hotspot, I have connected my iPhone wifi to that Android's hotspot. Now want to pass String data to that Android device.
Is it possible? How can I achieve this functionality just like Xender.
Thanks,
Rashesh

Hello, dear Rashesh-Bosamiya,
Actually, the library does not provide such a functionality, it is just for discovering IP address, but according to my experience, you just need to run on android device small Http server such as NanoHttp(or anything similar) and make a call to it using gateway IP address as server IP(you can get it with FGRoute when it is connected to hotspot). You can make calls like you do to the backend, GET, POST, etc. In this way, the android device becomes a small, local server for your ios app.
p.s. this is the easiest way, also you can try to use sockets.

Thank you, @Feghal , for your response.
I will look forward into the way you suggested.
However, In order to make API call do we really need internet connectivity using gateway IP address as server IP?
Further more, I am not much aware about sockets, can you suggest good library for socket connection?
Although, I would like to contact you separately for help, if required.
Thanks!
Rashesh

@Rashesh-Bosamiya No, there is no need for real internet connection, also it will not spend any data, because You will perform http requests locally, so your endpoint will be the android device itself.
I can only suggest you to use CocoaAsyncSocket for iOS, but for Android side I am not sure. This question is not related to library itself, so future-more if you will have any question about this, contact me via my direct email<EMAIL_ADDRESS>I will be happy to help.

Thank you, @Feghal.
Firstly, I admire your considerable suggestions.
I would expect to keep this ticket open, until I come up with certain solution.
Again Thanks!
Rashesh


Create Home Window

Simple home page with a nice design (potentially from HTML5 up)

all links that forward to other pages should show a currently under development tag
the log in functionality should be disabled
there should be a button that let's you proceed without log-in and that should also just forward to a in development page

The home page uses the Phantom template from https://html5up.net/ .
How the designer can be properly attributed is an open issue #8 .

Social media links have been largely deactivated except for the link to this github repo.

The contact from has also been deactivated. Creating a proper contact form has been moved to this issue #9 .

Because I wasn't thinking, the changes have been committed to master directly. Tests will be written in a separate PR as supposed to. The corresponding issue can be found here #2 .


Group 3, Project 4

Congrats on completing the Boot Camp cohort project!  Thanks for all your work - great work


Change ESP8266 proxy to use TCP instead of UDP

Transmission to device seems to work as effects are visible on display (ping, set values, enabling output...), but receiving ends either with

Error: timeout talking to device <IP_ADDRESS>.
or
Error: protocol error (-2).

I'm using "communication version" of dsp, powering esp from uart header.
Running opendsp 4f227ecafdd6ecc8b1889dd4688cee899e5f082c
I have tried every combination of:

esp on development board (Lolin D1 mini)
bare esp (with appropriate pull-ups/dns)
115200 baud
9600 baud

effects are always the similar:
root@nas:/usr/src/opendps/dpsctl# ./dpsctl.py  -b 9600 --ping -v
Communicating with <IP_ADDRESS>
TX  5 bytes [7e 01 10 21 7f]
Error: timeout talking to device <IP_ADDRESS>.
root@nas:/usr/src/opendps/dpsctl# ./dpsctl.py  -b 9600 --ping -v
Communicating with <IP_ADDRESS>
TX  5 bytes [7e 01 10 21 7f]
RX 32 bytes [7e 84 01 3a a4 00 00 00 00 00 ff ff ff ff 00 63 76 00 76 6f 6c 74 61 67 65 00 33 30 30 30 00 63]

Error: protocol error (-2).
root@nas:/usr/src/opendps/dpsctl# ./dpsctl.py  -b 9600 --ping -v
Communicating with <IP_ADDRESS>
TX  5 bytes [7e 01 10 21 7f]
RX 32 bytes [7e 84 01 3a 94 00 00 00 00 00 ff ff ff ff 00 63 76 00 76 6f 6c 74 61 67 65 00 33 30 30 30 00 63]

Error: protocol error (-2).
root@nas:/usr/src/opendps/dpsctl# ./dpsctl.py  -b 9600 --ping -v
Communicating with <IP_ADDRESS>
TX  5 bytes [7e 01 10 21 7f]
RX  6 bytes [7e 81 01 38 88 7f]

Got pong from device

I'm suspecting that it's caused by UDP's lack of transmission control.
Receiving replies for commands issued a while back gave me a hint.
I've changed esp8266-proxy to a esp-link, changed few lines in dpsctl.py to make it work over tcp and everything started to work flawlessly.
I would be happy to investigate the exact cause of the problem, but I'm out of ideas for now:(
BTW, I'm wondering why you choose to use UDP over TCP to bridge serial connection (which is stateful and stream based. just like tcp)

That's odd, I have never had any issues with UDP. Someday retransmission should be implemented to take care of this. I chose UDP because it resembled the connectionless serial interface (IIRC)

I think it's more about assuring correct datagram order than retransmission, but I'm still to lazy to disassemble my box, reprogram esp with esp8266-proxy firmware and capture network traffic;)
IMHO TCP would be a better pick for this application as we need reliable transfers more than high bandwidth and plenty of simultaneous clients. Implementing any form of data integrity for UDP transfers would be a bit like a reinventing the wheel.
However, since it looks like I'm the only person having problems with this so far, I'm not going to push too much;)
If anyone encounters similar issue, here's my workaround that doesn't require any modifications to original code:

esp is programmed with vanilla esp-link. correct baudrate can be selected via web interface->uC console. (selection is persistent across reboots)
bash wrapper launches socat simulating serial device and passes args to original dpsctl.py in serial mode

#!/bin/bash
# make sure socat is running (single instance!) before lauching dpsctl.py
# dps-01 is the hostname of esp-link
run-one /usr/bin/socat pty,link=/dev/vdps0,raw,echo=0,ignoreeof  tcp:dps-01:23,keepalive,pf=ip4,connect-timeout=1  &
DPSIF=/dev/vdps0 /home/manager/utils/dpsctl/dpsctl.py $@

Even if you are the only person in the world seeing this failure it sure means there is something lurking here that needs fixing ;) I will update the issue title to reflect a change from UDP to TCP.

root@nas:/usr/src/opendps# ./dpsctl/dpsctl.py -d <IP_ADDRESS> -q
Warning: sent command 04, response was 0c.

00:22:10.379850 IP (tos 0x0, ttl 64, id 23997, offset 0, flags [DF], proto UDP (17), length 33)
    nas.57075 > dps-01.waw.empeka.pl.5005: [udp sum ok] UDP, length 5
        0x0000:  4500 0021 5dbd 4000 4011 b007 0a01 0105  E..!]<EMAIL_ADDRESS>        0x0010:  0a01 1801 def3 138d 000d a2c2 7e04 4084<EMAIL_ADDRESS>        0x0020:  7f                                       .
00:22:10.402073 IP (tos 0x0, ttl 255, id 42, offset 0, flags [none], proto UDP (17), length 34)
    dps-01.waw.empeka.pl.5005 > nas.57075: [udp sum ok] UDP, length 6
        0x0000:  4500 0022 002a 0000 ff11 8e99 0a01 1801  E..".*..........
        0x0010:  0a01 0105 138d def3 000e 8bef 7e8c 014e  ............~..N
        0x0020:  d47f 0000 0000 0000 0000 6da6 3c5d       ..........m.<]

root@nas:/usr/src/opendps# ./dpsctl/dpsctl.py -d <IP_ADDRESS> -q
Error: protocol error (-2).

00:23:41.411575 IP (tos 0x0, ttl 64, id 24167, offset 0, flags [DF], proto UDP (17), length 33)
    nas.35489 > dps-01.waw.empeka.pl.5005: [udp sum ok] UDP, length 5
        0x0000:  4500 0021 5e67 4000 4011 af5d 0a01 0105  E..!^g<EMAIL_ADDRESS>        0x0010:  0a01 1801 8aa1 138d 000d f714 7e04 4084<EMAIL_ADDRESS>        0x0020:  7f                                       .
00:23:41.434425 IP (tos 0x0, ttl 255, id 44, offset 0, flags [none], proto UDP (17), length 60)
    dps-01.waw.empeka.pl.5005 > nas.35489: [udp sum ok] UDP, length 32
        0x0000:  4500 003c 002c 0000 ff11 8e7d 0a01 1801  E..<.,.....}....
        0x0010:  0a01 0105 138d 8aa1 0028 1de7 7e84 018a  .........(..~...
        0x0020:  0500 0c00 0000 ffff ffff 0063 7600 766f  ...........cv.vo
        0x0030:  6c74 6167 6500 3530 3030 0063            ltage.5000.c

root@nas:/usr/src/opendps# ./dpsctl/dpsctl.py -d <IP_ADDRESS> -q
Error: timeout talking to device <IP_ADDRESS>.

00:24:24.396241 IP (tos 0x0, ttl 64, id 33714, offset 0, flags [DF], proto UDP (17), length 33)
    nas.35440 > dps-01.waw.empeka.pl.5005: [udp sum ok] UDP, length 5
        0x0000:  4500 0021 83b2 4000 4011 8a12 0a01 0105  E<EMAIL_ADDRESS>        0x0010:  0a01 1801 8a70 138d 000d f745 7e04 4084<EMAIL_ADDRESS>        0x0020:  7f                                       .

this one is even more interesting
root@nas:/usr/src/opendps# ./dpsctl/dpsctl.py -d <IP_ADDRESS> -V
BootDPS GIT Hash: 4f22
OpenDPS GIT Hash: 4f22-dirty
root@nas:/usr/src/opendps# ./dpsctl/dpsctl.py -d <IP_ADDRESS> -q
Warning: sent command 04, response was 11.

After ESP reset, commands with short replies (ping, version) are working just fine.

I also receive" Error: timeout talking to device " or "Error: protocol error (-2)".
But this happens only on ESP-01 and ESP-02.
Also in this case ping, version, or setting the voltage works.
On NodeMCU, with the same build, it seems that everything works.
I also wanted to try on ESP-07 but my ESP-07 is not connecting to WIFI, although the flash is successful.


Added max_length=2000 to URLField

Django URLField defaults to a length of 200.
MySQL, Postgres and SQLite have no limit on the max length of a varchar, and it sounds like a bigger length limit doesn't take any more space. IE7 and 8 have a max url length of 2038, so I think 2000 is enough.

This is five years old.


New moderation features on messages

The bot logs the messages that are deleted or edited by a member.
So that it would be easier for moderation.

This system is implemented and is live by the latest commit.


feat(componentLinks): support new import type

Adds support for import like below

const TestModal = () => import(/* webpackChunkName:"modals", webpackPrefetch: -1 */ 'components/Modals/TestModal');

Don't have to check, you check


HC3 nice device not recognized

Hi
I just install your module in homebridge to connect to my HC3
I have 18 nice devices and two quick app, only the quick app are discover in the home app

34 35 are recognized
37 38 not recognized
is it normal
my install
Homebridge v1.3.4
homebridge-fibaro-hc3  v1.1.14
figaro FW 5.070.42

I think this is similar to my issue #53. @tuxtof if you feel brave, you can try the workaround, just make sure to choose the correct section. It worked on my garage door from “nice” brand


Football Live Score Extension

Is your feature request related to a problem? Please describe.
everytime we have to go to official sites to see the score of football matches or sechdule of next matches
Describe the solution you'd like
we can amke chrome extension which is showing live score of the live matches
so that you can see the football live score on one click
Additional context
i will use free football APIs to get score and give Attractive UI for that
What problem is this feature trying to solve?
Football Live Score
How do we know when the feature is complete?
through my PR

@Sulagna-Dutta-Roy  kindly assign me this issue


Dropdown in header actions does not work with inline wizard

Describe the bug
The dropdown in header actions cannot work when an inline wizard is added in content.
How to reproduce
https://stackblitz.com/edit/clr-dropdown-with-clr-wizard
Steps to reproduce the behavior:
Clicking the action button in header, the dropdown menu flashes and cannot be clicked.
Expected behavior
The dropdown expands and the action in the dropdown can be clicked.
Versions
App

Angular: [e.g. 6] 8.2.0
Node: [e.g. 8.10.0] -
Clarity: [e.g. 0.12.5] 2.1.0

Device:

Type: [e.g. MacBook]
OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Additional notes
the dropdown works if wizard is removed.
and this works well with clarity v1, see https://stackblitz.com/edit/clr-dropdown-with-wizard-v1

The best diagnosis I have is that the focus trap on the wizard is preventing the dropdown from opening. This wasn't an issue in earlier versions where we did not have a focus trap.
That said, the inline wizard has always been an undocumented, easter-egg feature that was there to help teams out while we worked on the stepper. It is not something that we endorse or planned to support long term.
The stepper was released in 2.0 and officially deprecated the unofficial inline wizard.
The recommendation is to move away from the inline wizard and use the stepper.

good to know that stepper can be an alternative.
And, is there any workaround if inline wizard must be used? how can I easily disable the focus trap?

I don't know if there is a way to disable the focus trap. Maybe @Shijir or @hippee-lee know a way to do that?
Note that inline wizard is deprecated and will be removed at some point in the future.
Because it's not an officially supported feature in the wizard, it may not go through a normal deprecation cycle either.

@Shijir or @hippee-lee would you mind to have a look at this?
And, @mathisscott Thanks for the deprecation note.
But, the stepper may not be a good fit for our design: a complex workflow, with many steps and serval large forms.
IMHO, the stepper's accordion-like design is perfect when each panel is simple for only few steps. Or, when it goes to the last step, the collapsed steps would occupy a large space on the top, unlike wizard's left-right layout.

@mathisscott just updated @clr/angular to the latest (v2.1.1) in https://stackblitz.com/edit/clr-dropdown-with-clr-wizard, the issue is gone. I guess it's fixed.
Thanks!


How do you do the benchmark?

Hi, just curious on how the benchmark was performed http://layoutkit.org/benchmarks/ ? I assume that layout time is the time from before to after reloadData?

How to run the benchmarks:

Checkout the code
Run the LayoutKitSampleApp target on a device
From the main menu, select BenchmarkViewController
Choose a benchmark to run
Results are logged to the console

I assume that layout time is the time from before to after reloadData

Each benchmark iteration instantiates a new view controller with some data and then measures view.layoutIfNeeded() (code).


Numba debug3

Process of making bit mask has several bugs.
Correct them and add tests of simple CX circuit and complicated circuit also.

CircleCI's numba raises TypeError when use sort in numba function.

Disabled numba test. It is not good way.


too many tasks when I read a distributed partitioned table using partition key filter

dependency:

com.github.housepower
clickhouse-spark-runtime-3.2_2.12
0.5.0

my sql is :
select * from xxx where dt (this is my partition key) = '2023-03-09' ,
the database has not value , so I think this sql will complete quickly but not.
I found the filter message is :
Pushing operators to label_platform.ch_label_crowd_export
Pushed Filters: EqualTo(dt,2023-03-09)
Post-Scan Filters:
and total tasks count is : 1124
I think best performance tasks total should be 1 task because I have no data in dt = '2023-03-09'

that's a good point, we can collect more metrics during the planning phase, and eliminate task assignments for those partitions which do not contain any data.


fix: ignore non-file on tar entry filter

ENOENT: no such file or directory, stat '/root/.cnpmcore/downloads/2023/05/06/unpkg_<EMAIL_ADDRESS>

<EMAIL_ADDRESS>竟然还有中文路径。。。
  sql: "SELECT * FROM `package_version_files` WHERE `package_version_id` = '645537672967dbdbc623eb3c' AND `directory` = '/model/kp31/kp31_/destroy/替换配置' AND `name` = 'model.json' LIMIT 1"

2023-05-06 01:05:54,247 WARN 1104822 [-/<IP_ADDRESS>/12246f90-eb67-11ed-9638-3ba850b69082/10558.541ms GET /] [PackageVersionFileService.syncPackageVersionFiles:error] packageVersionId:<PHONE_NUMBER>67dbdbc623eb3c, 1182 paths, tmpdir<EMAIL_ADDRESS>error: Error: ER_CANT_AGGREGATE_2COLLATIONS: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='


1.0?

I'd love to use this in glob-stream but I'm trying to make sure all dependencies are at least 1.0 - any objections to publishing it as such?

No problem. I just now mentioned this over on glob-stream, but I wanted to at least get feedback before doing 1.0. I know that's a requirement there.
I'll do this now.

@phated mentioned this on glob-stream, but I also added you as a collab here and owner on npm.


Set coverage=true when testing PredictMD on AppVeyor

Pull Request Test Coverage Report for Build 562

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 67.081%

Totals

Change from base Build 560:
0.0%

Covered Lines:
1186

Relevant Lines:
1768

💛  - Coveralls


Fixed platform version not known issue.

If platform version is not available in cjson_metadata not available then it will look for desired capabilities to find it out.

Thanks @Baskercarrer !


Update Statistics Action

closes #84

There wasn't a way to test it before, which was a bit painful. There have been some simulators created to do it, but I haven't tested them
As this is not critical we can merge (or update the trigger for this branch) and test it that way


Add Wintertodt loot crates to loot tracker?

Is it possible to have the loot tracker track the loot from Wintertodt loot crates?

Duplicate of #5824