[Installation]: Using Image to build from source get error

Your current environment
Collecting environment information...
PyTorch version: 2.1.0a0+32f93b1
Is debug build: False
CUDA used to build PyTorch: 12.2
ROCM used to build PyTorch: N/A

OS: Ubuntu 22.04.3 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Clang version: Could not collect
CMake version: version 3.27.6
Libc version: glibc-2.35

Python version: 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-<IP_ADDRESS>-2.cm2-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 12.2.140
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration:
GPU 0: NVIDIA A16
GPU 1: NVIDIA A16

Nvidia driver version: 550.54.15
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.8.9.5
/usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.9.5
/usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.9.5
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.9.5
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.9.5
/usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.9.5
/usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.9.5
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      46 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             32
On-line CPU(s) list:                0-31
Vendor ID:                          GenuineIntel
Model name:                         Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz
CPU family:                         6
Model:                              85
Thread(s) per core:                 2
Core(s) per socket:                 16
Socket(s):                          1
Stepping:                           4
CPU max MHz:                        2100.0000
CPU min MHz:                        1000.0000
BogoMIPS:                           4190.15
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves md_clear flush_l1d arch_capabilities
Hypervisor vendor:                  Microsoft
Virtualization type:                full
L1d cache:                          512 KiB (16 instances)
L1i cache:                          512 KiB (16 instances)
L2 cache:                           16 MiB (16 instances)
L3 cache:                           22 MiB (1 instance)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-31
Vulnerability Gather data sampling: Unknown: Dependent on hypervisor status
Vulnerability Itlb multihit:        KVM: Mitigation: VMX unsupported
Vulnerability L1tf:                 Mitigation; PTE Inversion
Vulnerability Mds:                  Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:             Mitigation; PTI
Vulnerability Mmio stale data:      Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Retbleed:             Mitigation; IBRS
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; IBRS, IBPB conditional, STIBP conditional, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Mitigation; Clear CPU buffers; SMT Host state unknown

Versions of relevant libraries:
[pip3] numpy==1.22.2
[pip3] nvidia-dali-cuda120==1.30.0
[pip3] nvidia-pyindex==1.0.9
[pip3] onnx==1.14.0
[pip3] pynvml==11.4.1
[pip3] pytorch-quantization==2.1.2
[pip3] pyzmq==25.1.1
[pip3] torch==2.1.0a0+32f93b1
[pip3] torch-tensorrt==0.0.0
[pip3] torchdata==0.7.0a0
[pip3] torchtext==0.16.0a0
[pip3] torchvision==0.16.0a0
[pip3] triton==2.1.0+e621604
[conda] Could not collect
ROCM Version: Could not collect
Neuron SDK Version: N/A
vLLM Version: N/A
vLLM Build Flags:
CUDA Archs: 5.2 6.0 6.1 7.0 7.2 7.5 8.0 8.6 8.7 9.0+PTX; ROCm: Disabled; Neuron: Disabled
GPU Topology:
GPU0    GPU1    CPU Affinity    NUMA Affinity   GPU NUMA ID
GPU0     X      SYS     0-31    0               N/A
GPU1    SYS      X      0-31    0               N/A

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

How you are installing vllm
I followed the the recommendation  from the document  to use the NVIDIA PyTorch Docker image to build from source in a pod of k8s.

the config file

apiVersion: v1

kind: Pod
metadata:
  name: build-vllm-pod
spec:
  containers:
  - name: build-vllm-container
    image: nvcr.io/nvidia/pytorch:23.10-py3
    ports:
    - containerPort: 8900
    command: ["/bin/bash", "-c", "tail -f /dev/null"]
    resources:
      requests:
        memory: "32Gi"  # 请求的最小内存
      limits:
        memory: "64Gi"  # 限制的最大内存

Then I went into the pod

kubectl apply -f build-vllm-pod.yaml

kubectl exec -it build-vllm-pod -- bash

next, I  execute the command

git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .

I got error

      /tmp/tmpkycq33gt.build-temp/_deps/cutlass-src/include/cutlass/device_kernel.h:104:1: note: the ABI for passing parameters with 64-byte alignment has changed in GCC 4.6
        104 | void device_kernel(CUTLASS_GRID_CONSTANT typename Operator::Params const params)
            | ^~~~~~~~~~~~~
      [37/69] Building CUDA object CMakeFiles/_C.dir/csrc/quantization/gptq_marlin/gptq_marlin.cu.o
      ninja: build stopped: subcommand failed.
      Traceback (most recent call last):
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 138, in run
          self._create_wheel_file(bdist_wheel)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 341, in _create_wheel_file
          files, mapping = self._run_build_commands(dist_name, unpacked, lib, tmp)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 264, in _run_build_commands
          self._run_build_subcommands()
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 291, in _run_build_subcommands
          self.run_command(name)
        File "/usr/lib/python3.10/distutils/cmd.py", line 313, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 950, in run_command
          super().run_command(command)
        File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/build_ext.py", line 98, in run
          _build_ext.run(self)
        File "/usr/lib/python3.10/distutils/command/build_ext.py", line 340, in run
          self.build_extensions()
        File "<string>", line 238, in build_extensions
        File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j=32', '--target=_core_C', '--target=_moe_C', '--target=_C']' returned non-zero exit status 1.
      /usr/lib/python3.10/distutils/dist.py:985: _DebuggingTips: Problem in editable installation.
      !!

              ********************************************************************************
              An error happened while installing `vllm` in editable mode.

              The following steps are recommended to help debug this problem:

              - Try to install the project normally, without using the editable mode.
                Does the error still persist?
                (If it does, try fixing the problem before attempting the editable mode).
              - If you are using binary extensions, make sure you have all OS-level
                dependencies installed (e.g. compilers, toolchains, binary libraries, ...).
              - Try the latest version of setuptools (maybe the error was already fixed).
              - If you (or your project dependencies) are using any setuptools extension
                or customization, make sure they support the editable mode.

              After following the steps above, if the problem still persists and
              you think this is related to how setuptools handles editable installations,
              please submit a reproducible example
              (see https://stackoverflow.com/help/minimal-reproducible-example) to:

                  https://github.com/pypa/setuptools/issues

              See https://setuptools.pypa.io/en/latest/userguide/development_mode.html for details.
              ********************************************************************************

      !!
        cmd_obj.run()
      Traceback (most recent call last):
        File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 273, in build_editable
          return hook(wheel_directory, config_settings, metadata_directory)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 459, in build_editable
          return self._build_with_temp_dir(
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 403, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 318, in run_setup
          exec(code, locals())
        File "<string>", line 474, in <module>
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)
        File "/usr/lib/python3.10/distutils/core.py", line 148, in setup
          dist.run_commands()
        File "/usr/lib/python3.10/distutils/dist.py", line 966, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 950, in run_command
          super().run_command(command)
        File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 138, in run
          self._create_wheel_file(bdist_wheel)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 341, in _create_wheel_file
          files, mapping = self._run_build_commands(dist_name, unpacked, lib, tmp)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 264, in _run_build_commands
          self._run_build_subcommands()
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 291, in _run_build_subcommands
          self.run_command(name)
        File "/usr/lib/python3.10/distutils/cmd.py", line 313, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 950, in run_command
          super().run_command(command)
        File "/usr/lib/python3.10/distutils/dist.py", line 985, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-r8_oi1h9/overlay/local/lib/python3.10/dist-packages/setuptools/command/build_ext.py", line 98, in run
          _build_ext.run(self)
        File "/usr/lib/python3.10/distutils/command/build_ext.py", line 340, in run
          self.build_extensions()
        File "<string>", line 238, in build_extensions
        File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j=32', '--target=_core_C', '--target=_moe_C', '--target=_C']' returned non-zero exit status 1.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building editable for vllm
Failed to build vllm
ERROR: Could not build wheels for vllm, which is required to install pyproject.toml-based projects

[notice] A new release of pip is available: 23.2.1 -> 24.2
[notice] To update, run: python -m pip install --upgrade pip

I found same error here: https://github.com/vllm-project/vllm/issues/5301, However, no solution was given.
Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

try this
https://cdn.discordapp.com/attachments/1277836331501883449/1280291965879193731/fix.zip?ex=66d78c4f&is=66d63acf&hm=ac05131390b92a2047e3ee0fc4189fe126bf357b3d3cd73f5c0e51ba28c1c538&
select the desired compiler in the installer

try this
https://cdn.discordapp.com/attachments/1277836331501883449/1280291965879193731/fix.zip?ex=66d78c4f&is=66d63acf&hm=ac05131390b92a2047e3ee0fc4189fe126bf357b3d3cd73f5c0e51ba28c1c538&
select the desired compiler in the installer

try this https://cdn.discordapp.com/attachments/1277836331501883449/1280291965879193731/fix.zip?ex=66d78c4f&is=66d63acf&hm=ac05131390b92a2047e3ee0fc4189fe126bf357b3d3cd73f5c0e51ba28c1c538& select the desired compiler in the installer
@zawa999  Why you supply me the exe and dll file in Windows ?  My OS is Linux .

The above two comments are spam comments, don't click on them.
Your issue is most likely related to a cutlass clone problem. You can try multiple times, or use a proxy

Thank you for your reply. I can access GitHub and Google normally. It should not be a network problem. Do you have any other suggestions for me?

You can try the following script to find more details
pip install -vvv -e .

Regarding the operating system version issue you mentioned, I tried to use the image nvcr.io/nvidia/cuda:12.2.2-devel-ubuntu20.04 and installed Python 3.10 myself to compile, but still got an error. By the way, I also used Dockerfile to build the container and got the same error.
command:
pip install -vvv -e .

output:
          ********************************************************************************
          An error happened while installing `vllm` in editable mode.

          The following steps are recommended to help debug this problem:

          - Try to install the project normally, without using the editable mode.
            Does the error still persist?
            (If it does, try fixing the problem before attempting the editable mode).
          - If you are using binary extensions, make sure you have all OS-level
            dependencies installed (e.g. compilers, toolchains, binary libraries, ...).
          - Try the latest version of setuptools (maybe the error was already fixed).
          - If you (or your project dependencies) are using any setuptools extension
            or customization, make sure they support the editable mode.

          After following the steps above, if the problem still persists and
          you think this is related to how setuptools handles editable installations,
          please submit a reproducible example
          (see https://stackoverflow.com/help/minimal-reproducible-example) to:

              https://github.com/pypa/setuptools/issues

          See https://setuptools.pypa.io/en/latest/userguide/development_mode.html for details.
          ********************************************************************************

  !!
    cmd_obj.run()
  Traceback (most recent call last):
    File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
      main()
    File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 273, in build_editable
      return hook(wheel_directory, config_settings, metadata_directory)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 459, in build_editable
      return self._build_with_temp_dir(
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 403, in _build_with_temp_dir
      self.run_setup()
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 318, in run_setup
      exec(code, locals())
    File "<string>", line 474, in <module>
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/__init__.py", line 117, in setup
      return distutils.core.setup(**attrs)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 184, in setup
      return run_commands(dist)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 200, in run_commands
      dist.run_commands()
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 954, in run_commands
      self.run_command(cmd)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 950, in run_command
      super().run_command(command)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 973, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 138, in run
      self._create_wheel_file(bdist_wheel)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 341, in _create_wheel_file
      files, mapping = self._run_build_commands(dist_name, unpacked, lib, tmp)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 264, in _run_build_commands
      self._run_build_subcommands()
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/command/editable_wheel.py", line 291, in _run_build_subcommands
      self.run_command(name)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/cmd.py", line 316, in run_command
      self.distribution.run_command(command)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 950, in run_command
      super().run_command(command)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 973, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/command/build_ext.py", line 98, in run
      _build_ext.run(self)
    File "/tmp/pip-build-env-itudlxl0/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/command/build_ext.py", line 359, in run
      self.build_extensions()
    File "<string>", line 238, in build_extensions
    File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j=32', '--target=_core_C', '--target=_moe_C', '--target=_C']' returned non-zero exit status 1.
  error: subprocess-exited-with-error

  × Building editable for vllm (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: /usr/bin/python3.10 /usr/local/lib/python3.10/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py build_editable /tmp/tmpcanjopll
  cwd: /vllm
  Building editable for vllm (pyproject.toml) ... error
  ERROR: Failed building editable for vllm
Failed to build vllm
Remote version of pip: 24.2
Local version of pip:  24.2
Was pip installed by pip? True
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (vllm)
Exception information:
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper
    status = _inner_run()
  File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run
    return self.run(options, args)
  File "/usr/local/lib/python3.10/dist-packages/pip/_internal/cli/req_command.py", line 67, in wrapper
    return func(self, options, args)
  File "/usr/local/lib/python3.10/dist-packages/pip/_internal/commands/install.py", line 434, in run
    raise InstallationError(
pip._internal.exceptions.InstallationError: ERROR: Failed to build installable wheels for some pyproject.toml based projects (vllm)
Removed build tracker: '/tmp/pip-build-tracker-8ih539n9'

command:
docker build .  -f  Dockerfile  --target vllm-openai --tag vllm/vllm-openai

output:
4814.8   File "/workspace/setup.py", line 238, in build_extensions
4814.8     subprocess.check_call(["cmake", *build_args], cwd=self.build_temp)
4814.8   File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
4814.8     raise CalledProcessError(retcode, cmd)
4814.8 subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j=1', '--target=_core_C', '--target=_moe_C', '--target=_C']' returned non-zero exit status 1.
------

 2 warnings found (use docker --debug to expand):
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 197)
 - FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 118)
Dockerfile:105
--------------------
 104 |     ENV CCACHE_DIR=/root/.cache/ccache
 105 | >>> RUN --mount=type=cache,target=/root/.cache/ccache \
 106 | >>>     --mount=type=cache,target=/root/.cache/pip \
 107 | >>>     if [ "$USE_SCCACHE" != "1" ]; then \
 108 | >>>         python3 setup.py bdist_wheel --dist-dir=dist --py-limited-api=cp38; \
 109 | >>>     fi
 110 |
--------------------
ERROR: failed to solve: process "/bin/sh -c if [ \"$USE_SCCACHE\" != \"1\" ]; then         python3 setup.py bdist_wheel --dist-dir=dist --py-limited-api=cp38;     fi" did not complete successfully: exit code: 1


Replace byte[] with File and pin AWS SDK version

as per #26  and #20

Hi @nhoughto ,
thanks for opening this pull request. I have a couple of comments and thoughts:
First of all, I don't feel comfortable changing the implementation without having a proper integration test. The current unit tests are more or less specific to the actual implementation. Before moving on with this, we need integration tests for at least AwsS3BuildCacheService#store and AwsS3BuildCacheService#load.
Running the tests against a mocked version of S3 seems to be a viable solution. We could look into https://github.com/adobe/S3Mock
Beside that, I am not sure whether we should write & read the cache object to disk in all cases for performance considerations (IO is usually quite expensive). So far, doing all of that in memory hasn't been a problem and seems to be related to very large cache objects only. If I am not mistaken, Gradle already uses the Guava lib. So we could try to use https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/io/FileBackedOutputStream.html instead.

Yeah checking size before going to disk is a good idea, only write out to a file if the length is greater than N bytes. What would N be in this situation? 1MiB?

By default, the Gradle daemon seems to be running with 512MB heap (see https://docs.gradle.org/current/userguide/build_environment.html#sec:configuring_jvm_memory). It is hard to come up with a good number, but I'd say it should usually be fine to load up to 50MB into memory. Some Gradle tasks are executed in parallel tough and hence the limit should be smaller. What about 5MB? Seems to be large enough for a lot of use cases and gives enough room for parallel execution.

Actually I just went to do this, we don't know the length of the cache item until after its written to the OutputStream, which is too late to decide whether to hit disk or not.. as the OutputStream needs to be backed by something.
So if it can't be dynamic based on size, the only option is to make it globally configurable in the plugin, so it can be toggled on / off depending on the usecase?

we don't know the length of the cache item until after its written to the OutputStream

@nhoughto , AFAIK BuildCacheEntryWriter has getSize() method: https://docs.gradle.org/current/javadoc/org/gradle/caching/BuildCacheEntryWriter.html
Does it work?


Can we use UIKit UIViewController in "SwiftfulRouting"?

Hello, I follow all your classes and I can say that I almost became an ios programming engineer thanks to you and the knowledge you gave, thank you very much!
Question:
I have an ios project and it is built with UIKit. We need to redo it with SwiftUI. Can SwiftfulRouting work with swfitui in UIKit or can we create a Swiftui project and use our old UIkit code in it?

It should work but it depends on what exactly you are trying to do. I think you should be able to do either of those options.
Putting UIKit within SwiftUI would need UIViewRepresentables:

https://www.youtube.com/watch?v=1GYKyQHVDWw&list=PLwvDm4Vfkdphc1LLLjCaEd87BEg07M97y&index=15
https://www.youtube.com/watch?v=wqa1hCu8yCI&list=PLwvDm4Vfkdphc1LLLjCaEd87BEg07M97y&index=16&t=834s

Putting SwiftUI in UIKit would require a UIHostingController:

https://stackoverflow.com/questions/56433826/include-swiftui-views-in-existing-uikit-application

let swiftUIView = SomeSwiftUIView()
let viewCtrl = UIHostingController(rootView: swiftUIView)

If your view is already within a navigation controller you can set RouterView(addNavigationView: false)

That's how i did it
AppRouterVM.swift
//
//  AppRouterVM.swift
//  1Sonia
//
//  Created by Azimjon Abdurasulov on 05/03/24.
//

import SwiftUI

/// A view model for managing navigation within the app.
class AppRouterVM: ObservableObject {
    /// The root view controller.
    weak var rootViewController: UIViewController?

    /// Initializes the `AppRouterVM` with an optional root view controller.
    /// - Parameter rootViewController: The root view controller (default is `nil`).
    init(rootViewController: UIViewController? = nil) {
        self.rootViewController = rootViewController
    }

    /// Shared instance of `AppRouterVM`.
    static let shared = AppRouterVM()

    /// Pushes a view controller onto the navigation stack.
    /// - Parameters:
    ///   - viewController: The view controller to push onto the stack.
    ///   - animated: A Boolean indicating whether the transition should be animated (default is `true`).
    func pushViewController(_ viewController: UIViewController, animated: Bool = true) {
        guard let navigationController = rootViewController?.navigationController else {
            return
        }
        navigationController.pushViewController(viewController, animated: animated)
    }

    /// Pops the top view controller from the navigation stack.
    /// - Parameter animated: A Boolean indicating whether the transition should be animated (default is `true`).
    func popViewController(animated: Bool = true) {
        guard let navigationController = rootViewController?.navigationController else {
            return
        }
        navigationController.popViewController(animated: animated)
    }

    /// Dismisses a view controller from the screen.
    /// - Parameters:
    ///   - viewController: The view controller to dismiss.
    ///   - animated: A Boolean indicating whether the dismissal should be animated (default is `true`).
    func dismissViewController(animated: Bool = true) {
        rootViewController?.dismiss(animated: animated)
    }

    /// Presents a view controller modally.
    /// - Parameters:
    ///   - viewController: The view controller to present.
    ///   - animated: A Boolean indicating whether the presentation should be animated (default is `true`).
    func presentViewController(_ viewController: UIViewController, animated: Bool = true) {
        rootViewController?.present(viewController, animated: animated)
    }
}

Navigator.swift
//
//  Navigator.swift
//  1Sonia
//
//  Created by Azimjon Abdurasulov on 06/03/24.
//

import SwiftUI

/// A class responsible for navigating to different views within the app using the provided router.
final class Navigator<AppRouter: AppRouterVM> {
    /// The router used for navigation.
    let router: AppRouter

    /// Initializes the `Navigator` with the provided router.
    /// - Parameter router: The router used for navigation.
    init(router: AppRouter) {
        self.router = router
    }

    /// Navigates to the restaurant food catalog view controller.
    /// - Parameters:
    ///   - restId: The ID of the restaurant.
    ///   - distance: The distance to the restaurant (optional).
    func restFoodCatalogVC(restId: String, distance: Double? = nil) {
        // Create an instance of the restaurant food catalog view controller
        let vc = RestFoodCatalogVC()

        // Set hidesBottomBarWhenPushed property
        vc.hidesBottomBarWhenPushed = true

        // Set restId and distance properties in the view model
        vc.viewModel.restId = restId
        vc.viewModel.distance = distance

        // Push the view controller using the router
        router.pushViewController(vc)
     }
   }

PaymentAmountFormViewVC.swift
//
//  PaymentAmountFormViewVC.swift
//  1Sonia
//
//  Created by Azimjon Abdurasulov on 16/03/24.
//

import SwiftUI

class PaymentAmountFormViewVC: UIHostingController<PaymentAmountFormView> {

 override func viewDidLoad() {
     super.viewDidLoad()
 }

}

PaymentAmountFormView

import SwiftUI

struct PaymentAmountFormView: View {
    @State private var checkAmount = ""
    let otherPayment: Bool
    @State private var showLoading = false
    @State private var showSheet = false
    @State var promotion: Bool
    let router: AppRouterVM
    .....
    ```
    ## my DefaultButtonView with action
    ```swift

                    DefaultButtonView(title: Lang.getString(type: .addCard), showLoading: .constant(false)) { Navigator(router: router).addNewCardFormViewVC() }
                    .frame(height: 56)
                    .padding(.horizontal)
                    .padding(.bottom)

            }

            ```


Problems updating a package using go get with GO111MODULE=on

FAO: @rsc
What version of Go are you using (go version)?
go version go1.11rc1 darwin/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOOS="darwin"
What did you do?
I'm running with GO111MODULE=on.
I used go get -u github.com/dave/wasmgo to install a package for the first time yesterday. I didn't have to use go mod init at all, and it successfully installed to<EMAIL_ADDRESS>The author has made changes to the package, so I ran go get -u github.com/dave/wasmgo again, but I got the error go: cannot find main module; see 'go help modules'.
I was able to fix this by running go mod init go in my ~/go folder to create a dummy go.mod file - go get -u github.com/dave/wasmgo then ran successfully.
It then occurred to me that littering my machine with dummy go.mod files was probably not a good idea, so I navigated to the aforementioned<EMAIL_ADDRESS>folder and ran go mod init github.com/dave/wasmgo. I got the error...
go: creating new go.mod: module github.com/dave/wasmgo
go: open<EMAIL_ADDRESS>permission denied

Despite the first line of the error message, go.mod has not been created.
How do I fix this? I cannot believe I have to create a go.mod file in a higher level, generic (oops, the "G" word!) folder. Any ideas?
What did you expect to see?
I expected to be able to run go mod init github.com/dave/wasmgo in the ...\v0.0.0-20180816095012-16077efc512b folder
What did you see instead?
Permission denied message as explained above.

UPDATE:
I was able to get go get -u github.com/dave/wasmgo to run by running go mod init github.com/dave, but this seems like an unsatisfactory solution. It lacks intellectual coherence and justification!

Hi @carlca, I'm not an expert, but a couple quick comments.
One command is that when you are running a command like go get in module-aware mode, the resulting behavior still depends which module you are currently "in" as the current module, which means it depends on where you are in your filesystem hierarchy (given part of a module's definition is based on the location of the go.mod file in the filesystem hierarchy). For example, I believe that is how go get knows which go.mod file to update when you have more than one module on your system.
That's a bit informal, but here is a more formal statement from the HTML documentation on tip.golang.org:
https://tip.golang.org/cmd/go/#hdr-Defining_a_module

A module is defined by a tree of Go source files with a go.mod file in the tree's root directory. The directory containing the go.mod file is called the module root. Typically the module root will also correspond to a source code repository root (but in general it need not). The module is the set of all Go packages in the module root and its subdirectories, but excluding subtrees with their own go.mod files.

Also, I believe ~/code/go/pkg/mod includes an on-disk cache that is more or less transparently managed by the go command, so normally you wouldn't need to navigate there manually.
In case this might be helpful, there's an a write-up here that might be helpful, along with some "how to" sections that follow:
https://github.com/golang/go/wiki/Modules#new-concepts
https://github.com/golang/go/wiki/Modules#how-to-define-a-module

Hi @carlca, also, looking at this more, it seems github.com/dave/wasmgo is a command/binary? So it sounds like part of your question then might be how do you install a command/binary via go get when running in module-aware mode?
@gopherbot, please add label modules

@carlca You might be hitting a variation of #24250.
One snippet from there:

This isn't blocking Go 1.11. The main reason being that if GO111MODULE=auto (the default) then we can't reasonably do anything with modules when outside a go.mod tree. That's the opt-in. And inside a go.mod tree this already works.

...which gets back to some of my earlier comments about the behavior is currently expected to be different depending on where you are in the filesystem when you run go get (including whether or not you are "inside" a module by being inside a filesystem tree that has a go.mod file, etc.)

@carlca You might be hitting a variation of #24250.

It looks like it. Oh well, my solution of a dummy go.mod file in the folder above will have to do for now.

Hi, @thepudds, would you mind having a look at the series of tweets I've just had involving Russ Cox. They are at
Me: https://twitter.com/carlcaulkett/status/1034516890373304320
Me: https://twitter.com/carlcaulkett/status/1034560669234933761
Russ: https://twitter.com/_rsc/status/1034625354172981248
Me: https://twitter.com/carlcaulkett/status/1034712098381746176
Me: https://twitter.com/carlcaulkett/status/1034718306387804160
I cannot work out why Russ is saying that "module based go get works fine for me" unless he is running a beta version of 1.12 and just hasn't mentioned it! Otherwise, I fear it's a bit of a politician's answer!

If you are running with GO111MODULE=on, then you must be inside a module to use go get until #24250 is addressed.
Even then, you will probably still need to be inside a module if the thing you are getting is not a main binary: otherwise, the result is somewhat nonsensical. (You're telling the go command to add some package or module to the requirements of the current module, but without a current module!)

I navigated to the aforementioned<EMAIL_ADDRESS>folder and ran go mod init github.com/dave/wasmgo.

GOPATH/pkg/mod is a cache of downloaded, immutable modules — it's not a working tree like GOPATH/src. The fact that you can't make changes there yourself is intentional.

Closing as a duplicate of #24250. You must be in a module to go get a new dependency for that module. You will not need to be in a module to go get a command-line tool, but that's exactly what #24250 tracks.

Hi, @thepudds, would you mind having a look at the series of tweets I've just had involving Russ Cox. > They are at
Me: https://twitter.com/carlcaulkett/status/1034516890373304320
...
I cannot work out why Russ is saying that "module based go get works fine for me" unless he is running a beta version of 1.12 and just hasn't mentioned it! Otherwise, I fear it's a bit of a politician's answer!

@carlca sorry for the late reply, but given you had addressed that question to me, just wanted to briefly comment that I looked at those tweets, and I don't think Russ was giving a politician's reply. ;-)
go get does work with modules. It just has a some rough edges in 1.11, many of which are due to the opt-in nature of modules and wanting to get some real-world experience with modules prior to finalizing go get's behavior outside of modules (e.g., the #24250 issue Bryan linked to), at least as far as I understand.
I think you've seen this, but some of the options for some of those rough edges are mentioned in some of the FAQs on the modules wiki, including this shell script by rogpeppe.
So in short, go get works in 1.11 with modules, but still has some improving to do.


Compatibility for Django 1.10

Integrate test fixes from gvangool and add some fixes for Django 1.10 compatibility.

@saintger Thanks for submitting this! One issue I have as a new user is that the example site is broken with Django 1.10, at least per the instructions in the README.
Current error I'm getting is:
TemplateDoesNotExist at /
faq/base.html

Do you know if this is an issue with the way I'm setting up the example app or do we need to update the docs or perhaps adjust the TEMPLATES setting so that the example runs? Happy to make a commit for those changes once I figure out what I'm doing wrong :).


make width fixed for long commands

Given a very long sentence the width of the palette should remain constant

resolved with inline display option


Goals of the Cost Monitoring activities is missing

Hello
The article is going straight to the point on solutions but is missing introducing what is the purpose of Cost Monitoring.
I suggest the following definition: "Cost monitoring is about establishing controls and business processes for reviewing your cloud spend to avoid any misuse and take advantage of new opportunities through flexibility provided by the cloud."
Feel free to loop me in internal thread if needed, I'd be happy to contribute.
Olivier

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ad5ff56e-7e61-df64-5493-46232a9919a5
Version Independent ID: 98dc2296-093e-47f2-8f50-eecc652ac6fc
Content: Monitoring your cloud costs
Content Source: docs/framework/cost/monitoring.md
Service: architecture-center
Sub-service: cloud-design-principles
GitHub Login: @david-stanford
Microsoft Alias: pnp

@olileger PR has been created for this which will address this. Thanks so much for providing the feedback that help us in improving the documentation. For now I will proceed with closure of this and If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


WIP display spawnpoints

TODO List:

[X] add spawnpoint markers to the map
[X] add a popup with information about spawns on that point
[ ] nice formating of the popup
[ ] nice image for the spawnpoints
[ ] clustering! so it does not kill the browser
[ ] add options for customization to the config

Screenshot of WIP

I like it! Should I do the code review, or should I wait with it until you're happy with its shape?

@modrzew todo list is on 2/6 - and some of the code will be touched with clustering. Guess I will have done most tomorrow evening

Oh boy, I'm very excited for this!
Do you see any way to include an aggregate of spawn numbers per Pokemon, without cluttering the thing too much? So from the example of your screenshot it could display something like

Hornliu: 3 (50%)
Rattfratz: 2 (33,3%)
Zubat: 1 (16,6%)

Yes that is the goal in the long run. Also a classification may be included (blue dots for points that get classified as water)
But one step after the other

I am currently working on a classifcation algorithm which could be integrated with pokeminer (see https://www.reddit.com/r/pokemongodev/comments/4xfw9r/biomes_debunked/)
I am currently rewriting my matlab code prototype to python, which is now almost done, so this might be possible to do in the not so distant future

@FFroehlich that post was the reason I started this! When you are ready to show something I would be happy to review it.

@modrzew code quality has gone down in the last commits but I will not have much time to code the rest of the week; so I released what I had. Top post has my thoughts on what could be improved.
Also one note: if you use this with python 2.7 there are ascii errors again which I ignored since the project is going 3.5

okay couldn't sleep, so added clustering and its amazing! performance has gone way up!

I just try it and it's very nice!
I was using it with python 2.7 and as expected, i got an ascii error. With python 3, no problem.
Simple suggestion, it would be nice to not display the filtered pokemon (those in the TRASH_IDS) array as they add a lot of unnecessary data.

@fxbt I really intended something different. It is intended to show all data - this way you can see if there was a skipped spawn or not.
Also what if you have a spawn that only spawned trash? Would this point not be displayed? This way you kind of loose information.


Support object initialization for args with default values

Purpose
Fixes #21186
Approach
The error occurs because of an expression node referenced by two places. Therefore the expression node is cloned and assign to one place.
Check List

[ ] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #21297 into ballerina-1.1.x will not change coverage.
The diff coverage is n/a.

@@               Coverage Diff                @@
##           ballerina-1.1.x   #21297   +/-   ##
================================================
  Coverage            15.21%   15.21%
================================================
  Files                   50       50
  Lines                 1341     1341
  Branches               208      208
================================================
  Hits                   204      204
  Misses                1121     1121
  Partials                16       16

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 e6c8b02...2707a68. Read the comment docs.


Poor HDFStore.select performance in case of empty result

HDFStore.select() becomes extremely slow in case when condition is not met in the HDF5 file.
For example:
### Preparing data
NUM = 5000000
COLS = 100

IDX = np.random.random_integers(0, 100000, size=NUM)*10
df = pd.DataFrame(np.random.randn(NUM, COLS), index=IDX)

### Save: ~4GB uncompressed
st = pd.HDFStore('tmp.h5')
st.append('data', df)
st.close()
del df

### Reading
st = pd.HDFStore('tmp.h5')
### First call is usually slower, perhaps the indices are being loaded in memory, so - skip it
df = st.select('data', where='index==%d' % (IDX[1000]))

%time df = st.select('data', where='index==%d' % (IDX[1000]))
print len(df)

%time df = st.select('data', where='index==55')
print len(df)

%time df = st.select('data', where='index==-1')
print len(df)

st.close()

It gives 8.7s and 1.1s for empty results versus 11.2ms for existing data:
CPU times: user 2.6 ms, sys: 8.58 ms, total: 11.2 ms
Wall time: 11.2 ms
50
CPU times: user 1.15 s, sys: 1.82 s, total: 2.97 s
Wall time: 8.73 s
0
CPU times: user 433 ms, sys: 649 ms, total: 1.08 s
Wall time: 1.11 s
0

In case when the file is relatively big(~10s of GB, compressed), the call of select with a "wrong query" can take up to a minute in comparison with several tens of millisecond. These are some numbers for my real data:
>>> %time df = st.select('data', 'aid=18')
CPU times: user 61.7 ms, sys: 23.2 ms, total: 84.8 ms
Wall time: 84.4 ms
>>>print len(df)
4281

>>> %time df = st.select('data', 'aid=-1')
CPU times: user 35.7 s, sys: 8.55 s, total: 44.3 s
Wall time: 42.2 s
>>> print len(df)
0

My versions:
pandas: 0.15.2
Cython: 0.21.2
numpy: 1.9.1
tables: 3.1.1

IIRC we had this discussion already, no? this is a known PyTables issue AFAICT.

Honestly, I don't remember, and I did not find related questions in pandas/issues; unfortunately I did not check pytables/issues.
But you're right, its known issue for 3.1.1 - something was broken in update from 3.0.0:
https://github.com/PyTables/PyTables/issues/390

right that's the discussion I remember (sorry wasn't with you!)
So soln now is to rollback to 3.0.0.


Invalid PCode generation for PMULUDQ

Describe the bug
Ghidra disassembly for command PMULUDQ  (XmmReg, m128) produces Pcode that reads the same 4 bytes of memory twice instead of distinct 4 bytes in 16-byte memory.
66 0f f4 95 20 dd  ff ff   PMULUDQ    XMM2,xmmword ptr [RBP + local_22e8]
              $U3200:8 = INT_ADD RBP, 0xffffffffffffdd20:8
              $Ua4d00:8 = INT_ZEXT XMM2_Da
              $U5300:4 = LOAD ram($U3200:8)
              $Ua4e00:8 = INT_ZEXT $U5300:4
               XMM2_Qa = INT_MULT $Ua4d00:8, $Ua4e00:8
               $Ua4f80:8 = INT_ZEXT XMM2_Dc
               $U5308:4 = LOAD ram($U3200:8)
               $Ua5080:8 = INT_ZEXT $U5308:4
               XMM2_Qb = INT_MULT $Ua4f80:8, $Ua5080:8

This results in invalid emulation, at the very least.
To Reproduce
Steps to reproduce the behavior:
Disassemble 66 0f f4 95 20 dd
Expected behavior
Resulting pcode should properly access  memory at offset.
Environment (please complete the following information):

OS:  Windows 7
Java Version: java 17 2021-09-14 LTS
Ghidra Version: 10.0.4
Ghidra Origin: official distro

Additional context
Of note is that the ia.sinc file is correct:
:PMULUDQ        XmmReg, m128     is vexMode=0 &  $(PRE_66) & byte=0x0F; byte=0xF4; XmmReg ... & m128
{
    local a:8 = zext(XmmReg[0,32]);
    local b:8 = zext(m128[0,32]);
    XmmReg[0,64]  = a * b;
    local c:8 = zext(XmmReg[64,32]);
    local d:8 = zext(m128[64,32]);
    XmmReg[64,64] = c * d;
}

There appears to be a generic issue with getting sub-pieces there.  It looks like a lot of the access to sub-pieces of m128 (not starting at 0) set local m:16 = m128 first and work off that otherwise it fails to add any SUBPIECE pcode ops.  Instructions like PUNPCKHQDQ and PMINUW, to name a few, appear to suffer as well.
verified against 9.2 (when this PMULUDQ got added) and master bed44bd55dc88c7c6fab5f158cdb4b9daa087519

@ryanmkurtz   I might even label this as a sleigh compiler bug, I looked through it pretty well from a slaspec POV and it made no sense.


cannot copy when textinput is disabled

After disabling a textInput, i can no longer copy the text. Is there an alternative that i can try.
Any help is appreciated.
Thanks

Hi @GSingh01 , unfortunately, this is not possible in mobile apps. But you can do the same in websites by following inspect element of the web page.
Thankyou

Hi @GSingh01 , closing for now to inactivity.


TestResources README needs more information about authoring the test-resources.json

Currently it's about usage we need a section on authoring.
@weshaggard @danieljurek @heaths

We've improved docs in multiple areas already.  Pretty sure this concern is resolved at this point.


NeoClient refactor for data integrity and a more swifty approach

Refoctors NeoClient implementing newest data validation approaches.

This refactor includes new enums to handle server response; to ensure data validation and error propagation. (NeoClientResult and NeoClientError)

Tests are updated to use latest NeoClient syntax for error handling and data validation.

Thank you for the PR @jaumevn, there are several things that I love in this PR. Guarding all forced unwraps is a huge win.
However I would like to further consider this style of error handling. I would consider it the Alamofire method of handling error propagation rather than the swifty way. To my knowledge there is no consensus in the Swift Community for passing errors up in an async call.
Admittedly the method that is currently being used in the repository is the "golang way." However you can still see the older methods that interop with objective C pass up separate data and error objects.
E.g
func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask

Since there is no official Swift way, I hesitate to move away from the way apple does their asynchronous error handling, as this would be a big architectural change that would be the groundwork for all network calls as the project develops.
Any other swift devs want to chime in? @apisit perhaps

The use of enums for failure/success data handling is commonly used in most public SDKs in order to give better understanding of data/errors and also to provide an easy interface to work with.
Our main goal should be providing an easy-to-use SDK that:

Handles all kind of errors/data.
Handles all data integrity validation (that shouldn't be a developer task, that's the SDK task)
Documents all SDK errors as well as success data using typed and validated data (that's why NeoClientResult enum is created)

Additionally, the use of generic enums make code more maintainable, easier to fix and update, and of course more testable. For instance, adding new methods or error to the SDK is easy. We will only need to add a new case in the NeoClientError enum and use the NeoClientResult with the new class/struct (or any kind of data) to be returned.
What do you think guys?

I can dig it

Thanks @jaumevn @saltyskip  this looks good!

Great!! One last change and we'll merge it in. We actually don't need breaks in any of our switch statements
No Implicit Fallthrough
In contrast with switch statements in C and Objective-C, switch statements in Swift do not fall through the bottom of each case and into the next one by default. Instead, the entire switch statement finishes its execution as soon as the first matching switch case is completed, without requiring an explicit break statement. This makes the switch statement safer and easier to use than the one in C and avoids executing more than one switch case by mistake.
Taken from https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html

Uoo! I didn't know that, we always learn something new ;)


qt6.qtbase: add patch to fix handling of variable fonts

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

For reference, the patch was submitted to the Qt project 5 days ago at https://bugreports.qt.io/browse/QTBUG-111994

And this issue only applies the patch to Qt6. Looking at Fedora they are applying this fix to Qt5: https://bugzilla.redhat.com/show_bug.cgi?id=2178389. I guess Qt5 will cause a massive rebuild though so should be a separate PR on staging.


[Question] Podman architecture

I am drawn to podman and rkt because they don't require a daemon like Docker does, and I believe that there shouldn't be a single point of failure that would kill all containers if it died itself.  (It doesn't help that I've had to restart the Docker daemon in order to solve problems with Docker; bye bye containers...)
Indeed, in @rhatdan's blog post at
https://www.projectatomic.io/blog/2018/02/reintroduction-podman/ , it reads:

Podman doesn’t require a daemon to run containers and pods. This makes it a great asset for your container tools arsenal.

But I just learned that conmon is a daemon that runs the containers started by podman.
Therefore, is podman's architecture actually better than Docker's?  Is it even different?
rkt has systemd run the containers, which seems very smart and simple.  Doesn't this make rkt's architecture superior to podman's?
Thanks!

conmon isn't really a daemon in the same sense Docker is - it's an extremely small C binary that wraps each container we launch (one conmon per container), providing basic services such as attaching to the container, recording its exit code, and cleaning up resources after it exits. conmon only exists while the container it is managing is running - once it exits, conmon will also exit.

That sounds fantastic, but does that mean that podman ps somehow gets its info from talking to each individual conmon instance without needing a separate, persistent daemon?

ps actually doesn't need to talk directly to conmon. We use runc to get the status of a container, then if it has exited, it looks for a file that conmon creates giving information on how (exit code, whether it was killed due to an OOM condition, and the rough time it exited). No daemon involved.

I think this issue is satisfied, reopen if I am mistaken.


Searching based on synonyms

At this moment, added synonyms to a class aren't working when searching in the bSDD Revit plugin. It would be very helpful if this could be implemented in the plugin, as this would make searching a lot more approachable.
I noticed that in the API documentation, the search function /api/Class/Search/v1 does make use of synonyms.
Regards,
René Sondermeijer

Thanks for the issue!
I moved to the UI project:
https://github.com/buildingsmart-community/bSDD-filter-UI/issues/41


reason for erroring on empty compression/decompression data?

Is there a specific reason why you return an error when there is no compression or decompression data provided?

Don't think so. Returning empty data instead should be fine.


Block comments confuse indentation detection

This example causes an (IMO) incorrect indentation warning
pragma solidity ^0.4.4;

contract Something {
    /* blah
     */
    function something(uint a, int b) returns (int c) {
        return a + b;
    }

    /* blah
     */
    function other(uint a, int b) returns (int c) {
        return a + b;
    }
}

In test.sol, line 12:
     */
^-- WARNING: Incorrect indentation: Make sure you use 4 SPACES per level and don't precede the code by any comments.

Interestingly this only happens on the second (and all later) occurrences of a block comment not on the first.

The indentation checker is doing its job alright. Because the */ has 1 extra space before it, the linter throws a warning because it doesn't see exactly 4 spaces (it sees 5 instead).
So I think we need to make an exception for the multi line comment.

But strangely the first occurrence is't recognized as a violation.

closing this since the above script now gets through without any errors, opening up another todo item to write tests for indentation rule. Thanks for reporting!


Browser's incompatibility between native Promise and indexedDB

Background
UPDATE 2017-10-16: Things have changed since this issue was filed:
1. All browsers except Firefox has become compliant between IndexedDB and their native Promise.
2. Dexie 2.0 has come out with full support for async/await, both native and transpiled.
/UPDATE
Async await TC39 proposal was finished as of July 2016 and was hard-bound to native Promise. This will be a show-stopper for all non-native promises including Dexie.Promise from entering the async/await sugar world. Transpilers such as Babel and Typescript has until now left an open door for custom promises by allowing the use of a local var Promise = CustomPromise at current module scope. But we simply cannot rely on this anymore.
Problem
So why can't we just make Dexie use native Promises and get rid of this issue? Here's the MAJOR reason:
IndexedDB Transactions does not work with native Promises
A recent test made on evergreen browsers at September 21, 2016, verifies the following unpleasant information:

Chrome / OperaIndexedDB plays ball with native Promise
FirefoxIndexedDB HATES native Promise
EdgeIndexedDB HATES plays ball with native Promise
SafariIndexedDB dislikes native Promise very much plays almost perfect ball with native Promise

EDIT: Edge has fixed this in latest version Microsoft Edge 38.14393.0.0 / Microsoft EdgeHTML 14.14393
EDIT2: Safari 10.1 has fixed this as well. However, keep away from micro tasks after a transaction has been created (No Promise.resolve().then(...) after transaction creation without using it).
Only in Chrome, Opera and latest Edge version, IndexedDB transactions plays well with native Promises. In Safari, it will keep the transaction alive between single Promise.then() calls, but if you wait for several Promise.resolve() after each other, and then continue to try using the transaction, your screwed!
Dexie works around this issue by implementing its own micro-task loop, making its Promise implementation A+ compliant without sacrificing indexedDB compatibility. But now when TC39 has finalized the async / await standard to rely exclusively on native Promise, not only Dexie, but other indexedDB libraries as well, are in a situation where we can't do async/await with indexedDB and target other than Chromium browsers.
Way Forward
If all browsers played well with native Promises, we're actually not that far from switching to generate native Promises in Dexie. We could make it work and still retain transaction state. There is commented-out code in Dexie that would make it possible to use native Promise. The reason it's been commented out is due to the fact presented in this issue - turning it on would lie to our users, saying they could use native promises with Dexie when the fact is it wont work on other platforms than Chromium.
On the other hand, in case all of Edge, Safari and Firefox would FIX THIS within a year or so, it might be useful after a while, when all browsers out there are updated. But is is worth it? Is it really going to happen so soon? Given the time it has taken for browser vendors to support indexedDB so far (several years), It doesn't seem likely that all of them should fix in years to come.
So I believe we will change our docs to discourage people from using async await in favour of using yield.  They'll simply need to use the Promise-style within Dexie transactions, or maybe use yield if it could provide any type safety, which I doubt.
Conclusion
No library on earth will support async/await within IndexedDB transactions and run that code on Firefox or Safari for the coming two years at least (my simple guess). Making Dexie support native Promises will not change that. Due to that fact, we should discourage the use of async / await within transactions for now.
EDIT: Dexie 2.0 now works with native async functions on all modern browsers (Edge, Chrome, Opera, Safari and Firefox). This means native async await works well on all browsers except for Firefox, due to the incompatibility described here. If transpiling the code with Typescript or Babel, it can target also IE and Firefox. So I won't be discouraging async functions anymore.

Ok, so I've played around a little and made a branch that supports native promises without having to wrap stuff in Dexie.Promise. This turns out to work with native async await in Edge. It will most likely work on in typescript 2.0 as well. Please checkout my new branch experiment/support-native-promise and test it in angular / zone.js so see if it copes there as well.
However, the incompability between indexedDB and native promises in Edge, Safari and Firefox persist, so using async await will still fail in Edge with TransactionInactiveError, as I already knew. This fix may only be useful for developers targeting Chromium exclusively.

I am confused. I thought it was by-design that transactions would autocommit if you yielded to a microtask? I'm actually kinda surprised Chrome even has this behavior; it may be a bug.
Take a look at @inexorabletash's https://github.com/inexorabletash/indexeddb-promises repo, where he introduces a waitUntil() method specifically to work around the problem of Promises causing the transaction to auto-commit. Also your input on https://github.com/inexorabletash/indexeddb-promises/issues/12 would be appreciated @dfahlander. :)

I don't know if Chromium is violating the standard or not. It may be for a rational reason since IMHO this mutual incompatibility between indexedDB and native Promise is a bug in the overall Web platform.
IndexedDB was designed before the platform had an async primitive. Now when it has, I think it would be very much irrational not updating the indexedDB spec to reflect how async primitives are handled.

@nolanlawson https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/ does a good job of explaining where microtasks fit into the microtasks/tasks/events loop.
It sounds like the IDBTransaction remains active until the success event is fired. That is a task, so promise microtasks should run before that, while the transaction is still active.

In theory, per spec (matching @jakearchibald's blog post), the steps for firing success/error would be something like:

Update the request state
Create the event
Set the transaction to active
For each target in (request, transaction, connection), do:
If event propagation is not stopped, then for each listener on target, do:
1. Run listener's callback
2. Run microtasks
Set the transaction to inactive

There are two bits that are not implemented consistently across browsers:

Microtasks should run every time control returns from script
The transaction is active around the whole thing

I believe some browsers only execute microtasks after each target is processed (i.e. at an imaginary 4.2 step), and some do it at the end of the whole task (i.e. at an imaginary step 6)

It seems that Safari and Edge is actually doing microtasks correctly for promises (ran @jakearchibald's tests on them today and they behave like Chrome now!). Problem seems to be the second one, that transactions are inactivated and committed before the microtask queue is empty.

Update: Edge seems to have fixed this in Microsoft Edge 38.14393.0.0 / Microsoft EdgeHTML 14.14393.
@nolanlawson, did you fix it ;) ?

I didn't fix it, but yeah, lots of IDB stuff has been improved recently and continues to get improved (even while we don't have multiEntry and friends yet...)

I have a question. Is this var Promise = CustomPromise business supposed to solve the issue of mixing Dexie and native promises in a transaction? During debugging I see how the local Promise is replaced in the transaction. But Promise values returned by, e.g., the Webcrypto API are still native Promise implementations and break the transaction. Do I miss something here? Here is my setup:
dexie 2.0.0-beta.4
typescript 2.1.1 with target es6

Webcrypto API will break IDB transactions no matter the workarounds done by Dexie to make promises interact. Actually, Dexie transaction zones are maintained also for native promises originating from api:s lite WebCrypto and fetch(). The problem lies in IndexedDB in that it will make the transaction fire off when calling a non-IndexedDB async API.
There is a new proposal going on that would enable IndexedDB transactions to wait for arbritary promises to complete. Until then, we cannot use WebCrypto within transactions.
To store encrypted data, I would suggest either to encrypt it before starting the transaction, or, use a javascript-based (synchronous) crypto API instead of WebCrypto.

Aha. In my current situation I need to perform WebCrypto operations during the transaction of a database upgrade. As I cannot shift away from WebCrypto I prefer your first suggestion and prepare the data I need for the upgrade in advance. Here is my question: Is there any mechanism that I can use that hooks in right before the upgrade transaction is created?

@sechel, let's continue on #374 where I have suggested a way to accomplish what you need to do.

The test in the linked gist appears to pass in Safari 10.1 on desktop (and most likely iOS Safari 10.3). That leaves Firefox as the only browser where IDB and Promises don't play nicely.

Has this issue been reported to Mozilla? Is there a bug I can track?

Mozilla bugs:

https://bugzilla.mozilla.org/show_bug.cgi?id=1193394
https://bugzilla.mozilla.org/show_bug.cgi?id=1383029

Thanks for pushing on this.
If you have cycles, can you look at the following tests to make sure we're covering Dexie's expected behavior fully?
The first two are probably the most important relevant. In: https://github.com/w3c/web-platform-tests/tree/master/IndexedDB

event-dispatch-active-flag.html
transaction-deactivation-timing.html
upgrade-transaction-deactivation-timing.html
upgrade-transaction-lifecycle-backend-aborted.html
upgrade-transaction-lifecycle-committed.html
upgrade-transaction-lifecycle-user-aborted.html

Just became aware of this issue after trying my Dexie code in FF and seeing it fail. Bit confused about the current status of this though. By this:

EDIT: Dexie 2.0 now works with native async functions on all modern browsers (Edge, Chrome, Opera, Safari and Firefox). This means native async await works well on all browsers except for Firefox, due to the incompatibility described here. If transpiling the code with Typescript or Babel, it can target also IE and Firefox

Does this mean there is no way to use IndexedDB transactions - and, in-turn, Dexie transactions - in Firefox right now, or I can simply update my build to transpile my asyncawait code (or don't touch it?) and it will work?

Relevant: Mozilla Intent to implement and ship: spec compliance Promise microtask behavior posted 2 days ago. They are aiming to get the spec compliant behaviour into Firefox 60 (which will also be an Extended Support Release)

@poltak no, Dexie.Promise fixes it. Only issue is if you use non-transpiled async/await with Firefox, as it forces the use of the builtin promise

@dfahlander Thanks for the reply. Played around with build and confirmed babel is transpiling asyncawait (tried both into es6 generators and es5), however still getting issues in FF 59. To clarify, in case this is completely unrelated, any transaction performed throws a Dexie.PrematureCommitError - have also looked over transaction code to ensure no external/non-Dexie async calls

no, Dexie.Promise fixes it

Going by the docs, all async Dexie methods automatically return a Dexie.Promise rather than native Promise, so there's nothing I need to do manually here, like window.Promise = Dexie.Promise, right?
I'll move this to a separate issue if this is not the best place to discuss.

No, you don't need to use Dexie.Promise explicitly to get it working, but in case you use Promise.all(), race or resolve(), new Promise (), make sure to not import Promise. Promise polyfills are supported but they should set window.Promise before app code starts, not be imported. Otherwise, PrematureCommitError will happen.  If you'd have a chance to post a link to the failing repo (or fiddle/plunk), that would be great.

@dfahlander yes, saw the Promise-related info in the Best Practices page (great docs btw!). In code we're just using (window.)Promise everywhere, but realised babel was overriding that with core-js polyfill. Played around with changing the way babel polyfills, and also manually overriding window.Promise with different promise polyfills in main entrypoint, but still end up with the PrematureCommitError in FF.
It is on the branch associated with this PR. It's actually a web extension, and you need to load as a temporary addon in FF, so maybe not so fun to test. Instructions if you really want to. The Dexie code is all in src/search-index/search-index-new dir, starting from the index module - and there is some gulp spaghetti in gulpfile.babel.js and of course babel settings in .babelrc.
It's probably just something fairly simple I'm not doing right with the build though. Will spend more time playing with it this week, so please don't inconvenience yourself too much

Managed to get it working. It was indeed just something with the build.
To briefly outline, for anyone else with the same problem (although may not be an issue for much longer in FF):

previously using babel-plugin-transform-runtime to automatically handle polyfilling a lot of things
there's a polyfill flag you can supply to change the polyfill scope from global (assigning window.Promise I suppose) and aliasing (replacing some code like new Promise() with new _promise() where _promise is assigned to the polyfilled constructor)
transactions in FF seem to prematurely commit with both strategies (makes sense with aliasing, as it conflicts with Best Practices page's Promise info)
I ended up removing babel-plugin-transform-runtime and changing build to just use babel-preset-env along with useBuiltIns flag + import 'babel-polyfill' in all my script entrypoints (useBuiltins replaces the entire babel-polyfill import with only the ones you need for your target env/s)
with babel-preset-env, you just need to ensure you have a target env that will include core-js.es6.promise polyfill (or specify it in the include option to force it)

Maybe there's a way to get it working with babel-runtime that I missed, and my JS build tools knowledge is very limited - so take this info with a grain of salt - but I'm just happy to have found a solution at this point. Thanks for your replies @dfahlander

Is it true that this issue is long gone and native promises can now be used in Firefox, just like in all other modern browsers? Or all the updates are current?

For the records, I'm facing very weird PrematureCommitErrors in Electron 3.04 since I switched to using Babel 7. I'm able to reproduce it in my app but it involves very specific and non intuitive conditions, so I'm not sure I can reproduce it in a minimal example.
However, I traced my code and came to the conclusion it didn't not match the caveats mentioned here.
It rather looked like some sort of leak.
Since I had upgraded to Babel 7 right before and thought it was related, I tried to compile using the @babel/plugin-proposal-async-generator-functions plugin and it worked again!
So my understanding is that Babel 7 uses native Promises with Electron, and that they are not ready for prime time...

UPDATE:
Actually no, it doesn't work.
The workaround is to avoid using "for await" and use a classical for(let i=0; ...) loop instead.

Sorry I was updating my comment while you were replying. See my updated version above !!

So eventually I don't think it's related to a transpiler vs native issue. I have the same issue in both cases.

I know Promise.all() returns synchronously when it is passed an empty iterable. For await probably has a similar behavior that can be related to this issue.

@dperetti - I've breaked out your issue into #774, let's continue there.

Is it true that this issue is long gone and native promises can now be used in Firefox, just like in all other modern browsers? Or all the updates are current?

Firefox 60 (released 2018-05-09) should have compliant microtask handling for Promises. I notice that https://github.com/jakearchibald/idb doesn't have any specific guidance about handling Firefox so I assume it works. I also ran this gist through mozregression and confirmed that it works as expected as of Firefox 60.
I suggest the Dexie docs need to be updated to remove the guidance about native Promises in Firefox since the latest Firefox ESR is Firefox 68 which contains this fix.

Thanks @birtles. I thought I had already updated the docs, but I suppose there are pages with old information still. Do you have a link to the page(s) that has inaccurate info? Also, please feel free to click the edit button and correct them directly - it will generate a PR for the dexie.js-web repo.

Do you have a link to the page(s) that has inaccurate info? Also, please feel free to click the edit button and correct them directly - it will generate a PR for the dexie.js-web repo.

Huh, I totally didn't notice the edit button! Unfortunately I'm out of office for the next few days so in case I forget to come back to it, a couple of instances I came across today were:

https://dexie.org/docs/Dexie/Dexie.transaction()#async-and-await
https://dexie.org/docs/Promise/Promise#why-we-dont-use-native-promise (specifically the reference to Firefox there, unless I'm misunderstanding something)

Thanks! I've updated those two pages. I also think it's time to close this issue. Thanks everyone involved! <3


BeamNG.research version 1.16 breaks Decalroad positioning

If you add several Decalroads to the prefab file by using the scenario.add_road function, then they all spawn at (0,0) even though their start and endpoint are different. The same prefab file works fine for BeamNG.research version 1.15. There are no error messages in the BeamNG console.
Prefab file: https://pastebin.com/LXL7Vp7r

This was caused by some changes in how the game actually handles DecalRoads. There's a fix in the dev branch which I'll merge soon.


Initial implementation of CodeActions

I've tried to implement some code actions for function type annotations, misspelled variable names, types and patterns. Not sure if this is the best way to implement this, by pattern matching on different code diagnostics. Suggestions are welcome.
For any implemented suggestion, a the lightbulb will appear and able to click/ctrl+. to show suggestions:
For function type annotation:

Patterns:

Variables:

One issue I have not been able to solve yet is that the function type annotation lightbulb/suggestion is available after the command has been executed and file has been saved - seems to be some diagnostics remaining after a successful save.

Thanks a lot for all contributions! ❤


nospam's entropy is important for security

The purpose of the onion routing is to hide the IP of the node that's advertising itself. However, when a node (A) advertises itself to what I'll call an introducer it sends it its public key. This introducer node now can pretend to be attempting to add A to its friends list because it knows its public key. The only protection is the nospam, which is 4 bytes. The size and randomness of the nospam is the only thing protecting A from having its IP discovered by a peer. This is not obvious from the nospam name. I think this property needs to be documented more clearly somewhere. Maybe this should go in the not-yet-written DHT documentation?

nospam is only used in friend requests. Only received friend requests with a valid nospam will be passed to the tox.h callback. Friend requests are not accepted automatically in toxcore, it is the job of the client to show the friend request to the user and ask them if they want to accept it or not.

Oh, okay. That's much better. Thanks for clarifying. That means an attacker can't actually try millions of friend requests against the same user.
On September 23, 2015 1:51:51 PM PDT, irungentoo<EMAIL_ADDRESS>wrote:

nospam is only used in friend requests. Only received friend requests
with a valid nospam will be passed to the tox.h callback. Friend
requests are not accepted automatically in toxcore, it is the job of
the client to show the friend request to the user and ask them if they
want to accept it or not.

Reply to this email directly or view it on GitHub:
https://github.com/Tox-Docs/Text/issues/15#issuecomment-142724729

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


Question: dynamic check suite and run title

Hey, @EnricoMi I noticed that your check suite has a custom title, that's very useful to understand at a glance what happened (3rd line):

I'm wondering if you know if there's a way to change the same for simple runs (e.g. 1st line on screenshot), from "Failing after" to something that I provide in yaml dynamically?
For reference the CI.yml: https://github.com/TWiStErRob/net.twisterrob.sun/blob/master/.github/workflows/CI.yml

That is a job in a GitHub actions workflow. Than summary cannot be modified as GitHub Actions picks that text. No configuration possible.

Thank you! That makes sense. After further investigation I found this:
https://github.com/TWiStErRob/github-actions-test/blob/main/.github/workflows/custom-status.yml
At first I was looking into creating a custom check suite like you do, but then this was more suited to what I was looking for.


SVGs opening as blank documents in vector editing software

In multiple vector editing applications the SVG opens as an empty file in the correct proportions, in particular neither Adobe Illustrator CC 2022 (Mac) or Inkscape can open these files.

Hi @lessonhacker! You're right -- I can't even open the SVG's in photopea.com. Let me get this fixed 👍

Okay, this is apparently going to be near impossible to fix due to show shiki generates tokens. I investigated very thoroughly, and no one has been able to export shiki tokens to SVG, even on the shiki playground site, SVG's don't get generated properly.
We'll have to wait on this one 👍

I've also tried using paid software, but even it can't handle processing shiki tokens...

Maybe it's a good idea to disable SVG export altogether...
Looking at the SVG source, it's basically HTML & CSS wrapped in an SVG tag. That's not really helpful... and also misleading. I am tempted to always save and keep a format that's scalable and lossless, but now I'm glad I didn't use SVG export. 😅

Maybe just rename it as HTML export - as I’ve found it really useful to dump the HTML for further manipulation.

On 30 Dec 2021, at 00:16, Oliver Matla @.***> wrote:

Maybe it's a good idea to disable SVG export altogether...
Looking at the SVG source, it's basically HTML & CSS wrapped in an SVG tag. That's not really helpful... and also misleading. I am tempted to always save and keep a format that's scalable and lossless, but now I'm glad I didn't use SVG export. 😅
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you were mentioned.

This may be the ticket: https://www.npmjs.com/package/dom-to-svg

Results aren't perfect using dom-to-svg, but they're the best I've seen.
Is the below good enough for you guys?

I don't know how it looks for you, but it's completely shot in Firefox:

Yea it’s similar to that (on my phone at the moment so can’t post screenshot of Chrome example). Looks like the tech is getting there but not entirely yet.
I’ll keep this issue closed for the time being. I may dive into this package and see if I can commit any PRs to resolve these issues.


Doubt: How to handle errors in domain events

Hello @ardalis
I base some of my projects on your clean architecture, and I've always had this doubt... with domain events.
How do you handle any possible errors or downtime that may happen on this piece of code? Or do you just not define critical bussiness "happenings" as a domain event like you're showing in the example, where it 's just simple UI notifcations?
            var eventsCopy = entity.Events.ToArray();
            entity.Events.Clear();
            foreach (var domainEvent in eventsCopy)
            {
                await _mediator.Publish(domainEvent).ConfigureAwait(false);
            }

Keep up the good work! Thanks!

Closing as no activity / answer...

Hey David. Sorry, missed this originally but your closing/comment caught my attention.
I used to use domain event exceptions for things like validation but more recently I've come around to the idea that raising events should never fail, because essentially the act of raising an event just means saying "this happened" and shouldn't generate a direct response. If a response is needed, then that should be a command not an event and so more recently I've been considering how to use command-based messages rather than domain events for things like validating business rules or invariants.
Now, I'm not sure that answers your question.  In the code you list above, if I want to follow my ideals from the previous paragraph, I might wrap the contents of the foreach in a try-catch that logs but otherwise doesn't bubble up any exceptions that occur. I would also make sure my handlers weren't throwing exceptions as a matter of course (any that occur would be truly exceptional, not the result of a guard clause or validation issue).
In terms of what did I do before I changed my outlook on events? I just let them bubble up. The first handler that threw would break the foreach loop and bubble up to the code that had raised the event, eventually being caught somewhere (the global error handler if nothing else). Does that help?


Failure Adding Expression Column to Existing Table

Provider Version
registry.terraform.io/chanzuckerberg/snowflake v0.25.36
Terraform Version
Terraform v1.1.6
Describe the bug
When adding an expression column to an existing table the following error occurs:
Failed to add column ROW_ID => Only adding a column as a constant is supported by Snowflake
Issue: table.go#L643 : looks like this piece is hardcoded to filter out anything but constant.
Where ROW_ID is:
  column {
    name     = "ROW_ID"
    type     = "VARCHAR"
    nullable = false
    default {
      expression = "MD5('hash-me')"
    }
  }

Expected behavior
The provider should generate the appropriate DDL to add the expression column.
The provider should update the terraform state to represent this expression column.
Code samples and commands
resource "snowflake_table" "table" {
  database            = "database_name"
  schema              = "schema_name"
  name                = "table_name"
  data_retention_days = 10
  change_tracking     = true
  cluster_by          = []

  column {
    name     = "column1"
    type     = "VARCHAR(16777216)"
    nullable = false
  }

  column {
    name     = "column2"
    type     = "TIMESTAMP_TZ(9)"
    nullable = false
  }

  column {
    name     = "column3"
    type     = "VARIANT"
    nullable = false
  }

  column {
    name     = "column4"
    type     = "VARCHAR"
    nullable = false
    default {
      expression = "MD5('hash-me')"
    }
  }

}

I've forked a fix that generates the necessary SQL to add the expression column and passes all tests. However, when running locally the terraform state doesn't update as expected, the expression column is left out of the state even though the tables are updated within the database and I can't seem to pinpoint where the issue is.

Bump on this one ?

We are closing this issue as part of a cleanup described in announcement. If you believe that the issue is still valid in v0.89.0, please open a new ticket.


WRKLDS-1421: Add cluster-monitoring annotation in namespace

This is complementary of https://github.com/openshift/cli-manager-operator/pull/255 to take the new label in the CI tests of cli manager.

/cherry-pick release-4.17


Use qs to parse body, for #507

This is for #507.

Coverage decreased (-0.2%) to 92.389% when pulling b45bf51420004be000991c61589342f3a9047f17 on xavierchow:master into 563fff1e507815a710adcdc292f5ecf1ea29f30d on node-nock:master.

Hi, thanks for this patch.
It seems to me we should settle on the built-in querystring instead.
query.parse('a%5Bb%5D=test'); // => { 'a[b]': 'test' }
qs.parse('a%5Bb%5D=test'); // => { a: { b: 'test' } }

The second result is not standard across all tools.

I think this could probably stay open! It's not too far off from being merged.

The test seems identical to this one:
https://github.com/nock/nock/blob/3d74a15cdbecf805400471c5bd0bbfeca4fa7b96/tests/test_intercept.js#L823-L846
I just fiddled around a bit with switching from qs to querystring and it doesn't seem to be completely straightforward, as there are different edge cases and qs library has some different options.
Since this change is in the wrong direction, and the test duplicates one in master, I'm closing this.


Examples README: Correct regex syntax and add port

We both missed this in the review :smile:

Invalid regex syntax
Include port number value

It is now aligned with the generated files pushed with the last PR.

@fireflycons Just invited you as a collaborator on this repo. Please feel free to commit anything like this. Thanks.


Scylladb integration faq

Purpose of the PR
I am interested in updating the documentation and integrating instructions on how ScyllaDB can be utilized as a backend for HugeGraph. This is a first step of many changes towards this direction. As a person who is working with Graphs for more than 6 years now, HugeGraph got my attention as a potential solution to challenges that I came though the last few years.

Thanks for your contribution~
Welcome to further supplement the relevant configuration documents or processes regarding integrating ScyllaDB as a replacement for Cassandra backend (Also welcome to learn more about the HugeGraph/community)
BTW, the core storage support of HugeGraph will evolve towards a raft+rocksdb approach(for cluster), with the aim of controlling data management as much as possible to improve read and write performance (You can see the relevant introduction & design here. The code is basically ready and will be released in the next version 1.5.0 soon)


Add PhoneNumberUtil function overloads that take CharSequence instead of String

Imported from Google Code issue #84 created by cooldwind on 2011-12-21T12:46:36.000Z:

It would be useful that PhoneNumberUtil.parse could get raw phone number as CharSequence instead of as String.
See https://issues.apache.org/jira/browse/LUCENE-3663 for a use case.

This is fixed as part of release 8.7.0.
PR #1847


Flake8 rule 'D101' reported an invalid point

Flake8 reported an invalid point for the rule D101, with the messge Missing docstring in public class.

Debug information:
Atom version: 1.25.0
Flake8 version: 3.5.0 (flake8-docstrings: 1.3.0, pydocstyle: 2.1.1, mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.6.0) CPython 3.6.5rc1 on Windows

This is unlikely to be a bug in the parsing of flake8's output here, but it is possible. Are you able to share the file in the state that shows this error? If not, can you create a minimal reproduction case that you can share?
If this turns out to be a bug in flake8 it will need to be forwarded on to them before it is fixed.


How to get the coordinates of dominant colours from UIImage ?

It does not necessarily return exactly same colours contained in the image because they are calculated from the pixels of the image. So the result colors does not corresponding coordinates in the image.


Finish Host Task to error state when EMS paused

When ExtManagementSystem is paused, it's not possible to perform SmartState Analysis.
It created Task(MiqTask) in "Initialized" state and never finished even after resuming provider.
Now it switches task to Finished:Error
Fixes BZ https://bugzilla.redhat.com/show_bug.cgi?id=1740841

@miq-bot add-label bug
@miq-bot add-label ivanchuk/yes

@agrare please :eyes:


pass buildcontext environment variables to git calls

Fixes https://github.com/JFrogDev/teamcity-artifactory-plugin/issues/39

Thanks, @pwielgolaski!
I merged your pull request.
However, there was a minor thing in GitEnvironment class. I think it's more reasonable to keep only the environment instead of the runner context.
I committed a fix for that: https://github.com/JFrogDev/teamcity-artifactory-plugin/commit/ef0c5236b2254fbec92b3a2bef8dd730f06c8b66. Please let me know if you have any thoughts about it.


Fix from_utc_timestamp case failure on Cloudera when TZ is Iran

closes #10117
Iran is a DST time zone in some Env.
It's not suitable for a non-UTC time zone currently.
Signed-off-by: Chong Gao<EMAIL_ADDRESS>

build


Fix the movie rating of each movie to 1 decimal place

can you elaborate on this issue

Go to the live link https://filmpire-ssk.netlify.app/
Click on any movie.
You would see the rating of the movie is displayed in 3 decimal places.

🎯 Your goal is to fix the rating to 1 decimal place.

I would like to take on this issue and work on it. Can you please assign it to me so that I can get started

@alokVerma749 You can work over the issue.

you can review it.

I merged it without reviewing. Later I figured out that the changes you made are not reflected in every movie. Please check.

can you send any screenshots in which changes are not reflected, in my machine every movie got one decimal of rating

it looks like the production js version didn't support the toFixed() method, if this is the case we can use some alternative of that method.

add in movieinformation.jsx at the rating  next line
<Rating readOnly value={data.vote_average / 2} />
<Typography
variant="subtitle1"
gutterBottom
style={{ marginLeft: '10px' }}
>
{data?.vote_average.toFixed(1)} / 10

this line will help {data?.vote_average.toFixed(1)} / 10


Queued jobs don't support "Process when page access is received".

I've seen this on 8.5.5, 8.5.x branches, and develop branches.
I set up the "Fill thumbnail database table" job to run on page access.
However, it did not complete even after a long time after it started running.
When I visit the page again, there is no change.
I verified this by following the steps below:
Preparation: Make sure that the QueueMessages table is empty.
Step 1: Set the queue job to run when the page is accessed in 2 minutes.
Step 2: Access the page 2 minutes later and make sure it is running.
Step 3: Make sure that the queue is registered in the QueueMessages table. Note the number of queues registered.
Step 4: Access the QueueMessages table after another 2 minutes and check the number of entries in the QueueMessages table.
Step 5: Compare the numbers in Step 3 and 4.
I would like to be able to run queue jobs with "Processing when there is a page access".
Note that in the develop branch, the number of registrations in Step 4 was twice the number in Step 3.
I think this is not very good, because the old queue will remain.

Queues have been completely rewritten in v9. Among other improvements, they will continue to proces asynchronously on any CMS/dashboard page, provided the user browsing that page has edit/admin access.


Remove Images/ folder and rewrite history

The main motivation here is to cull some very large files, and massively reduce the size of the repository. I've reviewed, and we have some really big files. Here are the largest files in the history
➜  EnvironmentalComputing git:(master) ✗ git ls-tree -r -t -l --full-name HEAD | sort -n -k 4 | tail -n 20
➜  EnvironmentalComputing git:(master) ✗ git ls-tree -r -t -l --full-name HEAD | sort -n -k 4 | tail -n 20
1255023	Draft tutorial pages/study-site/_index.html
1641970	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_r.dbf
1801924	Draft tutorial pages/NetCDF/NetCDF.html
1988964	content/Images/Murray-28.jpg
2366625	Draft tutorial pages/Draft_glm/glm.html
2520920	Draft tutorial pages/NetCDF/2015_20151206092000-ABOM-L3S_GHRSST-SSTfnd-AVHRR_D-1d_dn-v02.nc
2772927	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_l.dbf
2982785	content/Images/Murray-13.jpg
3140186	content/Images/Murray-26.jpg
5010716	content/Images/site_photo.JPG
5060602	content/Images/group_photo.JPG
5163498	content/Images/DJI_0021.JPG
5529548	content/Images/DJI_0272.JPG
5701888	content/Coding-Skills/asking-code-questions/help-me-help-you.gif
7142632	Ecostats2017/LectureNotes.pdf
7739084	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_l.shp
10187781	Draft tutorial pages/gganimate/MyEBirdData.csv
12487872	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_r.shp
13593905	Draft tutorial pages/Accessing weather data/maxann.asc
13593905	Draft tutorial pages/Accessing weather data/maxann.txt.txt

The largest (last 4 ) are more than 10Mb each. This makes the repo really big and cumbersome to work with. Can I filter them out of the history? This would "Rewrite" the history. The implication is that all the hashes would change. Through the commit messages would remain. You'd need to reclone.
Only makes sense to do this when everyone is kind of finished working on local stuff, as you'll need to reclone the repo.
Can I go ahead?

[  ] @fontikar
[  ] @wcornwell

Oh, and hold off making more changes until this is done!

Here's the hit list:

Images/
content/Images/
content/cont
content/shortcodes
Ecostats2017
public/
Draft\ tutorial\ pages/
content/Coding-Skills/asking-code-questions/help-me-help-you.gif
themes/hugo-theme-learn/exampleSite

I was going to remove all Drafts, we can bring them back later if we want to keep

Success! I've reduced the repo size down from 342Mb to 115Mb. This was achieved by removing many large files.
Step 1: detect large files
We can find largest files in the current tree using git
➜ git ls-tree -r -t -l --full-name HEAD | sort -n -k 4 | tail -n 20

1255023	Draft tutorial pages/study-site/_index.html
1641970	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_r.dbf
1801924	Draft tutorial pages/NetCDF/NetCDF.html
...
2982785	content/Images/Murray-13.jpg
3140186	content/Images/Murray-26.jpg
...
5701888	content/Coding-Skills/asking-code-questions/help-me-help-you.gif
7142632	Ecostats2017/LectureNotes.pdf
7739084	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_l.shp
10187781	Draft tutorial pages/gganimate/MyEBirdData.csv
12487872	Draft tutorial pages/study-site/61395_shp/australia/cstauscd_r.shp
13593905	Draft tutorial pages/Accessing weather data/maxann.asc
13593905	Draft tutorial pages/Accessing weather data/maxann.txt.txt

Some files over 13MB! I also checked out some older versions and reran. As files have moved about, this also captures large files in the history.
I also decided to remove the generated html files from the original site, as these were quite large. I found these by checking an old version  and running
list.files(".", pattern = ".html", recursive=T, full.names=T)

Step 2 - Remove files
Files are removed using git filter-repo. This program removes specified files from the history. You need to provided the path of the file or folder to remove. Note, this doesn't account for anytimes the file moved.  You'll need to force push and everyone reclone.
file list
Below is the list of files and folders purgred.


Max Rewards in Altair

Description
This branch is intended to create all the needed methods to accomplish maxReward calculation in the Altair Fork
Motivation
The end goal is to calculate at a given epoch and set of validators, what would be the max reward the validator could achieve taking into account the chain state at the given epoch.
Resources
Altair Spec
TODOs:

AttestationRewards
Sync Committee Rewards

looks good to me, we will work out the method names in the next SpecWrapper PR


Task/font awesome

Changes in this Pull Request:

Host font-awesome locally.
Include font-awesome in branding package.

Mandatory checks:

[X] Branch is up to date (latest changes were fetched from the upstream branch before creating this PR)
[X] Changes were tested manually
[ ] Java code changes are unit tested
[ ] Webtests are successful

To be checked by the reviewer:

[ ] Clean Java code and unit tested changes
[ ] UI customizablity is preserved: No hard-coded styling and URL references in JSF views

To be checked by the pull request owner:

[ ] .MASTER/job/BES_MASTER_IT/
[ ] .MASTER/job/OSCM_WS_Tests_INTERNAL/
[ ] .MASTER/job/OSCM_WS_Tests_OIDC/
[ ] .MASTER/job/OSCM_Integration_Tests_INTERNAL/
[ ] .MASTER/job/OSCM_Integration_Tests_OIDC/

Cross repository and core changes:

[ ] Interdependent changes have been communicated to the team (if applicable)
[ ] This pull request includes high risk modifications or core changes (e.g API, datamodel, authentication...). Mandatory reviewers: @goebell or @kowalczyka.

OSCM Build References:

<CI node number>: <tag>, example: ci10:goebell
-est6

Screenshot (if applicable):

add a screenshot illustrating your change

This change is

will create new PR without the html_examples