Transpiler Failure

Environment

Qiskit version: 1.1.1
Python version: 3.11.9
Operating system: Mac Sonoma 14.6

What is happening?
The transpilation is throwing and error when running the following circuit with the following backend options. I have observed the same with AerSimulator, happening mostly when the optimisation value is set to 3.
Compiler options:

Layout Method 'trivial'
Seed Transpiler: 1000,
Routing Method: 'stochastic'
Translation Method: 'synthesis'

How can we reproduce the issue?
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_aer import StatevectorSimulator
from qiskit import QuantumCircuit

qc = QuantumCircuit(3)
qc.x(0)
qc.x(1)
qc.x(2)
qc.id(0)
qc.id(0)

qc.measure_all()
print(qc)
backend = StatevectorSimulator()
options = {'layout_method': 'trivial', 'seed_transpiler': 1000, 'routing_method': 'stochastic', 'translation_method': 'synthesis'}
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=3, **options)
transpiled_circuit = pass_manager.run(qc)
print(transpiled_circuit)

print(backend.run(transpiled_circuit, shots=2034).result().get_counts())

What should happen?
Throws the following error:
thread '<unnamed>' panicked at /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/petgraph-0.6.5/src/graph_impl/stable_graph/mod.rs:402:17: StableGraph::add_edge: node index 20 is not a node in the graph

pyo3_runtime.PanicException: StableGraph::add_edge: node index 20 is not a node in the graph
Any suggestions?
No response

I tried to shorten the script and found that the combination of optimization_level=3 and translation_method=synthesis causes the error.
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_aer import AerSimulator
from qiskit import QuantumCircuit

qc = QuantumCircuit(2)
qc.x(0)
qc.id(0)
print(qc)
backend = AerSimulator()
for i in range(4):
    pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=i, translation_method="synthesis")
    transpiled_circuit = pass_manager.run(qc)
    print("optimization level", i)
    print(transpiled_circuit)
    print()

output (both main branch and qiskit 1.1.1)
     ┌───┐┌───┐
q_0: ┤ X ├┤ I ├
     └───┘└───┘
q_1: ──────────

optimization level 0
     ┌─────────┐
q_0: ┤ Unitary ├
     └─────────┘
q_1: ───────────

optimization level 1
     ┌─────────┐
q_0: ┤ Unitary ├
     └─────────┘
q_1: ───────────

optimization level 2
     ┌─────────┐
q_0: ┤ Unitary ├
     └─────────┘
q_1: ───────────

thread '<unnamed>' panicked at /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/petgraph-0.6.5/src/graph_impl/stable_graph/mod.rs:402:17:
StableGraph::add_edge: node index 6 is not a node in the graph
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: petgraph::graph_impl::stable_graph::StableGraph<N,E,Ty,Ix>::add_edge
   3: rustworkx::digraph::PyDiGraph::__pymethod___setstate____
   4: pyo3::impl_::trampoline::trampoline
   5: rustworkx::digraph::<impl pyo3::impl_::pyclass::PyMethods<rustworkx::digraph::PyDiGraph> for pyo3::impl_::pyclass::PyClassImplCollector<rustworkx::digraph::PyDiGraph>>::py_methods::ITEMS::trampoline
   6: _method_vectorcall_VARARGS_KEYWORDS
   7: __PyEval_EvalFrameDefault
   8: _PyEval_EvalCode
   9: _run_eval_code_obj
  10: _run_mod
  11: _pyrun_file
  12: __PyRun_SimpleFileObject
  13: __PyRun_AnyFileObject
  14: _pymain_run_file_obj
  15: _pymain_run_file
  16: _Py_RunMain
  17: _pymain_main
  18: _Py_BytesMain
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Traceback (most recent call last):
  File "/Users/ima/tasks/4_2024/qiskit/terra/tmp/12909.py", line 12, in <module>
    transpiled_circuit = pass_manager.run(qc)
                         ^^^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/transpiler/passmanager.py", line 441, in run
    return super().run(circuits, output_name, callback, num_processes=num_processes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/transpiler/passmanager.py", line 464, in wrapper
    return meth(*meth_args, **meth_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/transpiler/passmanager.py", line 226, in run
    return super().run(
           ^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/passmanager/passmanager.py", line 232, in run
    _run_workflow(program=program, pass_manager=self, callback=callback, **kwargs)
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/passmanager/passmanager.py", line 292, in _run_workflow
    passmanager_ir, final_state = flow_controller.execute(
                                  ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/passmanager/base_tasks.py", line 218, in execute
    passmanager_ir, state = next_task.execute(
                            ^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/passmanager/base_tasks.py", line 218, in execute
    passmanager_ir, state = next_task.execute(
                            ^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/transpiler/basepasses.py", line 195, in execute
    new_dag, state = super().execute(
                     ^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/passmanager/base_tasks.py", line 98, in execute
    ret = self.run(passmanager_ir)
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ima/tasks/4_2024/qiskit/terra/qiskit/transpiler/passes/utils/minimum_point.py", line 100, in run
    state.dag = deepcopy(dag)
                ^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 162, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 259, in _reconstruct
    state = deepcopy(state, memo)
            ^^^^^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 136, in deepcopy
    y = copier(x, memo)
        ^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 221, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
                             ^^^^^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 162, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 261, in _reconstruct
    y.__setstate__(state)
pyo3_runtime.PanicException: StableGraph::add_edge: node index 6 is not a node in the graph

This can be solved by manually cloning the DAG in the MinimumPoint transpiler pass, instead of calling deepcopy(dag). I can open a PR to fix it, but before doing so let's briefly discuss if we shouldn't override __deepcopy__ on the DAGCircuit (@mtreinish probably knows best as he wrote that transpiler pass) 🙂

@t-imamichi  this issue is reproducible even without  translation_method="synthesis"

Both your and my scripts do not raise the error without without translation_method="synthesis" on my environment (both qiskit 1.1.1 and main branch).
Could you paste the full error message?

I'm having this problem too. Here is my program:
from math import pi

from qiskit.circuit import QuantumCircuit
from qiskit import transpile

qc = QuantumCircuit(4)
qc.cx(3, 2)
qc.ry(pi, 3)
qc.ry(-pi, 3)
qc.cx(3, 2)
qc.rz(- pi / 4, 3)
qc.measure_all()

from qiskit_aer import AerSimulator
backend = AerSimulator()
transpiled_qc = transpile(qc, optimization_level=3, backend=backend)
print("transpiled_qc:")
print(transpiled_qc)

The error message displayed is:
thread '<unnamed>' panicked at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/petgraph-0.6.5/src/graph_impl/stable_graph/mod.rs:402:17:
StableGraph::add_edge: node index 23 is not a node in the graph
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Traceback (most recent call last):
  File "/home/1.py", line 16, in <module>
    transpiled_qc = transpile(qc, optimization_level=3, backend=backend)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/compiler/transpiler.py", line 419, in transpile
    out_circuits = pm.run(circuits, callback=callback, num_processes=num_processes)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/transpiler/passmanager.py", line 440, in run
    return super().run(circuits, output_name, callback, num_processes=num_processes)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/transpiler/passmanager.py", line 463, in wrapper
    return meth(*meth_args, **meth_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/transpiler/passmanager.py", line 225, in run
    return super().run(
           ^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/passmanager/passmanager.py", line 232, in run
    _run_workflow(program=program, pass_manager=self, callback=callback, **kwargs)
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/passmanager/passmanager.py", line 292, in _run_workflow
    passmanager_ir, final_state = flow_controller.execute(
                                  ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/passmanager/base_tasks.py", line 218, in execute
    passmanager_ir, state = next_task.execute(
                            ^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/passmanager/base_tasks.py", line 218, in execute
    passmanager_ir, state = next_task.execute(
                            ^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/transpiler/basepasses.py", line 195, in execute
    new_dag, state = super().execute(
                     ^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/passmanager/base_tasks.py", line 98, in execute
    ret = self.run(passmanager_ir)
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/site-packages/qiskit/transpiler/passes/utils/minimum_point.py", line 105, in run
    state.dag = deepcopy(dag)
                ^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/copy.py", line 162, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/copy.py", line 259, in _reconstruct
    state = deepcopy(state, memo)
            ^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/copy.py", line 136, in deepcopy
    y = copier(x, memo)
        ^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/copy.py", line 221, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
                             ^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/copy.py", line 162, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/anaconda3/envs/qiskit_latest/lib/python3.12/copy.py", line 261, in _reconstruct
    y.__setstate__(state)
pyo3_runtime.PanicException: StableGraph::add_edge: node index 23 is not a node in the graph

This error does not occur consistently. I have outputted the DAG sent to MinimumPoint, resulting in two versions:
DAG1:

DAG2:

The error is only thrown when the circuit is optimized into a unitary gate (DAG 2).

Thank you for the information. It's the same reason due to MinimumPoint transpiler pass. @Cryoris is working on it now.

Thank you for your quick response! I'm curious about why there are two versions of the DAG. I've reviewed all the passes used during the transpile process, but I haven't observed any differences between the two groups of passes that result in the different DAG versions.


Build packages to enable the use of bpftool

What would you like to be added:
Apparently the bpftool requires the following packages.
    linux-tools-5.10.0-garden-cloud-amd64
    linux-cloud-tools-5.10.0-garden-cloud-amd64
    linux-tools-cloud-amd64
    linux-cloud-tools-cloud-amd64

That must match the currently installed kernel. Can we provide these packages so the bpftool can be used. Can we furthermore consider installing these packages as well as the bpftool in Garden Linux if it is not too big.
Why is this needed:
bpftool is used for Linux and application observability which we are frequently asked to do in the Gardener context.

Hi,
We have a bpftool package available, this bpftool package is build from the linux:src in our kernel pipelines.
I opened merge request to include it also in the repo.gardenlinux.io (see: https://gitlab.com/gardenlinux/gardenlinux-package-build/-/merge_requests/89)
The dependencies for this bpftool package are:
 Depends: libc6 (>= 2.33), libcap2 (>= 1:2.10), libelf1 (>= 0.142), zlib1g (>= 1:<IP_ADDRESS>)

Please note the libc6 version: (>= 2.33).

plz check if we can build the maintenance kernel on the maintenance release.

plz check if we can build the maintenance kernel on the maintenance release.

@gehoern I assigned myself to this issue. Can you please declare what is meant with "maintenance kernel"? I'd suggest building with debug symbols?

Within the current implementation we have bpftool present for the related kernel images:

5.10
5.15

This is created by the Kernel build pipeline for each minor version. The created bpftool artifact gets copied to the Garden Linux repository afterwards.
Example 5.10.x
root@localhost:~# uname -a && bpftool prog show
Linux localhost 5.10.134-garden-cloud-amd64 #1 SMP Debian 5.10.134-0gardenlinux1 (2022-07-30) x86_64 GNU/Linux
12: cgroup_device  name sd_devices  tag 2c86c96f352db46b  gpl
	loaded_at 2022-08-01T10:20:42+0000  uid 0
	xlated 496B  jited 307B  memlock 4096B
13: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:42+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
14: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:42+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
20: cgroup_device  name sd_devices  tag 3a32ccd9e03ea87a  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 504B  jited 309B  memlock 4096B
21: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
22: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
23: cgroup_device  name sd_devices  tag 2c86c96f352db46b  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 496B  jited 307B  memlock 4096B
24: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
25: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
26: cgroup_device  name sd_devices  tag 3a32ccd9e03ea87a  gpl
	loaded_at 2022-08-01T10:20:43+0000  uid 0
	xlated 504B  jited 309B  memlock 4096B
27: cgroup_device  name sd_devices  tag 63878b01a3de7bae  gpl
	loaded_at 2022-08-01T10:20:44+0000  uid 0
	xlated 464B  jited 288B  memlock 4096B
28: cgroup_device  name sd_devices  tag ee0e253c78993a24  gpl
	loaded_at 2022-08-01T10:20:44+0000  uid 0
	xlated 416B  jited 255B  memlock 4096B
29: cgroup_device  name sd_devices  tag a99b9521092823a9  gpl
	loaded_at 2022-08-01T10:20:44+0000  uid 0
	xlated 696B  jited 417B  memlock 4096B
30: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:44+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
31: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:20:44+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B

Example 5.15.x
root@localhost:~# uname -a && bpftool prog show
Linux localhost 5.15.58-gardenlinux-cloud-amd64 #1 SMP Debian 5.15.58-0gardenlinux1 (2022-07-30) x86_64 GNU/Linux
9: cgroup_device  name sd_devices  tag e0428d4db95f3ed4  gpl
	loaded_at 2022-08-01T10:34:18+0000  uid 0
	xlated 496B  jited 307B  memlock 4096B
10: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:18+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
11: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:18+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
20: cgroup_device  name sd_devices  tag 3650d9673c54ce30  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 504B  jited 309B  memlock 4096B
21: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
22: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
23: cgroup_device  name sd_devices  tag e0428d4db95f3ed4  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 496B  jited 307B  memlock 4096B
24: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
25: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
26: cgroup_device  name sd_devices  tag 3650d9673c54ce30  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 504B  jited 309B  memlock 4096B
27: cgroup_device  name sd_devices  tag 1f97e470ec084ee5  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 464B  jited 288B  memlock 4096B
28: cgroup_device  name sd_devices  tag ee0e253c78993a24  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 416B  jited 255B  memlock 4096B
29: cgroup_device  name sd_devices  tag fe70cb98d44810f6  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 696B  jited 417B  memlock 4096B
30: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
31: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:20+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
32: cgroup_device  name sd_devices  tag ee0e253c78993a24  gpl
	loaded_at 2022-08-01T10:34:21+0000  uid 0
	xlated 416B  jited 255B  memlock 4096B
33: cgroup_skb  name sd_fw_egress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:21+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B
34: cgroup_skb  name sd_fw_ingress  tag 6deef7357e7b4530  gpl
	loaded_at 2022-08-01T10:34:21+0000  uid 0
	xlated 64B  jited 54B  memlock 4096B

ralking to @waldiTM we want to traceback the real need for an up to date bpftool. (the problem would also exist in all suites of debian ... that makes it strange) so we are trying to get in contact with the requester of this ticket

Hi @gyptazy,
to make this issue more clear, let me quickly some up what is meant by the maintenance Kernel and maintenance release and what the issue with bfptool is in this context.
As you already mentioned, bpftool is a binary created by the Kernel build. As of now, there are two Kernels which we are currently supporting. The 5.10 and 5.15 Kernel. The 5.10 Kernel is used by the last released Garden Linux version 576.x. This release is also known as the maintenance release. As a result, its Kernel is considered to be the maintenance Kernel.
The 5.15 Kernel on the other hand is used the newest Garden Linux version (e.g. today).
The issue with the bpftool is that both Kernel builds (leading to their own bpftool version) are build on the same Debian testing container. Thereby, both builds are using the newest version available as you can see here.
This is a problem because although we are building different Kernels for different releases which have their own state of packages and versions, we are using the same build container for both builds. As a result, the bpftool of the 5.10 Kernel (meant to be used in the 576.x release) requires the same packages like the bpftools of the 5.15 Kernel. It's no problem for the 5.15 Kernel because we are mirroring the same packages and version for the Garden Linux release in which this Kernel is going to be used. However, this is not the case for 5.10 Kernel, where the bpftools requires the libc6 (>=2.33) package due to the current libc6 version available in Debian testing but which is not part of the repository of the 576.x release (back then, an older version of libc6 has been used).
This issue can be resolved by making sure, that the 5.10 Kernel is not build on the newest Debian testing container image available but on the same version as 576.x has been released. This way we make sure that our built packages do not require unintended package updates which may not exist in old releases.
That's what is meant by @gehoern comment:

plz check if we can build the maintenance kernel on the maintenance release.


[cursor-info] Add a way to opt out of automatic request cancellation

Explanation: When performing cursor-info, if a new request comes in (for the same AST) before the first one is serviced, we will automatically cancel the first request.  This is not always what the client wants, so add an API to allow them to opt-out.  Also, don’t do automatic cancellation on name-info, which should never have participated.
Scope: Enhancement to cursor-info
Radar: rdar://problem/31905379
Risk: Low; should only make us fulfil requests that we used to cancel.  Except for name-info, it only affects clients that request the new behaviour.
Testing: Regression tests added.

--
The OncePerASTToken machinery lets us automatically cancel "stale"
requests after a new one comes in.  This avoid wasting time processing
requests that have been superceded, which is common for cursor-info, but
sometimes you really want to get results even later, so this commit adds
a way to opt out of the cancellation.
Incidentally, disable cancellation of name translation, which doesn't
really make sense and no one should be relying on that.
rdar://problem/31905379

@swift-ci please test


Remove deprecated exports

@workmanw does this look ok to you? It was slated for removal in 3.0 so I figured we can drop it


Avoid deprecated autocast APIs

What does this PR do?
Avoids deprecation warnings from https://github.com/pytorch/pytorch/pull/124359

Actually it's too soon to do this. This deprecation is only in the nightlies. Closing till another day


drivers: spi: esp32:  fix exception when in mode 3 & software-controlled CS

Fixes division by zero exception when SPI is configured to operate in mode3 whit CS controlled by software
Such exception occurred because data->dfs variable was listed as the denominator in a division inside the spi_esp32_transfer() function which is called from spi_esp32_configure() (before assigning a value to data->dfs) inside transceive() in the condition where mode 3 is chosen as the SPI operating mode and the chip-select is configured to be software-controlled.

Does it close any opened issue?

Does it close/fix any opened issue?

This bug was found while investigating issue #65635 but this PR is not the solution for the issue.


BitArray#==(BitArray) is broken

The equality check in BitArray of Crystal 0.31.1 is broken.
The following code returns true when it should be false:
require "bit_array"
a = BitArray.new(26, true)
b = BitArray.new(26, true)
b[23] = false
a == b

See: https://play.crystal-lang.org/#/r/84aq
This might be fixed by #8494, but I haven't tested it.

Yeah, looks like it is fixed by #8494, see: https://play.crystal-lang.org/#/r/84bh

#8494 is wrong, I'll send a different PR right now.

I won't, hehe, it's a bit more complex. What needs to be fixed is == and then []. See this: https://github.com/crystal-lang/crystal/pull/8494#discussion_r352384303


postCSS usage + autoprefixer plugin

Hi,
Thanks for the great plugin. I am wondering however, how I can configure to use postcss and the autoprefixer plugin.

@TroutZen you can take a look on https://github.com/css-modules/css-modules-require-hook#adding-custom-postcss-plugins we have similar configuration option for babel plugin.

@TroutZen it uses postcss under the hood. Just provide plugins you want to use based on documentation mentioted above.

@TroutZen also see configuration in https://github.com/michalkvasnicak/babel-plugin-css-modules-transform#installation so you can check how should prepend option look :)

Ah - this is very useful @michalkvasnicak - thanks for the help.

My working config for any other lost souls...
var preprocessCss = require('./sass-loader.js');

// ....

plugins: [
                            [
                                "css-modules-transform", {
                                    "prepend": [ require('autoprefixer') ],
                                    "preprocessCss": preprocessCss,
                                    "generateScopedName": "[name]__[local]__[hash:base64:5]",
                                    "extensions": [".scss"],
                                    // rootDir needed so hashes of css modules equiv on client/server
                                    "rootDir": path.resolve(__dirname, '../', './src')
                                }
                            ]
                        ]

@TroutZen greate! 👍  Thank you 😉

How are you doing requires in .babelrc? It's a JSON5 file.


ReferenceError: parseRequest is not defined

in function generateGraphqlOperation. parseRequest is not defined. I created SDK using endpoint url.

Thats my Bad. I mass replace /(\w)Request / with $1GenqlSelection  while upgrading from v2.* to  v3. generating sdk again fixed it.


Added YOLO demo with MobileNet backend

This change is

I signed it!

I made a small demo here: https://experiencor.github.io/yolo_demo/demo.html.

This is so wonderful, thank you for doing this. Your demo is so cool :)
A few comments, then I will merge this in.
High level stuff:

Make sure you remove bundle.js.
I will upload these weights to GCP for you, before I do, which version of mobilenet is this? There are multiple versions.

Reviewed 4 of 149 files at r1.
Review status: 4 of 149 files reviewed at latest revision, 17 unresolved discussions.

models/mobilenet/demo.html, line 36 at r1 (raw file):

    resultElement.innerText = 'Loading mobilenet...';

    // If dl isn't loaded, wait 1 second.

this is fixed, no need for this

models/mobilenet/demo.html, line 73 at r1 (raw file):

      context.textBaseline = 'top';
      context.fillStyle = box.getColor();

remove empty lnies

models/mobilenet/mobilenet.ts, line 62 at r1 (raw file):

   */
  async predict(input: Array3D): Promise<{
    netout: Array4D

No need to make an object, just return Promise
By the way, I thought mobilenet also makes a prediction over the 1000 classes, or is it only doing bounding boxes?

models/mobilenet/mobilenet.ts, line 100 at r1 (raw file):

    }

  private _conv_block(inputs: Array3D, strides: [number, number]) {

_conv_block is python style guide, can you call this convBlock
Can you also type the return? Array3D most likely
This comment refers to all the other functions in this file too.

models/mobilenet/mobilenet.ts, line 102 at r1 (raw file):

  private _conv_block(inputs: Array3D, strides: [number, number]) {

    const x1 = this.math.conv2d(inputs, // input

only put comments where it's not obvious (bias)

models/mobilenet/mobilenet.ts, line 109 at r1 (raw file):

    const x2 = this.math.batchNormalization3D(x1,
                                              this.variables['conv1_bn/moving_mean'] as Array1D, // mean

no need for comments next to variables, it's obvious what it's doing - same in the rest of the file

models/mobilenet/mobilenet.ts, line 152 at r1 (raw file):

  }

  interpret_netout(netout: Array4D){

type the return, it should be a promise

models/mobilenet/mobilenet.ts, line 155 at r1 (raw file):

    // interpret the output by the network
    var [GRID_H, GRID_W, BOX, CLASS] = netout.shape;
    const values = netout.getValues() as Float32Array;

High level comment:
You're operating on the Float32Array, which will happen on the CPU. Let's try to keep this on the GPU. I left some comments below about how to do that.

models/mobilenet/mobilenet.ts, line 156 at r1 (raw file):

    var [GRID_H, GRID_W, BOX, CLASS] = netout.shape;
    const values = netout.getValues() as Float32Array;
    const boxes: BoundingBox[] = new Array<BoundingBox>();

const boxes: BoundingBox[] = [];

models/mobilenet/mobilenet.ts, line 164 at r1 (raw file):

        for (var box = 0; box < BOX; box++) {
          const l_bound = netout.locToIndex([row, col, box, 0]);

remove blank line

models/mobilenet/mobilenet.ts, line 169 at r1 (raw file):

          // get and adjust class likelihoods
          var classes = values.slice(l_bound+5, l_bound+5+CLASS);

values is the Float32Array, we can use math.slice1D|2D|3D|4D to get the NDArray from netout

models/mobilenet/mobilenet.ts, line 170 at r1 (raw file):

          // get and adjust class likelihoods
          var classes = values.slice(l_bound+5, l_bound+5+CLASS);
          classes = this.sofmax(classes).map((x) => (x * confidence)).map((x) => x > this.THRESHOLD ? x : 0);

once you have classes as an NDArray, you can call our math.softmax.
If you want to clip values over THRESHOLD, what you can do is subtract THRESHOLD (math.subtract with a broadcast scalar) and then call math.relu

models/mobilenet/mobilenet.ts, line 172 at r1 (raw file):

          classes = this.sofmax(classes).map((x) => (x * confidence)).map((x) => x > this.THRESHOLD ? x : 0);

          if (classes.reduce(( a, b ) => a + b, 0) > 0) {

here is where you can now download to the CPU. Make sure you call  "await softmaxOutput.data()" before doing this work.

models/mobilenet/mobilenet.ts, line 194 at r1 (raw file):

      var indices = new Array(all_probs.length);

      for (var i = 0; i < all_probs.length; ++i) indices[i] = i;

curly braces, linter will fail here

models/mobilenet/mobilenet.ts, line 195 at r1 (raw file):

      for (var i = 0; i < all_probs.length; ++i) indices[i] = i;
      indices.sort((a,b) => {return all_probs[a] > all_probs[b] ? 1 : 0});

indices.sort((a,b) => all_probs[a] > all_probs[b] ? 1 : 0);

models/mobilenet/mobilenet.ts, line 200 at r1 (raw file):

        const index_i = indices[i];

        if (boxes[index_i].probs[cls] == 0) {

===

models/mobilenet/mobilenet.ts, line 201 at r1 (raw file):

        if (boxes[index_i].probs[cls] == 0) {
          continue

semicolon

Comments from Reviewable

Hi @nsthorat Thank you for your review. I have updated the code (https://github.com/experiencor/deeplearnjs).
which version of mobilenet is this?
Acorrding the MobileNet paper (https://arxiv.org/pdf/1704.04861.pdf), this version is 1.0-MobiletNet-416.
By the way, I thought mobilenet also makes a prediction over the 1000 classes, or is it only doing bounding boxes?
Yes. MobileNet can be trained to either do prediction over 1000 classess or do bounding box detection. I'm more familiar with detection, hence I give it try here. It can be easily repurposed for class prediction by changing the last layer of the current implementation.
await softmaxOutput.data()
Do you think that my new code need await softmaxOutput.data() (https://github.com/experiencor/deeplearnjs/blob/master/models/mobilenet/mobilenet.ts)? I want to get the raw Array4D.

Thanks for the notes. I'm looking at this page:
https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md
And wondering which version of the checkpoint you dumped (accuracy / weights tradeoff). We should document that (and even rename the model to be clear).
Regarding the 1000 classes - is this part of the same model? Or is it totally separate? If it's separate, maybe we should call this MobileNetSegmentation with a version / checkpoint info as well.
Which point do you mean for await softmax.data()? This will resolve to the CPU, we probably want to return the NDArray itself, and let interpret netout do the BoundingBoxes. If we can return another NDArray for global class prediction as well, that would be ideal.
Cheers!

Hi @nsthorat,

I didn't dump the weight from (https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md), but from the model built using (https://github.com/fchollet/keras/blob/master/keras/applications/mobilenet.py). I trained the model myself. I can say that my model is equivalent to MobileNet_v1_1.0_416.

The implemented model only do Object Detection, no class prediction at all. Maybe we can call it MobileNet_v1_1.0_416_ObjectDetection.

Got it. I don't download softmaxOutput to CPU in the new code hence it's not needed.

I see - what do you think of dumping it from the pretrained checkpoints instead of your own? Not that I don't trust you, but it's good to have the "official" checkpoint as a reference so we can match activations, etc.

Hi @nsthorat! It's not possible to use the official weight of MobileNet for YOLO object detection as the official weight is trained for the classification task. The architecture is identical but the weights are completely different. Is it still able to merge to deeplearn.js? I find that object detection is also very interesting application besides classification.
Anyway, it's straightforward to use Google's official weight for the classification task using my code. I will make another demo for this classification task. It should be identical to the SqueezeNet that, except that the backend is MobileNet instead of SqueezeNet.

@nsthorat I have add another classification demo using the official weights released by Google (@https://github.com/experiencor/deeplearnjs/tree/master/models).
mobilenet_detection corresponds to MobileNet_v1.0_416_YOLO_Detection
mobilenet_classification corresponds to MobileNet_v1_1.0_224 (in https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md)
Cheers

Thanks for the clarification!
Okay, I moved the weights for YOLO onto GCP:
http://storage.googleapis.com/learnjs-data/checkpoint_zoo/yolo_mobilenet_v1_1.0_416/manifest.json
I started moving the regular mobilenet weights over, but I realized you also had dumped a bunch of training parameters (RMSProp weights, exponential moving average, etc).
Once you remove those, I will upload to GCP, then I will be able to review the PR (reviewable is freezing because 600 files :P )

@nsthorat I have changed the Detection code to use the weights hosted on Google. I have also removed the redundant weights of Classification and changed the manifest.json file accordingly.

Alright, mobilenet is up!
http://storage.googleapis.com/learnjs-data/checkpoint_zoo/mobilenet_v1_1.0_224/manifest.json
Reviewing your PR now, in the meantime please remove the weights :)

@nsthorat Local weights were removed.

High-level comments:

Rename the directories to match what we did on GCP (the folder names should match). MobileNet refers to classification, yolo_mobilenet is about detection.
You have lots of linter errors (which will make the build fail if we commit this). Please run "yarn lint" and fix the offending issues.

Almost there! Mostly style stuff (if this is checked in the build will break because of style problems)

Review status: 0 of 22 files reviewed at latest revision, 14 unresolved discussions, some commit checks failed.

models/mobilenet_classification/demo.html, line 16 at r5 (raw file):

    // If dl isn't loaded, wait 1 second.
    if (dl == null) {

you dont need this check anymore

models/mobilenet_classification/imagenet_classes.ts, line 1 at r5 (raw file):

/**

can you move imagenet_classes out to a common place since we use this for SqueezeNet too?

models/mobilenet_classification/mobilenet_classification.ts, line 27 at r5 (raw file):

  // yolo variables
  private HALF_TWO_FIVE_FIVE  = Scalar.new(255.0/2);

PREPROCESS_DIVISOR

models/mobilenet_classification/mobilenet_classification.ts, line 39 at r5 (raw file):

        (this.math as NDArrayMathGPU).getTextureManager());

        //this.math.enableDebugMode();

remove this comment

models/mobilenet_detection/index.ts, line 18 at r5 (raw file):

 */

export {MobileNet} from './mobilenet_detection';

this should be called YoloMobileNetDetection (And directory should be renamed)

models/mobilenet_detection/mobilenet_detection.ts, line 42 at r5 (raw file):

        (this.math as NDArrayMathGPU).getTextureManager());

        //this.math.enableDebugMode();

remove this line

models/mobilenet_detection/mobilenet_detection.ts, line 102 at r5 (raw file):

    const x1 = this.math.conv2d(inputs,
                                this.variables['conv1/kernel'] as Array4D,
                                null,

I wanted you to keep the comment where it's non-obvious (for places where you have a null)

models/mobilenet_detection/mobilenet_utils.ts, line 64 at r5 (raw file):

  }

  private overlap(interval_a: [number, number], interval_b: [number, number]): number {

camel cas in typescript: intervalA (and everywhere else in this file you do that)

models/squeezenet/bundle.js, line 0 at r5 (raw file):
How come this bundle is being checked in? This should be .gitignored

models/squeezenet/squeezenet.ts, line 159 at r5 (raw file):

    const topClassesToProbability: {[className: string]: number} = {};
    for (let i = 0; i < topkIndices.length; i++) {
      topClassesToProbability[IMAGENET_CLASSES[topkIndices[i]-1]] = topkValues[i];

why are you subtracting one here?

Comments from Reviewable

can you move imagenet_classes out to a common place since we use this for SqueezeNet too?

@nsthorat The official MobileNet additionally has the Background class, so its imagenet_classes.ts has 1001 classes, instead of 1000 classes in the case of SqueezeNet. How would you like to handle this case?

The code now passed all tests in yarn test and yarn lint. It does not pass yarn test-travis as I don't have a MAC to test "karma start --browsers='bs_firefox_mac,bs_chrome_mac' --singleRun".

Woohoo! Almost done. Just lint errors now (please run yarn lint from each models directory)
I will merge after these changes :)

Review status: 0 of 21 files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

models/mobilenet/mobilenet.ts, line 165 at r6 (raw file):

    }
    return topClassesToProbability;
  }

yarn lint should be run from this directory as well

models/mobilenet/tsconfig.json, line 2 at r6 (raw file):

{
    "compilerOptions": {

this file needs to parallel the other models/tsconfig.json files (extends the top level tsconfig)

models/yolo_mobilenet/package.json, line 27 at r6 (raw file):

    "prep": "yarn && mkdirp dist",
    "build": "browserify --standalone yolo_mobilenet yolo_mobilenet.ts -p [tsify] -o dist/bundle.js",
    "lint": "tslint -p . -t verbose",

make sure you run yarn lint from this dir (you still have lint errors)

models/yolo_mobilenet/tsconfig.json, line 2 at r6 (raw file):

{
    "compilerOptions": {

this needs to extend the base tsconfig (see squeezenet)

models/squeezenet/bundle.js, line  at r5 (raw file):
Previously, nsthorat (Nikhil Thorat) wrote…
How come this bundle is being checked in? This should be .gitignored

This is still here, shouldn't be checked in.

Comments from Reviewable

If you look at the bottom of this PR:

You will see "the Travis CI build failed".
Please make sure this passes, you can click "details" to see the failure.

Here is the current failure:
https://travis-ci.org/PAIR-code/deeplearnjs/builds/310172581?utm_source=github_status&utm_medium=notification

Review status: 0 of 21 files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

models/yolo_mobilenet/package.json, line 2 at r7 (raw file):

{
  "name": "deeplearn-yolo-mobilet",

mobilenet

Comments from Reviewable

Let me know once the build succeeds! :)

@nsthorat I passed all tests the first time :).

Review status: 0 of 22 files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable

Thanks for bearing with me, congrats!

unpkg.com/deeplearn-mobilenet not working yet
<script src="https://unpkg.com/deeplearn-mobilenet"></script>
Does not seem to be working, also not on npm. Not sure if yolo has it's own src or uses the same one.

It's not ready yet, I have a little cleanup to do first!


Winter Updates

[x]	remove binder instructions from the README.
[x] remove the GalSim jupyter notebook and the reference to it in the README.
[x] make sure the webbPSF notebook runs on the latest webbpsf version.
[x] Docker:

remove the docker instruction OR
[x] change the docker file to point to the newest pandeia

[x] update the pandeia install instructions to point to the newest release, and the newest data package.

(I updated the data package in the repo in PR #3)

Completed
CC: @k-gilbert


chilton

@bonny2016 First stage of verification passed, official domain is chilton.school.nz as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@bonny2016 Thank you for your patience while waiting for a review and processing your request. Pull request merged.


finish processes section

@BrooklinJazz
The instructions say to notify you. Feel free to ping me on Discord or provide feedback here.

Hey Stephen! I'm on mobile but it looks like you made the base branch the academy, when you want to make it your fork.
Those instructions will be for the true cohort, so I won't always have time to provide feedback with the beta but feel free to still ping me and I will do my best!


Generate and manually add ATTRIBUTION file in core

Problem
Need to create a list of third-party packages used in our repository (include all [main/dev/peer] dependencies).
Solution
Use the following package to generate.
License Checker - https://www.npmjs.com/package/license-checker

Must have a npm script in package.json to generate attribution(s).

The content of the each item should looks like as follows:
This project uses the following open source software (OSS) components:
[Package Name]: [Copyright holder(s)] ([License]) ([Package Homepage URL])

Replace [Package Name] with the actual name of the package.
Replace [Copyright holder(s)] with the name(s) of the copyright holder(s), as listed in the package's license.
Replace [License] with the name of the license under which the package is released.
Replace [Package Homepage URL] with a link to the package's website or the specific license text.

Added scripts to generate attribution. Closing as done.

@irkfaisal
https://github.com/wrappid/core/blob/development/scripts/attributions.gen.js
Above script needs to be modified.
Below header will be present in top of attribution file.
ATTRIBUTIONS
This file lists the third-party libraries, frameworks, and other components used in the [REPOSITORY-NAME] repository,
along with their respective licenses.
It is important to comply with the licensing terms of these components when using the code

Closing as done.


Fix multipleOf IEEE-754 floats issue

Bump jsonschema dependency version to include fix to this issue.
Fixed by https://github.com/tdegrunt/jsonschema/pull/228
No test changes here, as the json schema validation tests are in jsonschema.
Reasons for making this change
multipleOf and divisibleBy validation for number fields did not work where the divisor was certain floating point values, due to limitations of binary representation of decimal values in IEEE-754 floats, e.g. 2.4 was not a multiple of 0.1.
relates to #342
Checklist

[x] I'm adding or updating code

[ ] I've added and/or updated tests
[ ] I've updated docs if needed
[x] I've run npm run cs-format on my branch to conform my code to prettier coding style

:+1: thank you

Released in v0.50.0.


Automated cherry pick of #1946: Support specifying a sort order for node addresses

Cherry pick of #1946 on release-1.25.
#1946: Support specifying a sort order for node addresses
For details on the cherry pick process, see the cherry pick requests page.

technically it's not a bug, instead ,it's a new feature
I am not against this but I Think it's doesn't consistent to what the previous agreement is

@jichenjc talked to @zetaab in the slack channel about doing the backports. i leave the decision up to you, doing the PRs (#2030, #2031 as well) was not that time consuming, so no hard feelings from my side if they get rejected.

/lgtm
as mentioned, I am not against it , just want to align on this
@zetaab your thoughts?

@jichenjc like you said we have had policy that we only backport bug fixes. However, this PR has quite good test coverage AND new part of the code is not executed at all if AddressSortOrder is not defined (like currently its not in old installations). As I see the risk for this breaking anything is really small. That is why I would approve this, I know - its new feature, but in order to get 1.26 kubernetes it takes time.

/approve
ok, let's do this


2.25.0 Most feeds vanished from feed list

After updating to 2.25.0 most feeds were missing in the feeds list. Returning to the previous version made them appear again.
Additionally Smart-RSS was displayed in a very difficult to read dark mode.

2.25 contains issue causing some settings to be applied even when disabled, fix is coming soon


Provide/Inject properties cannot be found when typescript is used

Version
3.2.26
Reproduction link
github.com
Steps to reproduce
1.build
2.compile
What is expected?
compile success
What is actually happening?
compile error

A child component use a property provided by the parent component will fail compilation with 'this', However 'inject' API not

Duplicate of https://github.com/vuejs/vue-next/issues/3031


feat!: retryable http client

fixes #147
If implemented, this will provide a default http client with retry.
The retry function is an exponential back off 0.25s * 2^n ± 10% and max 5 attempts.
The client is the default client of auth.Client
Co-authored-by: Shiwei Zhang<EMAIL_ADDRESS>Signed-off-by: Soule BA<EMAIL_ADDRESS>cc @shizhMSFT

The examples tests are failing due to some TLS misconfiguration when I set the retry.DefaultClient as client for auth.Client. Can you tell me where to look?

The examples tests are failing due to some TLS misconfiguration when I set the retry.DefaultClient as client for auth.Client. Can you tell me where to look?

@souleb The root cause of the error is that retry.Client relies on the default http transport. Therefore, we need to override the default http transport instead of the client for the mocks.
Please check the following changes:
diff --git a/example_test.go b/example_test.go
index c1e4c20..82fa126 100644
--- a/example_test.go
+++ b/example_test.go
@@ -182,7 +182,7 @@ func TestMain(m *testing.M) {
                panic(err)
        }
        remoteHost = u.Host
-       http.DefaultClient = httpsServer.Client()
+       http.DefaultTransport = httpsServer.Client().Transport

        os.Exit(m.Run())
 }
diff --git a/registry/example_test.go b/registry/example_test.go
index 70f102c..2463667 100644
--- a/registry/example_test.go
+++ b/registry/example_test.go
@@ -65,7 +65,7 @@ func TestMain(m *testing.M) {
                panic(err)
        }
        host = u.Host
-       http.DefaultClient = ts.Client()
+       http.DefaultTransport = ts.Client().Transport

        os.Exit(m.Run())
 }
diff --git a/registry/remote/example_test.go b/registry/remote/example_test.go
index bbd292e..370486d 100644
--- a/registry/remote/example_test.go
+++ b/registry/remote/example_test.go
@@ -214,7 +214,7 @@ func TestMain(m *testing.M) {
                panic(err)
        }
        host = u.Host
-       http.DefaultClient = ts.Client()
+       http.DefaultTransport = ts.Client().Transport

        os.Exit(m.Run())
 }

Codecov Report

Merging #398 (f09da3b) into main (76382aa) will increase coverage by 0.05%.
The diff coverage is 72.63%.

@@            Coverage Diff             @@
##             main     #398      +/-   ##
==========================================
+ Coverage   72.31%   72.36%   +0.05%
==========================================
  Files          46       48       +2
  Lines        4349     4444      +95
==========================================
+ Hits         3145     3216      +71
- Misses        903      920      +17
- Partials      301      308       +7

Impacted Files
Coverage Δ

registry/remote/auth/client.go
72.46% <ø> (+0.40%)
:arrow_up:

registry/remote/retry/client.go
66.66% <66.66%> (ø)

registry/remote/retry/policy.go
79.54% <79.54%> (ø)

internal/syncutil/merge.go
71.42% <0.00%> (+1.78%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


[main] Build Multi-Arch Images 📦

What this PR does / why we need it:
This PR lets the CI pipeline build multi-arch images including linux/amd64 and linux/arm64 images.
Release note:

Published docker images for Etcd-Custom-Image are now multi-arch ready. They support `linux/amd64` and `linux/arm64`.

@timuthy Does etcd already support multi-arch images from v3.5 onwards?

@timuthy Does etcd already support multi-arch images from v3.5 onwards?

Yes, it does 🎉
See the v3.5.0 manifest for example.


🐛 Fix 403 errors when the url points to a directory without an index.html

Currently if your static dir looks like
/index.html
/assets/asset.jpg

and you request /assets, nginx tries to serve the directory and 403s. I can't think of a use case where a frontend nginx would serve a directory - can we just remove this?
See https://stackoverflow.com/a/38046124

You're right, thank you! :coffee: Sorry for the long delay with this! :nerd_face:


Badges undefined

Looks like the badges show up as undefined now. Not sure if your endpoint api expired or the recent download changes broke something.

Been meaning to fix it, I just need to switch the branch to api5 and redeploy the function.


pull request for e2e test at 11/09/2016 11:15:08

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

Details

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


add --pycharm-no-output

Codecov Report
Base: 94.52% // Head: 94.54% // Increases project coverage by +0.02% :tada:

Coverage data is based on head (5f2661d) compared to base (e75a2c9).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master      #38      +/-   ##
==========================================
+ Coverage   94.52%   94.54%   +0.02%
==========================================
  Files          87       87
  Lines        2430     2439       +9
  Branches      378      380       +2
==========================================
+ Hits         2297     2306       +9
  Misses        116      116
  Partials       17       17

Impacted Files
Coverage Δ

...edro/plugins/director/pycharm/_pycharm_reporter.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


uid/gid (65534:65534) issue after using security.privileged

After using security.privileged: "true" and removing it, the container has issue, all files are owned to nobody:nogroup:
root@dnxovh-hy002 (node2):~# lxc list
+-------------+---------+-----------------------+------+------------+-----------+
|    NAME     |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+-------------+---------+-----------------------+------+------------+-----------+
| testnico001 | RUNNING | <IP_ADDRESS> (eth0) |      | PERSISTENT | 0         |
+-------------+---------+-----------------------+------+------------+-----------+
root@dnxovh-hy002 (node2):~# lxc exec testnico001 bash
bash: /root/.bashrc: Permission denied
root@testnico001:/# ls -la
total 35
drwxr-xr-x  22 nobody nogroup  22 Oct 20 13:07 .
drwxr-xr-x  22 nobody nogroup  22 Oct 20 13:07 ..
drwxr-xr-x   2 nobody nogroup 173 Oct 13 16:52 bin
drwxr-xr-x   3 nobody nogroup   3 Oct 13 16:53 boot
drwxr-xr-x   9 root   root    500 Oct 20 16:49 dev
drwxr-xr-x  90 nobody nogroup 179 Oct 20 12:58 etc
drwxr-xr-x   3 nobody nogroup   3 Oct 20 12:58 home
drwxr-xr-x  20 nobody nogroup  23 Oct 13 16:53 lib
drwxr-xr-x   2 nobody nogroup   3 Oct 13 16:49 lib64
drwxr-xr-x   2 nobody nogroup   2 Oct 13 16:49 media
drwxr-xr-x   2 nobody nogroup   2 Oct 13 16:49 mnt
drwxr-xr-x   2 nobody nogroup   2 Oct 13 16:49 opt
dr-xr-xr-x 662 nobody nogroup   0 Oct 20 16:49 proc
drwx------   4 nobody nogroup   7 Oct 20 16:18 root
drwxr-xr-x  18 root   root    660 Oct 20 16:49 run
drwxr-xr-x   2 nobody nogroup 226 Oct 13 16:52 sbin
drwxr-xr-x   2 nobody nogroup   2 Sep 21 17:12 snap
drwxr-xr-x   2 nobody nogroup   2 Oct 13 16:49 srv
dr-xr-xr-x  13 nobody nogroup   0 Oct 20 16:26 sys
drwxrwxrwt   7 root   root      7 Oct 20 16:49 tmp
drwxr-xr-x  10 nobody nogroup  10 Oct 13 16:49 usr
drwxr-xr-x  13 nobody nogroup  15 Oct 13 16:52 var
root@testnico001:/#
INFO:
root@dnxovh-hy002 (node2):~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
root@dnxovh-hy002 (node2):~# lxc info
apiextensions:

storage_zfs_remove_snapshots
container_host_shutdown_timeout
container_syscall_filtering
auth_pki
container_last_used_at
etag
patch
usb_devices
https_allowed_credentials
image_compression_algorithm
directory_manipulation
container_cpu_time
storage_zfs_use_refquota
storage_lvm_mount_options
network
profile_usedby
container_push
apistatus: stable
apiversion: "1.0"
auth: trusted
environment:
addresses:

<IP_ADDRESS>:8443
architectures:
x86_64
i686
certificate: |
[...]
certificatefingerprint: e3de5a63659185ba9c320bfd9778ec5515649dd5a023c1424b2745b2ffe48d0b
driver: lxc
driverversion: 2.0.5
kernel: Linux
kernelarchitecture: x86_64
kernelversion: 4.4.0-43-generic
server: lxd
serverpid: 25247
serverversion: 2.4.1
storage: zfs
storageversion: "5"
config:
core.https_address: <IP_ADDRESS>:8443
core.trust_password: true
storage.zfs_pool_name: zdata/lxd
public: false

To reproduce:

create container with default profile
lxc config set testnico001  security.privileged true
all good
lxc config edit testnico001 and remove the security.privileged line
log to container, all are owned to 65534:65534

Any help are welcome.
Thanks

You'll have to be a bit more specific because I can't reproduce this:
stgraber@castiana:~$ lxc launch ubuntu:16.04 test
Creating test
Starting test
stgraber@castiana:~$ lxc config show test
name: test
profiles:
- default
config:
  volatile.base_image: 6f25adef061c3f2186c6910bff8cacd0c63e1493e3f8b616e52eb84076890bd1
  volatile.eth0.hwaddr: 00:16:3e:87:78:be
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    type: disk
ephemeral: false
stgraber@castiana:~$ lxc exec test -- ls -lh /
total 56K
drwxr-xr-x    2 root   root    173 Oct 13 16:52 bin
drwxr-xr-x    3 root   root      3 Oct 13 16:53 boot
drwxr-xr-x    9 root   root    500 Oct 20 17:07 dev
drwxr-xr-x   90 root   root    175 Oct 20 17:07 etc
drwxr-xr-x    2 root   root      2 Apr 12  2016 home
drwxr-xr-x   20 root   root     23 Oct 13 16:53 lib
drwxr-xr-x    2 root   root      3 Oct 13 16:49 lib64
drwxr-xr-x    2 root   root      2 Oct 13 16:49 media
drwxr-xr-x    2 root   root      2 Oct 13 16:49 mnt
drwxr-xr-x    2 root   root      2 Oct 13 16:49 opt
dr-xr-xr-x 1299 nobody nogroup   0 Oct 20 17:07 proc
drwx------    2 root   root      4 Oct 13 16:52 root
drwxr-xr-x   18 root   root    660 Oct 20 17:07 run
drwxr-xr-x    2 root   root    226 Oct 13 16:52 sbin
drwxr-xr-x    2 root   root      2 Sep 21 17:12 snap
drwxr-xr-x    2 root   root      2 Oct 13 16:49 srv
dr-xr-xr-x   13 nobody nogroup   0 Oct 20 17:05 sys
drwxrwxrwt    7 root   root      7 Oct 20 17:07 tmp
drwxr-xr-x   10 root   root     10 Oct 13 16:49 usr
drwxr-xr-x   13 root   root     15 Oct 13 16:52 var
stgraber@castiana:~$

stgraber@castiana:~$ lxc config set test security.privileged true
stgraber@castiana:~$ lxc config show test
name: test
profiles:
- default
config:
  security.privileged: "true"
  volatile.base_image: 6f25adef061c3f2186c6910bff8cacd0c63e1493e3f8b616e52eb84076890bd1
  volatile.eth0.hwaddr: 00:16:3e:87:78:be
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    type: disk
ephemeral: false
stgraber@castiana:~$ lxc exec test -- ls -lh /
total 56K
drwxr-xr-x    2 root   root    173 Oct 13 16:52 bin
drwxr-xr-x    3 root   root      3 Oct 13 16:53 boot
drwxr-xr-x    9 root   root    500 Oct 20 17:07 dev
drwxr-xr-x   90 root   root    179 Oct 20 17:07 etc
drwxr-xr-x    3 root   root      3 Oct 20 17:07 home
drwxr-xr-x   20 root   root     23 Oct 13 16:53 lib
drwxr-xr-x    2 root   root      3 Oct 13 16:49 lib64
drwxr-xr-x    2 root   root      2 Oct 13 16:49 media
drwxr-xr-x    2 root   root      2 Oct 13 16:49 mnt
drwxr-xr-x    2 root   root      2 Oct 13 16:49 opt
dr-xr-xr-x 1294 nobody nogroup   0 Oct 20 17:07 proc
drwx------    3 root   root      5 Oct 20 17:07 root
drwxr-xr-x   18 root   root    680 Oct 20 17:07 run
drwxr-xr-x    2 root   root    226 Oct 13 16:52 sbin
drwxr-xr-x    2 root   root      2 Sep 21 17:12 snap
drwxr-xr-x    2 root   root      2 Oct 13 16:49 srv
dr-xr-xr-x   13 nobody nogroup   0 Oct 20 17:05 sys
drwxrwxrwt    7 root   root      7 Oct 20 17:07 tmp
drwxr-xr-x   10 root   root     10 Oct 13 16:49 usr
drwxr-xr-x   13 root   root     15 Oct 13 16:52 var
stgraber@castiana:~$

stgraber@castiana:~$ lxc config edit test
stgraber@castiana:~$ lxc config show test
name: test
profiles:
- default
config:
  volatile.base_image: 6f25adef061c3f2186c6910bff8cacd0c63e1493e3f8b616e52eb84076890bd1
  volatile.eth0.hwaddr: 00:16:3e:87:78:be
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":100000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":100000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    type: disk
ephemeral: false
stgraber@castiana:~$ lxc exec test -- ls -lh /
total 56K
drwxr-xr-x    2 root   root    173 Oct 13 16:52 bin
drwxr-xr-x    3 root   root      3 Oct 13 16:53 boot
drwxr-xr-x    9 root   root    500 Oct 20 17:07 dev
drwxr-xr-x   90 root   root    179 Oct 20 17:07 etc
drwxr-xr-x    3 root   root      3 Oct 20 17:07 home
drwxr-xr-x   20 root   root     23 Oct 13 16:53 lib
drwxr-xr-x    2 root   root      3 Oct 13 16:49 lib64
drwxr-xr-x    2 root   root      2 Oct 13 16:49 media
drwxr-xr-x    2 root   root      2 Oct 13 16:49 mnt
drwxr-xr-x    2 root   root      2 Oct 13 16:49 opt
dr-xr-xr-x 1293 nobody nogroup   0 Oct 20 17:07 proc
drwx------    3 root   root      5 Oct 20 17:07 root
drwxr-xr-x   18 root   root    680 Oct 20 17:07 run
drwxr-xr-x    2 root   root    226 Oct 13 16:52 sbin
drwxr-xr-x    2 root   root      2 Sep 21 17:12 snap
drwxr-xr-x    2 root   root      2 Oct 13 16:49 srv
dr-xr-xr-x   13 nobody nogroup   0 Oct 20 17:05 sys
drwxrwxrwt    7 root   root      7 Oct 20 17:07 tmp
drwxr-xr-x   10 root   root     10 Oct 13 16:49 usr
drwxr-xr-x   13 root   root     15 Oct 13 16:52 var
stgraber@castiana:~$

Strange i 'm trying to reproduce but i can't for now.
in fact, i had this issue during live migration test. it was always failing.
but when i began to add "security.privileged true", it was beginning to work.
But right now, it doesn't anymore; i m totally puzzled.
root@dnxovh-hy001 (node1):~# lxc move test node2:
error: Error transferring container data: migration restore failed
(00.014395) Warn  (cr-restore.c:1159): Set CLONE_PARENT | CLONE_NEWPID but it might cause restore problem,because not all kernels support such clone flags combinations!
(00.030318)      1: Error (image.c:318): Unable to open netns-9.img: Permission denied
(00.046326) Error (cr-restore.c:1352): 25401 killed by signal 9
(00.086636) Error (cr-restore.c:2182): Restoring FAILED.
root@dnxovh-hy001 (node1):~# lxc config show test
name: test
profiles:

default
config:
security.privileged: "true"
volatile.base_image: 6f25adef061c3f2186c6910bff8cacd0c63e1493e3f8b616e52eb84076890bd1
volatile.eth0.hwaddr: 00:16:3e:60:d9:0e
volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":65536}]'
devices:
root:
path: /
type: disk
ephemeral: false

root@dnxovh-hy001 (node1):~# lxc profile show default
name: default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: bridged
parent: br_lan10
type: nic
usedby:

/1.0/containers/inxovh-db001
/1.0/containers/inxovh-db002
/1.0/containers/inxovh-db003
/1.0/containers/inxovh-ws001
/1.0/containers/inxovh-xmpp001
/1.0/containers/test

root@dnxovh-hy002 (node2):~# lxc profile show default
name: default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: bridged
parent: br_lan10
type: nic
usedby:

/1.0/containers/testnico001

@tych0

Have you rebooted the container to make sure it's actually privileged? It looks to me like you're checkpointing a container that's still unprivileged while LXD thinks it is privileged, which won't work.

I didn't. i did these modification while the container was RUNNING.
So you mean it was a bad idea.
I just stoped it and added back the privileged parameter and now it looks good:
root@dnxovh-hy001 (node1):/srv/local/images# lxc exec testnico001 bash
root@testnico001:~# ls -la
total 9
drwx------  4 root root    7 Oct 20 16:18 .
drwxr-xr-x 22 root root   22 Oct 20 21:58 ..
-rw-------  1 root root   16 Oct 20 20:38 .bash_history
-rw-r--r--  1 root root 3106 Oct 22  2015 .bashrc
drwxr-x---  3 root root    3 Oct 20 16:18 .config
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwx------  2 root root    3 Oct 20 12:58 .ssh

@tych0 could it be that criu somehow causes lxd to restart the container on failure? that may have it start with either the wrong uid/gid config or remap the filesystem without the container being unprivileged.

https://gist.github.com/nlienard/446aa56679bbc84bd1826b72de407270

@stgraber not likely. the problem is just that the images are owned by root with 600, and they say to create a userns, so when criu spawns the userns it can't open the images. Basically, this just means they didn't get uid shifted but still said to create a user namespace, which means 1. we forgot a shift somewhere, or 2. the security.privileged flag got changed without a reboot.

yes i'm pretty sure that I didn't reboot when i set security.privileged flag.

@tych0 In the steps he gave, he effectively mentioned 2). I guess it's CRIU believing security.privileged rather than checking the volatile entry as we do everywhere else (like in file push/pull).

We don't pass CRIU the contents of security.privileged, it just inspects the task and figures it out on its own. The problem is that the container and security.privileged can be in an inconsistent state.

@tych0 so is the some extra data we should be sending during migration? Basically sending the "current" privileged state on top of the "configured" privileged state. Seeing how the two are effectively different as privileged state changes are only done on full container restart (so migration doesn't).

Yeah, probably so. I'll have a look.

i guess it can be closed


Analyze impact of adding transportation cost burden and transportation access burden data to methodology

The transportation cost burden data is from HUD Location Affordability Index. The cost for transit and non-transit users was combined with monetized commute time)
The transportation access burden is an indicator that DOT created that uses the following data indicators:
No personal vehicle from CDC Social Vulnerability Index
Average commute time to work from Census ACS
Walkability from EPA Smart Location Map
I'm waiting to hear back from DOT on exactly how they calculate this.
DOT recommendation is to revise the "Clean transit" formula to be:
IF
at or above the 90th percentile for diesel particulate matter exposure OR
at or above the 90th percentile or traffic proximity and volume OR
at or above the 50th percentile for transportation cost burden OR
at or above the 50th percentile for transportation access burden

@emma-nechamkin I think we'd like to only add transportation access burden, but I didn't want to make a new ticket.

awaiting data


Confusion when loading visualizations.

I have set save_visualization=true to get the visualization of the instance segmentation. But I find that when I drag the generated .bin file saved in the visualization folder into CloudCompare, it shows so many points. You know that there are only a few hundred thousand points in my source data. May I ask what is going on here? How can I keep the visualization points consistent with the source data? @JonasSchult
The following figure shows the number of points in the bin file of the visualization.

The following figure shows the number of points of the source data.

We use PyViz3D to visualize pointclouds in a web browser of your choice ( see here for an example).
You can start an http server in the visualization folder as follows:
python -m http.server 6035
More details about PyViz3D.
Let me know if this helps. :)
Best,
Jonas

Hi,can I take a look at your results and share them with me? @LinLin1031

Sorry, I don't have results on S3DIS at the moment. I used a custom dataset for my experiments. @windfill

Hi,custom dataset is OK,I  already have results on S3DIS. I want to confirm my experimental results.Can I give you your QQ or other contact information?@LinLin1031

I'm not sure whether I can help you, my results on the custom dataset are not quite satisfactory yet, and I'm still continuing to train. My QQ is 983504527. @windfill


[gardening] Fix typos

getTopLeveDecls -> getTopLevelDecls
silModue -> silModule
Evaludate -> Evaluate
OptioanlPayload -> OptionalPayload
confromance -> conformance
chcking -> checking
settting -> setting
tpye -> type
resoved -> resolved
ahve -> have ? 🤔

These look good to me. Everything is comment based apart from ed8c4d0b7 which is changing a local variable name, and all of the references seem to have been captured.

@alblue OK, I reverted https://github.com/apple/swift/commit/ed8c4d0b715b2913a529e2a9ceff8ef58ff8515c

Going to squash this on my end.
⛵
@swift-ci please smoke test

Thanks!

Wow! Excellent gardening work @koogawa. Please keep it coming! :-)

Yeah, great work @koogawa. By the way, my comment regarding the silModue typo wasn't that it shouldn't be merged, just that if @codafi or others were to review the patch they might have wanted to double check that particular change. The rename looked safe to me, so I hadn't intended that you roll that back necessarily :-)


Split Mr. Robot's Netflix 'n' Hack into separate pages.

The Mr. Robot's Netflix 'n' Hack wiki is hard to navigate with how long it is and how many images are now involved in it; it may be more easily navigated if the sections were their own pages.

On the other hand, if they are their own pages, it will more bore difficult to use CTRL-F to find a given topic. I'm conflicted about whether or not this should be done, but discussion is welcome.

I think they should be separated - using them as one page is really tough; maybe there is a way to split them into pages, but have a landing page of some sort that describes what each "Week" involves, so that finding the material one is looking for is easier? I often use the Mr. Robot guides because I want to find an example/info on some specific tool. For example, let's say I wanted to know about malware on USB sticks. Okay, that's Week 6. If each week had its own page, there could be some kind of brief list or description like:
Week 6
Topics

USB malware
Printer security

Printer dots

Industrial Control Systems

etc....?

No action, probably unnecessary.


Initial placeholder for model free readout mitigation.

Closes #180.

@rajaiitp @gvelikova This is the place to be.

@gvelikova @rajaiitp I can safely delete this branch ?

This work is taken care for by @rajaiitp in qadence-protocols.


Dashboard with versioneddataobjects issue

Hi,
If I install the Dashboard Module 1.1.0 (https://github.com/unclecheese/silverstripe-dashboard)
It stops the change recognition on my silverstripe-versioneddataobjects dataobjects. (https://github.com/heyday/silverstripe-versioneddataobjects)
Meaning once I install Dashboard and go to one of my silverstripe-versioneddataobjects dataobjects and make a change to a published record the button “published” is not changing to “Save and publish”.
Is this something that can be fixed on your end or is this a dashboard error.

sorry found the problem


Homework

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
adding homework 1
What did you learn from the changes you have made?
created a logical model for farmersmarket tables
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
no
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
How were these changes tested?
A reference to a related issue in your repository (if applicable)
Checklist

[x ] I can confirm that my changes are working as intended

Can't find your logical model.

For HW2, for Where query task, in end mention order by command.

For HW3, you don't need to mention x in a group by command.

HW 4, 5 Marked, Passed

HW 6 Marked, Passed.

thanks for your comment


Introduction Chapter

[ ] 2.1 Domain introduction
[ ] 2.2 Company Description
[ ] 2.3 Problem Area

[ ]  2.3.1 Problem Statement

[ ] 2.4 Goals & Ambitions

[ ] 2.4.1 Company Ambitions
[ ] 2.4.2 Project Goals

Q(^-^Q)


segmentation fault gulp-sass

Please......one solution for this.....

I'm having the same issue.
This might be related to me updating NodeJS.
Node: v5.11.0
Gulp: 3.9.1
gulp-sass: 2.3.1

Here's how I'm using gulp-sass:
return gulp.src('style/main.scss')
    .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
    .pipe(gulp.dest('build'));

I'm going to investigate the base projects, as described here

This issue should be closed, the guys at node-sass and libsass have this issue covered: https://github.com/sass/node-sass/issues/1464

Hi, @mitchhentges  i have the same issue on linux y mac :(. I need urgent solution for this.  Hey you now use node-sass and libsass...?

Yes, check out that node-sass issue I linked. It looks like putting node-sass: "3.4.2" in your package.json should work.
See https://github.com/sass/node-sass/issues/1464#issuecomment-212976697 and https://github.com/sass/node-sass/issues/1464#issuecomment-212987632.
It worked for my local development machine, but not for my Travis build machine, so your mileage may vary.

Excellent notice for this morning.  I will  try this solution now.....


Replace app.render with server.respond

SvelteKit 1.0.0-next.280 introduced a small breaking change for adapters. This PR includes the changes from #32, so I'm going to open it as a draft.

Thanks! I pushed some commits tidying up and merging in the change from your other PR.
There's another small SvelteKit breaking change in https://github.com/sveltejs/kit/pull/4111 that I also want to include in this branch, so I'll wait to merge until that change is released.

Validated the changes on a local repo and everything looks good, so I'm going to merge and release this. Thanks again!


StreamElements API for TTS

is it possible to use the streamelements tts engine instead of google
https://api.streamelements.com/kappa/v2/speech?voice=Brian&text=
not really an issue but more of a request as the streamelements engine supports many different voices by changing the voice name
Thanks in advance

Hey there.
Hmm, didn't know this existed. It should be possible, yes. My Red cogs aren't my main focus right now, though. I'll keep this open and work on it when I decide to come back to them.
P.S. PRs are always welcome 😛

I've been trying my best to learn python, once I can wrap my head around it I would gladly try. Thanks for being open to the idea


Apply for membership

Hi there, I'd like to be a member of oam community.
We are using Kubevela and have contributed five PRs.
Hope to become a Member and continue to contribute.
@wonderflow @chivalryq @Somefive
These are my contributions so far:
https://github.com/kubevela/velad/pull/113
https://github.com/kubevela/velad/pull/114
https://github.com/kubevela/velad/pull/116
https://github.com/kubevela/kubevela/pull/5417
https://github.com/kubevela/kubevela/pull/5388

LGTM, good job!

invited, thanks for your contributions


[QUESTION] Push notifications are only sent to one user session

Your Rocket.Chat.Android app version: 1.0.21-DEBUG
Your Rocket.Chat server version: 0.58.2
Device model (or emulator) you're running with: Galaxy A3 - Android 6.0.1 / linux rocket.chat+ 2.9.0
Steps to reproduce:

Connect to your server with your mobile phone
Connect to your server with your desktop app
Wait for a message or a mention
The notification is given to your desktop app but not to your mobile phone

I'm always connected to rocket.chat on my computer, and I usually leave it running when I have work in progress. But then, I don't get notifications on my mobile phone. It would be nice to give push notifications to every user sessions rocket.chat has, or at least make that an option ...

Hum ... I realize it's probably more a server side problem ... I should post this in https://github.com/RocketChat/Rocket.Chat/issues , shouldn't I ? :p

@Alhrath Yes, but this is how supposedly it should work I think. What's your status (busy, away...?) on the desktop when you don't receive the notification?

Tested with all status, it does the same : no notification sent.

@Alhrath The notification isn't sent, or you don't receive it?

When I'm connected only by mobile :
(uiQQZ764ZNNTq8QP8 / nietzsche is another test user in the channel
dQjzwXPCu3J69tmQk / jonas is my usual user where I want to get notification
wTFu5YDTQc3MRgis2 / newuser is the test user who I use to send the message )
I20171009-13:53:21.843(2) Meteor ➔ method stream-notify-room -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH/typing', '1': 'newuser', '2': true }
I20171009-13:53:23.130(2) Meteor ➔ method stream-notify-room -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH/typing', '1': 'newuser', '2': false }
I20171009-13:53:23.178(2) Meteor ➔ method sendMessage -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0':     { _id: 'KMCsbdkCXuWkySeXE',      rid: 'AMgL4BqTsjgKRmxmH',      msg: 'test' } }
I20171009-13:53:23.200(2) Meteor ➔ method canAccessRoom -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH', '1': 'wTFu5YDTQc3MRgis2' }
I20171009-13:53:23.271(2) Meteor ➔ method canAccessRoom -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH', '1': 'aLJ82QjHCNLEjThZd' }
I20171009-13:53:23.840(2) Integrations ➔ Outgoing WebHook.debug Execute Trigger: sendMessage
I20171009-13:53:23.853(2) Integrations ➔ Outgoing WebHook.debug Got the event arguments for the event: sendMessage { event: 'sendMessage',   message:     { _id: 'KMCsbdkCXuWkySeXE',      rid: 'AMgL4BqTsjgKRmxmH',      msg: 'test',      ts: Mon Oct 09 2017 13:53:23 GMT+0200 (CEST),      u:        { _id: 'wTFu5YDTQc3MRgis2',         username: 'newuser',         name: 'NewUser' },      mentions: [],      channels: [],      _updatedAt: Mon Oct 09 2017 13:53:23 GMT+0200 (CEST),      sandstormSessionId: null },   room:     { name: 'test',      fname: 'test',      t: 'c',      msgs: 91,      u: { _id: 'dQjzwXPCu3J69tmQk', username: 'jonas' },      customFields: {},      ts: Sat Sep 23 2017 18:19:44 GMT+0200 (CEST),      ro: false,      sysMes: true,      _updatedAt: Mon Oct 09 2017 13:45:16 GMT+0200 (CEST),      _id: 'AMgL4BqTsjgKRmxmH',      meta:        { revision: 93,         created:<PHONE_NUMBER>402,         version: 0,         updated:<PHONE_NUMBER>536 },      '$loki': 41,      username: 'newuser',      lm: Mon Oct 09 2017 13:45:16 GMT+0200 (CEST),      usernames: [ 'newuser', 'nietzsche', 'jonas' ] } }
I20171009-13:53:23.857(2) Integrations ➔ Outgoing WebHook.debug Starting search for triggers for the room: AMgL4BqTsjgKRmxmH
I20171009-13:53:23.863(2) Integrations ➔ Outgoing WebHook.debug Found 0 to iterate over and see if the match the event.
I20171009-13:53:24.413(2) Push: send message "#test" via query { userId: 'uiQQZ764ZNNTq8QP8' }
I20171009-13:53:24.442(2) Push: send message "#test" via query { userId: 'dQjzwXPCu3J69tmQk' }
I20171009-13:53:24.450(2) Push: send to token { gcm: 'dqbmsicLBtI:APA91bHvmOhQZrW61vaeu3NaL_-t1JrSoIOloSC21CETc9JDsiNIELD2p8xONTL979B3xUoDRSQqd3zaNTLUSxA2kFUgXxhS3WekSWfdlSWhhshqEBNkRXK3qhU7dJQQxpCi4Yj_1aNN' }
I20171009-13:53:24.471(2) Push: send to token { gcm: 'ewa7gDQiyFY:APA91bHTujgbtVT0GkOEFDSHNBt0j3rKGjs34_fHtGT50ifEHxoFN-VGGggP2EK4G8YNupQ04JCL--qIYqyCw4wJ4qKuwgsoPs59jdDm0T9CuOxeP63nuToq9H8iGg48PIFqcyT7bf7o' }
I20171009-13:53:24.478(2) Push: send to token { gcm: 'dyZQbw8T1Qg:APA91bGLyhC18GXCArzatJmLP5Xx-W5gNAatKorNMnzQi6bchEODnot3DmrKU5CkAWIXf0md-3GnVlrZYcr5hhh8U9g0rHY1_RQGcNnmh6dmxv-vq1xNbJe-iLdkP7Gg8PEKK-zrfQmb' }

And when I'm connected both by mobile and by desktop I only have :

I20171009-13:54:34.489(2) Meteor ➔ method stream-notify-room -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH/typing', '1': 'newuser', '2': true }
I20171009-13:54:36.122(2) Meteor ➔ method stream-notify-room -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH/typing', '1': 'newuser', '2': false }
I20171009-13:54:36.150(2) Meteor ➔ method sendMessage -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0':     { _id: 'WwDE3LHfd4fLsYwmF',      rid: 'AMgL4BqTsjgKRmxmH',      msg: 'test' } }
I20171009-13:54:36.157(2) Meteor ➔ method canAccessRoom -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH', '1': 'wTFu5YDTQc3MRgis2' }
I20171009-13:54:36.209(2) Meteor ➔ method canAccessRoom -> userId: wTFu5YDTQc3MRgis2 , arguments:  { '0': 'AMgL4BqTsjgKRmxmH', '1': 'aLJ82QjHCNLEjThZd' }
I20171009-13:54:36.306(2) Integrations ➔ Outgoing WebHook.debug Execute Trigger: sendMessage
I20171009-13:54:36.315(2) Integrations ➔ Outgoing WebHook.debug Got the event arguments for the event: sendMessage { event: 'sendMessage',   message:     { _id: 'WwDE3LHfd4fLsYwmF',      rid: 'AMgL4BqTsjgKRmxmH',      msg: 'test',      ts: Mon Oct 09 2017 13:54:36 GMT+0200 (CEST),      u:        { _id: 'wTFu5YDTQc3MRgis2',         username: 'newuser',         name: 'NewUser' },      mentions: [],      channels: [],      _updatedAt: Mon Oct 09 2017 13:54:36 GMT+0200 (CEST),      sandstormSessionId: null },   room:     { name: 'test',      fname: 'test',      t: 'c',      msgs: 92,      u: { _id: 'dQjzwXPCu3J69tmQk', username: 'jonas' },      customFields: {},      ts: Sat Sep 23 2017 18:19:44 GMT+0200 (CEST),      ro: false,      sysMes: true,      _updatedAt: Mon Oct 09 2017 13:53:23 GMT+0200 (CEST),      _id: 'AMgL4BqTsjgKRmxmH',      meta:        { revision: 94,         created:<PHONE_NUMBER>402,         version: 0,         updated:<PHONE_NUMBER>395 },      '$loki': 41,      username: 'newuser',      lm: Mon Oct 09 2017 13:53:23 GMT+0200 (CEST),      usernames: [ 'newuser', 'nietzsche', 'jonas' ] } }
I20171009-13:54:36.319(2) Integrations ➔ Outgoing WebHook.debug Starting search for triggers for the room: AMgL4BqTsjgKRmxmH
I20171009-13:54:36.324(2) Integrations ➔ Outgoing WebHook.debug Found 0 to iterate over and see if the match the event.
I20171009-13:54:37.007(2) Push: send message "#test" via query { userId: 'uiQQZ764ZNNTq8QP8' }

@Alhrath Can you please open this issue in our main repository? Looks like the back-end isn't sending the push notification for a reason (maybe a internal rule). Here's the link: http://github.com/RocketChat/Rocket.Chat. Please, link to this issue so we can follow the thread.

Will do so as soon as I setup a development server on latest rc release, to avoid confusion on the code.

Done : #8486


LibMambaUnsatisfiableError

why my miniconda have such errror :LibMambaUnsatisfiableError
C:\Users\Aristotle>conda create -n iseq -c conda-forge -c bioconda iseq
Channels:
 - conda-forge
 - bioconda
 - defaults
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - nothing provides axel needed by iseq-1.0.0-hdfd78af_0

Could not solve for environment specs
The following package could not be installed
└─ iseq is not installable because it requires
   └─ axel, which does not exist (perhaps a missing channel).

Because Axel is only supported for installation on Linux and macOS platforms, your platform Platform: win-64 does not support the installation of Axel. You can resolve this issue by two schemes:

Install a Linux virtual environment on win-64, such as directly downloading and installing the Ubuntu virtual system from the Microsoft store, and then install iSeq via Conda.
Install from the source code, see here.

Best

received,thanks very much

发件人: BioOmics @.>
发送时间: 2024年6月18日 14:49
收件人: BioOmics/iSeq @.>
抄送: Hanran11 @.>; Author @.>
主题: Re: [BioOmics/iSeq] LibMambaUnsatisfiableError (Issue #4)
Because Axel is only supported for installation on Linux and macOS platforms, your platform Platform: win-64 does not support the installation of Axel. You can resolve this issue by two schemes:

Install a Linux virtual environment on win-64, such as directly downloading and installing the Ubuntu virtual system from the Microsoft store, and then install iSeq via Conda.
Install from the source code, see herehttps://github.com/BioOmics/iSeq/blob/main/INSTALL.md.

Best
―
Reply to this email directly, view it on GitHubhttps://github.com/BioOmics/iSeq/issues/4#issuecomment-2175264214, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BDJFAGYIOG2I35VES2LYFGTZH7KBDAVCNFSM6AAAAABJPFBFZ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZVGI3DIMRRGQ.
You are receiving this because you authored the thread.Message ID: @.***>


⚠ Bofrost.at has degraded performance

In 2b9d23e, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1482 ms

Resolved: Bofrost.at performance has improved in 259bac2 after 30 minutes.


[Feature]: Capability to specify a julia setup

In which process do you want a new feature?
Julia Installation
Feature / Improvement
It would be interesting to choose wether to let the installer to install julia or choose an already installed julia version.
Version
0.0.2

Thanks for the suggestion! Take a look at https://github.com/JuliaPluto/PlutoDesktop/issues/40#issuecomment-1273168057


Handling of interactions on missing posts

I've been getting this on my test instance for a while now (this is fresh from just now, but I can see identical errors all throughout the logs:
wsgi.1   | <IP_ADDRESS> - - [10/Jan/2023:14:11:15 +0000] "POST /inbox/ HTTP/1.1" 202 269 "-" "http.rb/5.1.0 (Mastodon/4.0.2; +https://mrnet.pt/)" 171ms
worker.1 | Attempting transition on users.inboxmessage#963 from state received
worker.1 | Attempting transition on activities.post#135641608653357184 from state new
worker.1 | Attempting transition on activities.fanout#534 from state new
worker.1 | Tasks processed this loop:
worker.1 |   users.identity: 1
worker.1 |   users.inboxmessage: 1
worker.1 |   activities.post: 1
worker.1 |   activities.fanout: 1
worker.1 | Running cleaning and scheduling
worker.1 | Attempting transition on users.inboxmessage#931 from state received
worker.1 | Traceback (most recent call last):
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post_interaction.py", line 262, in by_ap
worker.1 |     boost = cls.objects.get(object_uri=data["id"])
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
worker.1 |     return getattr(self.get_queryset(), name)(*args, **kwargs)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/query.py", line 650, in get
worker.1 |     raise self.model.DoesNotExist(
worker.1 | activities.models.post_interaction.PostInteraction.DoesNotExist: PostInteraction matching query does not exist.
worker.1 |
worker.1 | During handling of the above exception, another exception occurred:
worker.1 |
worker.1 | Traceback (most recent call last):
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 302, in main_wrap
worker.1 |     raise exc_info[1]
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post.py", line 854, in by_object_uri
worker.1 |     return cls.objects.get(object_uri=object_uri)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
worker.1 |     return getattr(self.get_queryset(), name)(*args, **kwargs)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/query.py", line 650, in get
worker.1 |     raise self.model.DoesNotExist(
worker.1 | activities.models.post.Post.DoesNotExist: Post matching query does not exist.
worker.1 |
worker.1 | During handling of the above exception, another exception occurred:
worker.1 |
worker.1 | Traceback (most recent call last):
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 486, in thread_handler
worker.1 |     raise exc_info[1]
worker.1 |   File "/home/piku/.piku/apps/takahe/stator/models.py", line 233, in atransition_attempt
worker.1 |     next_state = await current_state.handler(self)  # type: ignore
worker.1 |   File "/home/piku/.piku/apps/takahe/users/models/inbox_message.py", line 24, in handle_received
worker.1 |     await sync_to_async(PostInteraction.handle_ap)(instance.message)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 448, in __call__
worker.1 |     ret = await asyncio.wait_for(future, timeout=None)
worker.1 |   File "/usr/lib/python3.10/asyncio/tasks.py", line 408, in wait_for
worker.1 |     return await fut
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/current_thread_executor.py", line 22, in run
worker.1 |     result = self.fn(*self.args, **self.kwargs)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 490, in thread_handler
worker.1 |     return func(*args, **kwargs)
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post_interaction.py", line 297, in handle_ap
worker.1 |     interaction = cls.by_ap(data, create=True)
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post_interaction.py", line 268, in by_ap
worker.1 |     post = Post.by_object_uri(get_str_or_id(data["object"]), fetch=True)
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post.py", line 872, in by_object_uri
worker.1 |     post = cls.by_ap(
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post.py", line 740, in by_ap
worker.1 |     if urlparse(data["id"]).hostname != urlparse(data["attributedTo"]).hostname:
worker.1 | KeyError: 'id'
worker.1 | Traceback (most recent call last):
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post_interaction.py", line 262, in by_ap
worker.1 |     boost = cls.objects.get(object_uri=data["id"])
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
worker.1 |     return getattr(self.get_queryset(), name)(*args, **kwargs)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/query.py", line 650, in get
worker.1 |     raise self.model.DoesNotExist(
worker.1 | activities.models.post_interaction.PostInteraction.DoesNotExist: PostInteraction matching query does not exist.
worker.1 |
worker.1 | During handling of the above exception, another exception occurred:
worker.1 |
worker.1 | Traceback (most recent call last):
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 302, in main_wrap
worker.1 |     raise exc_info[1]
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post.py", line 854, in by_object_uri
worker.1 |     return cls.objects.get(object_uri=object_uri)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
worker.1 |     return getattr(self.get_queryset(), name)(*args, **kwargs)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/django/db/models/query.py", line 650, in get
worker.1 |     raise self.model.DoesNotExist(
worker.1 | activities.models.post.Post.DoesNotExist: Post matching query does not exist.
worker.1 |
worker.1 | During handling of the above exception, another exception occurred:
worker.1 |
worker.1 | Traceback (most recent call last):
worker.1 |   File "/home/piku/.piku/apps/takahe/stator/models.py", line 233, in atransition_attempt
worker.1 |     next_state = await current_state.handler(self)  # type: ignore
worker.1 |   File "/home/piku/.piku/apps/takahe/users/models/inbox_message.py", line 24, in handle_received
worker.1 |     await sync_to_async(PostInteraction.handle_ap)(instance.message)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 448, in __call__
worker.1 |     ret = await asyncio.wait_for(future, timeout=None)
worker.1 |   File "/usr/lib/python3.10/asyncio/tasks.py", line 408, in wait_for
worker.1 |     return await fut
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/current_thread_executor.py", line 22, in run
worker.1 |     result = self.fn(*self.args, **self.kwargs)
worker.1 |   File "/home/piku/.piku/envs/takahe/lib/python3.10/site-packages/asgiref/sync.py", line 490, in thread_handler
worker.1 |     return func(*args, **kwargs)
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post_interaction.py", line 297, in handle_ap
worker.1 |     interaction = cls.by_ap(data, create=True)
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post_interaction.py", line 268, in by_ap
worker.1 |     post = Post.by_object_uri(get_str_or_id(data["object"]), fetch=True)
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post.py", line 872, in by_object_uri
worker.1 |     post = cls.by_ap(
worker.1 |   File "/home/piku/.piku/apps/takahe/activities/models/post.py", line 740, in by_ap
worker.1 |     if urlparse(data["id"]).hostname != urlparse(data["attributedTo"]).hostname:
worker.1 | KeyError: 'id'

Could you fetch that inbox message (ID 931) out of the Django admin for us and put it here?

This one is not there anymore - I cannot find anything older than 978, so it was either purged or I messed something up. But I'll add the payload if this comes up again (looking through the logs on my instance, it hasn't happened all day).

Yep. Next time I'll try to find the time to do a PR... I've little time during the week.

Closing this due to inactivity.


Empty node in XML:  or ?

In the sample code in Project 10, an empty XML node named nodeName is written as <nodeName></nodeName>, while in my Java code the output goes <nodeName/>. (see this version)

Both are valid XML representations, but I wonder whether this little difference would impact the code generator in Project 11.

I tested this after I finished project 11. In fact, it doesn't impact the code generator.


Using cStor Engine for OpenEBS Volumes.

FEATURE REQUEST
cStor is the new storage engine that makes using COW based storage engine to write the data to the disks. This issue tracks the design and various implementation tasks involved in orchestrating the provisioning and management of cStor volumes by OpenEBS maya.

Steps for provisioning cStor volume is given below:

Create a SPC which is a group of cStor pools: https://docs.openebs.io/docs/next/ugcstor.html#creating-cStor-storage-pools
Create a SC which will consume the SPC created in step 1: https://docs.openebs.io/docs/next/ugcstor.html#creating-cStor-storage-class
Mention the SC in application PVC spec. Example steps for provisioning an application is provided here: https://docs.openebs.io/docs/next/ugcstor.html#Provisioning-sample-application-with-cstor


⚠ Bofrost.fr has degraded performance

In 3e34809, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1061 ms

Resolved: Bofrost.fr performance has improved in 73777a6 after 15 minutes.


Add JSON-LD Support

Another common RDF format is json-ld. In fact, this is a required format for ldp servers. I'll gladly contribute to this when I get the time, but I figured I should go ahead and open this issue.
I assume this would involve adding a new crate rio_jsonld, following the paradigm already established for the other parsers.

Hi @JordanShurmer! It would be amazing to have JsonLD support in Rio.
The official JSON-LD RDF (de)serialization algorithm depends on other algorithms that seems out of scope of Rio. It might be nice to have a separate library implementing and exposing JSON-LD algorithms and then provide a wrapper for it in Rio allowing to do (de)serialization using the same interface as for the other formats supported by Rio.
PS: I have just seen that you started a Solid server project in Rust. I would be pleased to help and you could find useful my Oxigraph project.

Yeah, that makes sense having the algorithm as a crate which a rio crate depends on.
Yeah, I was looking at that project earlier today :)  Definitely similarities, and I welcome any contributions to the solid-rust project. It's just me so far, so there's not any legit project plan or timeline or whatever, but feel free to contribute however you want. This is my first real rust project, so I'm sure there's overall improvements/architectural changes that could be made too.

Perhaps the sophia_jsonld crate could be useful: https://github.com/pchampin/sophia_rs
Only supports expanded syntax at this time.

The official JSON-LD RDF (de)serialization algorithm depends on other algorithms that seems out of scope of Rio.

@Tpt ,
Official de-serialization algos seem to assume loading entire json as object, and derive semantic statements by manipulating/analyzing those json structures. This definitely is out of scope for rio.
And there is popular  jsonld-streaming-parser.js lib, that do parse json-ld docs in streaming way, much like parsers for other syntaxes. This is one of standard lib in rdfjs ecosystem. This model can fit in scope of rio, i hope. There is also corresponding streaming serialization library too.

here is a high level overview of approach taken by above lib :
https://www.rubensworks.net/blog/2019/03/13/streaming-rdf-parsers/

There is also the json_ld crate (src) which comes with support for expansion, compaction and flattening.

Any progress on this? Having json-ld supported would be sooo great!

Sadly not in Rio. But the great news is that the json_ld crate new supports emitting RDF. So, there is a Rust solution.

@amimart fyi.