Rendered

Not sure if this is the right spot to leave a comment, on the RFC, sorry if it isn't!
"Option 2: Isolates" seems to include a few function execution environments that, to my knowledge, aren't isolates running on edge, such as Firebase, Netlify and AWS Lambda functions.
I'll use this comment to argue for a proper edge isolate function environment (à la CloudFlare Workers) to be considered 🙃
Edge isolate functions are, in my opinion and experience, better than their containerized Node.js alternatives for two main reasons:

Speed: since the edge isolate sits closer to the users and has no cold start
Cost: due to their nature, the infrastructure and developer costs can stay crazy cheap. CloudFlare only bills per execution for their isolate workers, so developers save on the usual memory-time costs of containerized functions. This leads to better DX too as developers can deploy "preview versions" of their app at very little cost

I'll also take a crack at answering some of the cons:

Hard to run locally: I'm not sure what would make it hard to run these locally. Depending on how the API is structured, couldn't it be a thin layer on top of an HTTP server? There is some prior art in https://github.com/cloudflare/miniflare
No portability. There seems to be a lot of platform lock in for each of these providers. granted this is true for special CF features like Durable Objects and KV but I would still say that for most API building use cases, the code would be portable. In fact, there's a kind of de facto standard emerging in that world where CloudFlare Workers, Deno Deploy and Remix are all leaning heavily on the standard Web fetch API to handle incoming requests as well as outgoing requests, which I would argue is probably a fairly future proof standard to use.

While their environment is not Node.js, which can be a little confusing at first, the Supabase ecosystem already integrates very well with these functions given the heavy use of PostgREST (with slight tweaks).
Either way, I will happily keep using Supabase for my data but just wanted to give my 2 cents!

Hey @alexturpin - can you please comment against the file itself? Then we can have a threaded conversation and we can
"resolve" the thread once your feedback has been integrated

Quick idea I had in mind, can go in detail later if wanted:
Ability to have Function chains (flows)
It would be great to have the ability to make functions more flexible by making it possible to not only make them callable from a client, but also have the ability to chain them to build up flows. This way, for example, Supabase could provide an "app store" with default Functions, but with still the possibility to put custom behavior before or after them.
Bonus(?): Type input (request) and output (response) with OpenAPI, this way it's checkable which function can receive/send from/to which function.

Since you've already shipped Supabase Functions on Deno Deploy, you might want to update/close this PR. 😄


Entities with NULL ids

So I've got a TS class like:
export interface IThing {
  id: number;
  name: string;
}

export class Thing implements IThing {
  constructor(
    public id,
    public name: string
  ) {}
}

When I want to store it in Horizon, I do something like:
let t = new Thing(null, 'Something');
this.myService.things.store(t);

but nothing happens, not even an error (I'm sure I had one before though). I either have to give it an ID of undefined or do delete t.id; before trying to store it.
Not 100%, but maybe it should be allowed to pass in a NULL id field and treat it as being undefined/missing?

Hi @intellix,
This looks like a bug to me, we should probably be throwing an error. I think in TS this should be implemented as an optional field most likely. RethinkDB throws an error if you try to store something with an id of null, so I'm not sure what's happening. @Tryneus do you know what the server does when it gets a null id?

Yeah, I think this just needs to ensure that the id is undefined, rather than being set to null.


Constrain inferred preprocessor

User story
As a user of the smartnoise-synth library, I want to provide a variable amount of ColumnTransformer objects for preprocessing during fit(). Especially if the data contains many columns or the majority of the inferred transformers is OK, this can save time and repeated definitions.
Detailed description
Currently, one either specifies the whole preprocessor (i.e. at least one transformer per column) or allows the synthesizer to infer the preprocessor completely. By specifying only certain ColumnTransformer objects, a user can constrain the inferred preprocessor to certain columns.
For my use case I would like to enforce that e.g. the "age" column uses an AnonymizationTransformer even when I am content with the other inferred transformers.
Proposed solution
In my opinion, one could specify an optional parameter fit(transformer_constraints=...) which takes a dictionary that maps from column indices / names to a ColumnTransformer object. Assuming transformer=None is given, then all except the referenced columns will be inferred.
Another approach is to modify the TableTransformer class directly. Instead of assuming that the parameter transformers is solely a list, it could be similar to the described dictionary. If some columns are missing in the given TableTransformer object, they can be inferred automatically.
I will open a new branch and work on this once we agree on the specifics.

Good idea.
Regarding the two proposals, the SDGymBaseSynthesizer.fit() method currently takes three lists (ordinal_columns, categorical_columns, and continuous_columns), which are passed through to the TableTransformer factory methods.  The idea is that creating a TableTransformer manually and passing to the synthesizer, or allowing the synthesizer to create a TableTransformer under the covers, will result in the same behavior.  Ideally, whatever is designed for the above proposal should have the same symmetry.
The current design was a holdover from our SDGym heritage, where there were only 2 or 3 column types allowed, and any column not specified in one of two types would be assumed to be the third type.  That was problematic in our setting, so we switched to requiring all columns to be explicitly listed, and we throw an error (rather than assuming) if a column is present in the training data but has an unknown type.  The inference code mitigates this somewhat, but the point is that the code requires all columns present to have a transformer, and only allows transformers to be generated from 3 types (ordinal, categorical, and continuous).
With the recent PR to support anonymization, I added a special_types={} dictionary to all factory methods, and the inference code uses RegExes to try to guess if any columns need to be "special".  In this code path, "special" can include datetime as well as anything with a built-in faker.  I didn't add this param to the fit method of the base synthesizer, because I wasn't convinced it was the right general-purpose design.  But it or something like it could be passed through from the fit method to maintain the symmetry of the fit and TableTransformer.  For the proposal above, maybe we could rename special_types to something more suitable and use it as specified above.
This is awkward, since the dictionary needs to cohere with the three lists that are passed in as legacy from SDGym.  For example, supporting datetime could have been accomplished by adding a new list, datetime_columns to match the categorical_columns and so on, but this gets unwieldy quickly.  But adding a dictionary where the column is mapped to datetime raises the question of why we even have continuous_columns etc. at all.  If we were designing from scratch, we would just use the dictionary and not include the three lists.  I'm open to moving everything to dictionary and finding a way to cleanly deprecate those lists (or maintain purely for back compatibility).  If supporting an optional dictionary as the primary way to manually specify column types, I would imagine specification something like:

any column not specified in dictionary will be inferred
to ignore a column completely, caller can specify in dictionary with "drop" or "ignore"
any column specified in dictionary will be ignored for purposes of inference and will not incur privacy cost to create transformer.
dictionary entry should support most built-in transformer types, including fakers, and include text shortcuts as well as manually instantiated transformers

In this pattern, we could even allow the "transformer" property on the "fit" method to take a dictionary, so there wouldn't need to be a new param.  For example:
synth = Synthesizer.create("mwem", epsilon=2.0)
synth.fit(data, transformer={'address': 'address'})  # all columns except address are inferred; age is faked using 'address' built-in

synth.fit(data, transformer={'device_id': AnonymizationTransformer(my_faker_func)}) # all inferred except customized ID column

synth.fit(data, transformer={
   'age': 'ordinal',
   'notes': 'ignore',
   }). # all other columns inferred

The implementation was reviewed and merged.
I would be grateful if you could push a new release @joshua-oss. Also, it would be a good idea to remove the special_types dictionary, include a simple end-to-end test and document a usage example.

I've added some documentation and end-to-end tests and pushed a release to PyPi.  I wasn't able to cleanly remove special_types, so that code remains as undocumented implementation detail for now. Removing it was breaking the code that runs regular expressions on the unbounded string columns to guess the right faker to use.  It is safe to always pass an empty dictionary, which is the default.
The RegEx inference was written with the assumption that the SDGym style of passing "categorical", etc. was mutually exclusive with inference (because RegEx of PII only makes sense on unbounded strings/ints, which isn't one of the 3 options SDGym had).  Now that you've updated to allow column-based control over what gets inferred, the RegEx code should be updated to invoke on anything not defined in constraints.  However, using constraints currently mixes fine with the RegEx code, except for cases where constraints use the SDGym-style string shortcuts.  In that case, the inference may be suboptimal, but won't introduce any privacy bugs, so I'll leave it as-is for now.

Great! Okay then let's stick with special_types for now.


Default timestamp of 00:00:00 UTC

A few times I've selected a public date and did not fully select time, so vulnogram did not write out DATE_PUBLIC. I figured out my mistake, but perhaps set a default time of 00:00:00 UTC, I suspect that many disclosure date to not have hour resolution. Nice to have/low priority!

Just looked at this issue briefly.  This seems to be a browser specific issue with the newer HTML field of type "datetime-local".  Firefox, Safari, Chrome, Edge and IE have implemented this in slightly different ways - making it difficult to do transparent implementation of an "onchange" event and enter timestamp to be midnight UTC.
Firefox for example gives an empty value unless the user has manually selected both date and the time.  Auto-populating this field on page load seems like a bad idea as the user who generates the JSON might not notice the date and leave an unwanted field for DATE_PUBLIC.


CONTRIBUTING.md

Explains the structure of the repository and the steps needed to write one before sending a pull request.
(cc @nmn -- and of course anyone else -- for feedback)

An ASCII file structure outline is a good idea! I'll see if I can come up with something on Monday


Disallow mod structure gen in space station dimids

TiC's slime islands spawn there by default

Did you know that, at least in MC 1.7.10, TiC has a config to only spawn slime islands in overworld? And I guess there's a black- and/or whitelist for dims where slime islands are allowed to spawn. just wanted to mention it...

Yes, the black/whitelist exists, but it would be nicer if you didn't have to configure it and the mod would do it automatically.


Implement SA1201

Fixes #61. i have not yet implemented a code fix because I think we should discuss how it should fix a violation.

I created issue #573 for the code fix.

I don't like how a nested class at the beginning of a class can result in every other element getting a warning. What would happen if we are more selective in our reporting?
:memo: Only one of the following items would be used.

Report a warning on the current element if it should come after the element that follows it.
Report a warning on the current element if it should appear before the element that precedes it.

I implemented the change you suggested. The diagnostics that get reported are now: A X should not follow a Y.

I need to work on thisd a bit more to remove the compiler errors in the unit tests. I also just discovered a crash if the document is in an invalid state and has an IncompleteMemberSyntax in it

:question: Is this ready now?

I think so.


[Bug]: assert len(indices) == len(inputs) with Qwen/Qwen2-VL-2B-Instruct

Your current environment

The output of `python collect_env.py`
Collecting environment information...
WARNING 10-07 17:28:06 cuda.py:76] Detected different devices in the system:
WARNING 10-07 17:28:06 cuda.py:76] NVIDIA A100-SXM4-80GB
WARNING 10-07 17:28:06 cuda.py:76] NVIDIA A100-SXM4-80GB
WARNING 10-07 17:28:06 cuda.py:76] NVIDIA A100-SXM4-80GB
WARNING 10-07 17:28:06 cuda.py:76] NVIDIA DGX Display
WARNING 10-07 17:28:06 cuda.py:76] NVIDIA A100-SXM4-80GB
WARNING 10-07 17:28:06 cuda.py:76] Please make sure to set `CUDA_DEVICE_ORDER=PCI_BUS_ID` to avoid unexpected behavior.
PyTorch version: 2.4.0+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A

OS: Ubuntu 20.04.6 LTS (x86_64)
GCC version: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Clang version: 10.0.0-4ubuntu1
CMake version: version 3.27.0
Libc version: glibc-2.31

Python version: 3.10.12 (main, Jul 17 2023, 11:18:22) [GCC 9.4.0] (64-bit runtime)
Python platform: Linux-5.4.0-166-generic-x86_64-with-glibc2.31
Is CUDA available: True
CUDA runtime version: 12.3.52
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration:
GPU 0: NVIDIA A100-SXM4-80GB
GPU 1: NVIDIA A100-SXM4-80GB
GPU 2: NVIDIA A100-SXM4-80GB
GPU 3: NVIDIA DGX Display
GPU 4: NVIDIA A100-SXM4-80GB

Nvidia driver version: 535.129.03
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Byte Order:                         Little Endian
Address sizes:                      43 bits physical, 48 bits virtual
CPU(s):                             128
On-line CPU(s) list:                0-127
Thread(s) per core:                 2
Core(s) per socket:                 64
Socket(s):                          1
NUMA node(s):                       1
Vendor ID:                          AuthenticAMD
CPU family:                         23
Model:                              49
Model name:                         AMD EPYC 7742 64-Core Processor
Stepping:                           0
Frequency boost:                    enabled
CPU MHz:                            2608.221
CPU max MHz:                        2250,0000
CPU min MHz:                        1500,0000
BogoMIPS:                           4491.62
Virtualization:                     AMD-V
L1d cache:                          2 MiB
L1i cache:                          2 MiB
L2 cache:                           32 MiB
L3 cache:                           256 MiB
NUMA node0 CPU(s):                  0-127
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Vulnerable
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca sme sev sev_es

Versions of relevant libraries:
[pip3] numpy==1.26.4
[pip3] nvidia-cublas-cu12==<IP_ADDRESS>
[pip3] nvidia-cuda-cupti-cu12==12.1.105
[pip3] nvidia-cuda-nvrtc-cu12==12.1.105
[pip3] nvidia-cuda-runtime-cu12==12.1.105
[pip3] nvidia-cudnn-cu12==<IP_ADDRESS>
[pip3] nvidia-cufft-cu12==<IP_ADDRESS>
[pip3] nvidia-curand-cu12==<IP_ADDRESS>
[pip3] nvidia-cusolver-cu12==<IP_ADDRESS>
[pip3] nvidia-cusparse-cu12==<IP_ADDRESS>
[pip3] nvidia-ml-py==12.560.30
[pip3] nvidia-nccl-cu12==2.20.5
[pip3] nvidia-nvjitlink-cu12==12.6.77
[pip3] nvidia-nvtx-cu12==12.1.105
[pip3] pyzmq==26.2.0
[pip3] torch==2.4.0
[pip3] torchvision==0.19.0
[pip3] transformers==4.45.1
[pip3] triton==3.0.0
[conda] Could not collect
ROCM Version: Could not collect
Neuron SDK Version: N/A
vLLM Version: 0.6.3.dev116+g151ef4ef
vLLM Build Flags:
CUDA Archs: Not Set; ROCm: Disabled; Neuron: Disabled
GPU Topology:
GPU0	GPU1	GPU2	GPU3	GPU4	CPU Affinity	NUMA Affinity	GPU NUMA ID
GPU0	 X 	NV4	NV4	SYS	NV4	0-127	0		N/A
GPU1	NV4	 X 	NV4	SYS	NV4	0-127	0		N/A
GPU2	NV4	NV4	 X 	SYS	NV4	0-127	0		N/A
GPU3	SYS	SYS	SYS	 X 	PHB	0-127	0		N/A
GPU4	NV4	NV4	NV4	PHB	 X 	0-127	0		N/A

Legend:

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

Model Input Dumps
No response
🐛 Describe the bug
Trying to run:
from vllm import LLM, SamplingParams
from PIL import Image

if __name__ == "__main__":
    vllm_engine = LLM("Qwen/Qwen2-VL-2B-Instruct")
    sampling_params = SamplingParams(max_tokens=120)

    prompt = "Describe this image."
    vllm_inputs = [{"prompt": prompt, "multi_modal_data": {"image": Image.new("RGB", (224, 224))}} for _ in range(4)]
    outputs = vllm_engine.generate(vllm_inputs, sampling_params)
    print(outputs)

Leads to:
[rank0]: Traceback (most recent call last):
[rank0]:   File "/home/sayak/diffusers/check_video_vllm.py", line 23, in <module>
[rank0]:     outputs = vllm_engine.generate(vllm_inputs, sampling_params)
[rank0]:   File "/home/sayak/vllm/vllm/utils.py", line 1060, in inner
[rank0]:     return fn(*args, **kwargs)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/llm.py", line 376, in generate
[rank0]:     self._validate_and_add_requests(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/llm.py", line 831, in _validate_and_add_requests
[rank0]:     self._add_request(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/llm.py", line 849, in _add_request
[rank0]:     self.llm_engine.add_request(
[rank0]:   File "/home/sayak/vllm/vllm/utils.py", line 1060, in inner
[rank0]:     return fn(*args, **kwargs)
[rank0]:   File "/home/sayak/vllm/vllm/engine/llm_engine.py", line 812, in add_request
[rank0]:     processed_inputs = self.input_processor(preprocessed_inputs)
[rank0]:   File "/home/sayak/vllm/vllm/inputs/registry.py", line 299, in process_input
[rank0]:     return processor(InputContext(model_config), inputs,
[rank0]:   File "/home/sayak/vllm/vllm/model_executor/models/qwen2_vl.py", line 857, in input_processor_for_qwen2_vl
[rank0]:     prompt_token_ids = _expand_pad_tokens(image_inputs,
[rank0]:   File "/home/sayak/vllm/vllm/model_executor/models/qwen2_vl.py", line 780, in _expand_pad_tokens
[rank0]:     assert len(indices) == len(inputs)
[rank0]: AssertionError

Before submitting a new issue...

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

You should follow the prompt template as shown in their HuggingFace repo. The easiest way is to use LLM.chat method so you don't have to manually apply the chat template.

If I were to use LLM.chat() interface, how should I use multi_modal_data()?

Please read the examples on their HuggingFace repo. The format of messages in LLM.chat is the same as theirs.

Modified my code:
from vllm import LLM, SamplingParams
from PIL import Image

if __name__ == "__main__":
    vllm_engine = LLM("Qwen/Qwen2-VL-2B-Instruct")
    sampling_params = SamplingParams(max_tokens=120)

    num_images = 3
    messages = [{"role": "user", "content": []}]
    for _ in range(num_images):
        new_image = {"type": "image", "image": Image.new("RGB", (224, 224))}
        messages[0]["content"].append(new_image)

    messages[0]["content"].append({"type": "text", "text": "Describe this image."})

    outputs = vllm_engine.chat(messages, sampling_params)
    print(outputs)

Now it leads to:
[rank0]: Traceback (most recent call last):
[rank0]:   File "/home/sayak/diffusers/check_video_vllm.py", line 32, in <module>
[rank0]:     outputs = vllm_engine.chat(messages, sampling_params)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/llm.py", line 556, in chat
[rank0]:     conversation, mm_data = parse_chat_messages(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 487, in parse_chat_messages
[rank0]:     sub_messages = _parse_chat_message_content(msg, mm_tracker)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 440, in _parse_chat_message_content
[rank0]:     result = _parse_chat_message_content_parts(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 402, in _parse_chat_message_content_parts
[rank0]:     raise NotImplementedError(f"Unknown part type: {part_type}")
[rank0]: NotImplementedError: Unknown part type: image

    for _ in range(num_images):
        new_image = {"type": "image", "image": Image.new("RGB", (224, 224))}
        messages[0]["content"].append(new_image)

You should pass an image_url in the form of HTTP URL or base64 URL. This is similar to OpenAI API.

Alright.
I will try that and report here but I think https://github.com/vllm-project/vllm/issues/9128#issuecomment-2397376788 is misleading then. I did follow the exact "messages" formatting.

You should follow the prompt template as shown on their HuggingFace repo. The easiest way is to use LLM.chat method so you don't have to manually apply the chat template.

Sorry, I missed the slight difference in the image format. Hope that everything is cleared up now!

I tested Qwen2-VL-7B-Instruct work fine, but tested Qwen2-VL-72B-Instruct-GPTQ-Int4 error!

I tested Qwen2-VL-2B-Instruct working well!

I tested Qwen2-VL-7B-Instruct work fine, but tested Qwen2-VL-72B-Instruct-GPTQ-Int4 error!

Can you check whether both repos have a correctly defined chat template?

With
def encode_image(image):
    buffered = io.BytesIO()
    image.save(buffered, format="JPEG")
    image_bytes = buffered.getvalue()
    return base64.b64encode(image_bytes).decode("utf-8")

num_images = 3
messages = [{"role": "user", "content": []}]
for _ in range(num_images):
    base64_image = encode_image(Image.new("RGB", (224, 224)))
    new_image = {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
    messages[0]["content"].append(new_image)

messages[0]["content"].append({"type": "text", "text": "Describe this image."})

I get:
[rank0]: Traceback (most recent call last):
[rank0]:   File "/home/sayak/diffusers/check_video_vllm.py", line 41, in <module>
[rank0]:     outputs = vllm_engine.chat(messages, sampling_params)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/llm.py", line 556, in chat
[rank0]:     conversation, mm_data = parse_chat_messages(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 487, in parse_chat_messages
[rank0]:     sub_messages = _parse_chat_message_content(msg, mm_tracker)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 440, in _parse_chat_message_content
[rank0]:     result = _parse_chat_message_content_parts(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 392, in _parse_chat_message_content_parts
[rank0]:     mm_parser.parse_image(image_url["url"])
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 276, in parse_image
[rank0]:     placeholder = self._tracker.add("image", image)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 205, in add
[rank0]:     raise ValueError(
[rank0]: ValueError: At most 1 image(s) may be provided in one request.

What am I missing out on?

With
def encode_image(image):
    buffered = io.BytesIO()
    image.save(buffered, format="JPEG")
    image_bytes = buffered.getvalue()
    return base64.b64encode(image_bytes).decode("utf-8")

num_images = 3
messages = [{"role": "user", "content": []}]
for _ in range(num_images):
    base64_image = encode_image(Image.new("RGB", (224, 224)))
    new_image = {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
    messages[0]["content"].append(new_image)

messages[0]["content"].append({"type": "text", "text": "Describe this image."})

I get:
[rank0]: Traceback (most recent call last):
[rank0]:   File "/home/sayak/diffusers/check_video_vllm.py", line 41, in <module>
[rank0]:     outputs = vllm_engine.chat(messages, sampling_params)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/llm.py", line 556, in chat
[rank0]:     conversation, mm_data = parse_chat_messages(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 487, in parse_chat_messages
[rank0]:     sub_messages = _parse_chat_message_content(msg, mm_tracker)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 440, in _parse_chat_message_content
[rank0]:     result = _parse_chat_message_content_parts(
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 392, in _parse_chat_message_content_parts
[rank0]:     mm_parser.parse_image(image_url["url"])
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 276, in parse_image
[rank0]:     placeholder = self._tracker.add("image", image)
[rank0]:   File "/home/sayak/vllm/vllm/entrypoints/chat_utils.py", line 205, in add
[rank0]:     raise ValueError(
[rank0]: ValueError: At most 1 image(s) may be provided in one request.

What am I missing out on?

Please check our docs on using VLMs. There is a section on how to input multiple images per prompt.

I am following https://docs.vllm.ai/en/stable/models/vlm.html and I am still really not sure what I am missing out here. A bit more specificity in your replies would be appreciated.

I am following https://docs.vllm.ai/en/stable/models/vlm.html and I am still really not sure what I am missing out here. A bit more specificity in your replies would be appreciated.

You need to set limit_mm_per_prompt, as shown here

Thanks!
This is my full example and it works:
from vllm import LLM, SamplingParams
from decord import VideoReader, cpu
from PIL import Image
import base64
import io
from huggingface_hub import hf_hub_download

NUM_MAX_FRAMES = 4

def encode_image(image):
    buffered = io.BytesIO()
    image.save(buffered, format="JPEG")
    image_bytes = buffered.getvalue()
    return base64.b64encode(image_bytes).decode("utf-8")

def load_video(num_max_frames=4):
    video_filepath = hf_hub_download(
        repo_id="huggingface/documentation-images", repo_type="dataset", filename="diffusers/hiker.mp4"
    )
    vr = VideoReader(video_filepath, ctx=cpu(0))
    video_frames = [Image.fromarray(vr[i].asnumpy()) for i in range(len(vr))][:num_max_frames]
    return video_frames

if __name__ == "__main__":
    # Use a limit of 4 frames.
    vllm_engine = LLM("Qwen/Qwen2-VL-2B-Instruct", limit_mm_per_prompt={"image": NUM_MAX_FRAMES})
    sampling_params = SamplingParams(max_tokens=120)

    # Video.
    video_frames = load_video(num_max_frames=NUM_MAX_FRAMES)
    messages = [{"role": "user", "content": []}]
    messages[0]["content"].append({"type": "text", "text": "Describe this set of frames. Consider the frames to be a part of the same video."})
    for i in range(len(video_frames)):
        base64_image = encode_image(video_frames[i])
        new_image = {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
        messages[0]["content"].append(new_image)

    outputs = vllm_engine.chat(messages, sampling_params)
    with open("qwen.txt", "w") as f:
        print(outputs, file=f)

The script shows inferencing on videos. Do you think it could be made a part of the docs?

Thanks!
This is my full example and it works:
from vllm import LLM, SamplingParams
from decord import VideoReader, cpu
from PIL import Image
import base64
import io
from huggingface_hub import hf_hub_download

NUM_MAX_FRAMES = 4

def encode_image(image):
    buffered = io.BytesIO()
    image.save(buffered, format="JPEG")
    image_bytes = buffered.getvalue()
    return base64.b64encode(image_bytes).decode("utf-8")

def load_video(num_max_frames=4):
    video_filepath = hf_hub_download(
        repo_id="huggingface/documentation-images", repo_type="dataset", filename="diffusers/hiker.mp4"
    )
    vr = VideoReader(video_filepath, ctx=cpu(0))
    video_frames = [Image.fromarray(vr[i].asnumpy()) for i in range(len(vr))][:num_max_frames]
    return video_frames

if __name__ == "__main__":
    # Use a limit of 4 frames.
    vllm_engine = LLM("Qwen/Qwen2-VL-2B-Instruct", limit_mm_per_prompt={"image": NUM_MAX_FRAMES})
    sampling_params = SamplingParams(max_tokens=120)

    # Video.
    video_frames = load_video(num_max_frames=NUM_MAX_FRAMES)
    messages = [{"role": "user", "content": []}]
    messages[0]["content"].append({"type": "text", "text": "Describe this set of frames. Consider the frames to be a part of the same video."})
    for i in range(len(video_frames)):
        base64_image = encode_image(video_frames[i])
        new_image = {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
        messages[0]["content"].append(new_image)

    outputs = vllm_engine.chat(messages, sampling_params)
    with open("qwen.txt", "w") as f:
        print(outputs, file=f)

The script shows inferencing on videos. Do you think it could be made a part of the docs?

Feel free to open a PR. Do note however that this case is still technically multi-image input (we have different API for single-video and multi-video input, and currently it is limited to offline inference only unlike multi-image case)

Sure!
Do you have a link to the documentation where you think this would be the most suitable? I think we could include this example in https://docs.vllm.ai/en/latest/models/vlm.html#multi-image-input it self. WDYT?

we have different API for single-video and multi-video input, and currently it is limited to offline inference only, unlike multi-image case)

Do you have a link for me to look further?

Do you have a link to the documentation where you think this would be the most suitable? I think we could include this example in https://docs.vllm.ai/en/latest/models/vlm.html#multi-image-input it self. WDYT?

Yes, that sounds good.

we have different API for single-video and multi-video input, and currently it is limited to offline inference only, unlike multi-image case)

Do you have a link for me to look further?

See #7558

@DarkLight1337 https://github.com/vllm-project/vllm/pull/9155.


New version: M2Team.NanaZip version 3.1.1080.0

Checklist for Pull Requests

[X] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[X] Have you checked that there aren't other open pull requests for the same manifest update/change?

[X] Does your manifest conform to the 1.6 schema?

Note: <path> is the directory's name containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

No need to rerun this until it's no longer a draft.


Fix popover dropdown behind dialog

Pull Request Template
Description:
Fixes issue with Popover content being behind Dialog
Tested Platforms:

[x] Web

Affected Apps/Packages:

[packages/reusables/src/components/ui/popover.tsx]

Screenshots:
Before:

After:

@jayala Does one of your dialog subcomponents have a z-50 className? It was removed a while back. If you do, removing the z-50 classNames would also fix this issue.

@jayala Does one of your dialog subcomponents have a z-50 className? It was removed a while back. If you do, removing the z-50 classNames would also fix this issue.

 Thanks for pointing that out. I'll keep in mind regularly updating components


bug: collect fees - check that only position owner can collect fees

Background
The check currently does not exist
Suggested Design
Add check
Acceptance Criteria

add check
add test only owner can claim

Confirm claim incentives has the check and test for this as well


[Bug]: Crane unable to run

Is there an existing issue for this?

[X] I have searched the existing issues

Is there a StackOverflow question about this issue?

[X] I have searched StackOverflow

Is this an issue related to one of the samples?

[X] Yes, this is a specific issue related to this samples repo.

Sample app
Crane
What happened?
A bug happened!
Crane unable to run

Relevant logcat output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@arriolac I think this happened as part of #836. Would you be able to provide a default that ensures people don't have to include a googleMapsKey?


Colouring according to user specified palette

Allow to hand over list of colours and build palette from that

Done for hex_plot in 0.5.0


Include info on how much KSM requested

Where do we get that info @gabrieljaegerde ?

It looks like this would be a three step process:

Query referendumInfo for respective referendum. Below an example for ref 54:

Note this part:
proposal: {       Lookup: {         hash_: 0xa3b697e8cd0f75fb27bf31ee614e72c626d73acffafcd4b43c3b6da81bb0fa27         len: 43       }     }

Query the preimage using the hash and length of step 1:

3: Decode the returned value from step 2. This step I am not fully clear on yet and will get back to you.


Using nixops to update/manage the deployment

Hi there,
thanks for doing this! I've used it to great success, though my setup is a bit different and I'm wondering if there is interest in integrating this?

use nixos-docker-sd-image-builder to produce sd-images
deploy raspberry-pis (and other boards) using the produced sd-images
subsequently use nixops to manage/maintain the boards.

My diff so far wrt to nixos-docker-sd-image-builder isn't that large:
diff --git a/config/rpi4/default.nix b/config/rpi4/default.nix
index 57b7774..7f886ef 100644
--- a/config/rpi4/default.nix
+++ b/config/rpi4/default.nix
@@ -39,7 +39,7 @@
   # so we don't want to provide the installation configuration.nix.
   installer.cloneConfig = false;

-  fileSystems = lib.mkForce {
+  fileSystems = {
       # There is no U-Boot on the Pi 4, thus the firmware partition needs to be mounted as /boot.
       "/boot" = {
           device = "/dev/disk/by-label/FIRMWARE";
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 0485001..bb3887e 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -37,7 +37,7 @@ services:
                          -A config.system.build.sdImage \
                          --option system aarch64-linux \
                          --option sandbox false \
-                         -I nixos-config=/build/config/sd-image.nix \
+                         -I nixos-config=/build/$NIXOS_CONFIG \
                          nixpkgs/nixos/default.nix && \
                        chmod u+w result/sd-image/* && sudo cp result/sd-image/* /build"]
     volumes:
diff --git a/run.sh b/run.sh
index b19ae19..f20d854 100755
--- a/run.sh
+++ b/run.sh
@@ -9,6 +9,9 @@ fi

 echo "detecting architecture..."

+if [ -z "$NIXOS_CONFIG" ]; then
+  export NIXOS_CONFIG=config/sd-image.nix
+fi
 # Image base to use. The trick to allow this to work painlessly on both x86 and AArch64 is just
 # a magic trick which involves prepending `arm64v8/` when building natively.
 export IMAGE_BASE=

It basically drops the mkForce, which makes changing (or even adding additional mount points) pretty hard, and making the nixos-config a bit more configurable.
I then have additional configuration for each platform in boards, and then custom configurations for each deployment in an ops folder, and some nixops wrapper to deploy/update them.
If there is interest, I'd be happy to clean this up some more and open a PR.
One thing I couldn't figure out (lack of docker/docker-compose knowledge basically) is how to launch a docker container that would run an nixOS aarch64 instance one could use as a remote builder (after all one wouldn't want to build on the tiny SCBs directly due to performance, sd card wear, ...) and launching an AWS might not be possible (or feasible due to latency slow up/down link).

Hey there,
wow, that's incredible work you did there! I am absolutely super-interested in this. If it's not too much of an hassle I'd really appreciate a PR.
Also, it would be amazing if you could share more insights about your NixOps setup as I was planning to play with it too!
Regarding your last idea that sounds super-cool! I think something like this might warrant a second repo/docker-compose setup as this one is specifically designed to be a "one off". I'll look into it, thanks again!


Change the default port for the development server

2nd line ticket: https://trello.com/c/cwjzIU8U/1212-stop-search-api-from-using-port-5001
The GDS-managed macOS system includes a VPN tool called Cisco AnyConnect; the latest version of this has a management daemon that starts at boot and listens on port 5001, conflicting with the port for the search api. As we are unable to change the VPN tool, instead we have to change the port for the search api :(
This PR changes the port the search api uses in development mode, in a rather roundabout way, by changing the way that we run our development servers; however I think this method has some benefits.
The Flask CLI since version 1.x is configured using environment variables; FLASK_RUN_PORT is used to change the port that the development server listens on.
The Flask CLI also uses the python-dotenv library to load environment variables from a file .flaskenv, without overriding existing environment variables. We can use this to set defaults for environment variables.
This PR uses these two features to create a new environment variable, DM_SEARCH_API_PORT, which sets the port that the search api listens to. The intention that other apps will use this same environment variable to configure how it talks to the search api when in development mode. This should allow changing the port for the search api across the whole development setup by setting only one environment variable. You can see this in action by reviewing https://github.com/alphagov/digitalmarketplace-api/pull/986.
Note that this PR replaces the use of Flask-Script, our previous way of running the development server, but does not remove it. This can be done at a later date, but I wanted to see first if there were any workflows that are not possible with the new system. The major change from Flask-Script to Flask CLI is that instead of running python application.py <command> you run flask <command>. flask shell should work the same as python application.py shell, flask routes should work the same as python application.py list_routes. We can add the list_external_routes to the Flask CLI at a later date.

I've got a PR for the API to use this, but I'm going to hold off on creating PRs for the other apps until this PR has been reviewed and approved, as it's quite an involved change.

Are we going to leave this line in application.py, for the 'old style' of doing things, or should we change the port number here as well?
manager = init_manager(application, 5001, ['./mappings'])

Are we going to leave this line in application.py, for the 'old style' of doing things, or should we change the port number here as well?
manager = init_manager(application, 5001, ['./mappings'])

I'm not sure... I can't see any reason not to change it (I guess I forgot).


nodejs-7_x: 7.0.0 -> 7.1.0

Motivation for this change
Things done

[x] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@gilligan @NeQuissimus @svanderburg could some of you have a look at this PR?

Straight forward, LGTM


No theme on Version 1.0.0

Hi. I recently downloaded the Version 1.0.0. I just copied the config.ini file from version 0.6.0. Is there something wrong with my setup or it is a bug?

I tried both bootstrap3 theme and default theme. But it seems to be not working

see #777.

BTW. I get these 404 results:

Please check v1.0.1.


[WIP] feat(orchestrator): Add OpenAPI v2 implementations

Depends on #1123

/lgtm
/approve

/lgtm
/approve

@batzionb is taking care of the review.

/lgtm

/approve


Cannot call method 'trim' of null error when included in AppGyver Build Service

I've followed the following guide to configure the PushWoosh PhoneGap 3.0 plugin into my Steroids application: http://docs.appgyver.com/tooling/build-service/plugins/configuring-custom-plugins/
I have forked the plugin and tried a handful of modifications to the plugin.xml file here: https://github.com/griffinfujioka/pushwoosh-phonegap-3.0-plugin
However I am still seeing the following error: Adding plugin from: https://github.com/griffinfujioka/pushwoosh-phonegap-3.0-plugin
Cannot call method 'trim' of null
I have looked through a number of forums for help with this issue and none of the suggested workarounds solve the issue. Here are some forums I've looked at:

http://community.appgyver.com/t/error-when-building-with-pushwoosh-plugin/4909
https://github.com/AppGyver/steroids/issues/888

Can anyone provide any insight into what's going on? It seems like an issue with Plugman to me.

Have you tried contacting AppsGyver support? It you have pull request of what to change in config.xml I would merge that. So far it works perfectly with plugman on Phonegap Build Service... I wish I knew what to fix.

We contacted AppGyver support this morning and are waiting to hear back. I will update this thread if we figure something out.

AppGyver employee here! I found the problem. It's because our wrapper has a different base AndroidManifest.xml file that doesn't include the /manifest/application/activity element path by default. Thus, plugman fails when it tries to iterate through the element at https://github.com/Pushwoosh/pushwoosh-phonegap-3.0-plugin/blob/master/plugin.xml#L60-L65
If you move that whole block to after the next element, i.e. to line 107, it seems to compile fine (didn't test that it works though). Note that you still need to account for https://github.com/AppGyver/steroids/issues/992
Sorry for the confusion, it would've been pretty impossible to debug on your own! :(

Thank you for fixing your side of AppGyver! We have also made the necessary changes and got a build success... about 30 builds later :sweat_smile:

Thanks for your help.
We are able to successfully compile our AppGyver application with the PushWoosh plugin included. However, our iOS build still fails when the PushWoosh plugin is included.
It seems like a compiler issue wherein the CDVViewController class is not recognized.
Could this be a related issue?
Thanks again.
/Users/administrator/app-builder/STAGING/client/Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m:81:35: error: receiver type 'CDVViewController' for instance message is a forward declaration
        PushNotification *pushHandler = [delegate.viewController getCommandInstance:@"PushNotification"];
                                         ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/administrator/app-builder/STAGING/client/Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m:15:
/Users/administrator/app-builder/STAGING/client/AppGyver/Views and Controllers/AppDelegate/AppDelegate.h:13:8: note: forward declaration of class here
@class CDVViewController;
       ^
/Users/administrator/app-builder/STAGING/client/Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m:238:36: error: receiver type 'CDVViewController' for instance message is a forward declaration
                PushNotification *pushHandler = [delegate.viewController getCommandInstance:@"PushNotification"];
                                                 ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/administrator/app-builder/STAGING/client/Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m:15:
/Users/administrator/app-builder/STAGING/client/AppGyver/Views and Controllers/AppDelegate/AppDelegate.h:13:8: note: forward declaration of class here
@class CDVViewController;
       ^
/Users/administrator/app-builder/STAGING/client/Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m:361:35: error: receiver type 'CDVViewController' for instance message is a forward declaration
        PushNotification *pushHandler = [delegate.viewController getCommandInstance:@"PushNotification"];
                                         ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/administrator/app-builder/STAGING/client/Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m:15:
/Users/administrator/app-builder/STAGING/client/AppGyver/Views and Controllers/AppDelegate/AppDelegate.h:13:8: note: forward declaration of class here
@class CDVViewController;
       ^
3 errors generated.

** BUILD FAILED **

The following build commands failed:
	CompileC build/Debug-iphoneos/Build/Intermediates/AppGyver.build/Debug-iphoneos/Scanner\ RC.build/Objects-normal/armv7/PushNotification.o Plugins/com.pushwoosh.plugins.pushwoosh/ios/PushNotification.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Actually it is safe to remove:
https://github.com/Pushwoosh/pushwoosh-phonegap-3.0-plugin/blob/master/plugin.xml#L60-L65
from plugin.xml as Pushwoosh Android SDK does not need these lines anymore.
(Will remove them in the update).
As for iOS:
Plugin assumes default Phonegap AppDelegate structure with:
@property (nonatomic, strong) IBOutlet CDVViewController* viewController;
As it needs CDVViewController to get plugin instance from UIApplication category in order to set up Native iOS push notifications callbacks:
@implementation UIApplication(InternalPushRuntime)

- (NSObject<PushNotificationDelegate> *)getPushwooshDelegate {
	AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
	PushNotification *pushHandler = [delegate.viewController getCommandInstance:@"PushNotification"];
	return pushHandler;
}
@end

Knowing the AppGyver AppDelegate would help to solve this.

Checked this with our dev, the code is fundamentally incompatible. PhoneGap exposes the CDVViewController through the shared application instance, but we have multiple WebViews and thus multiple CDVViewControllers.
However, CDVPlugin does have an accessor for the CDVViewController via the viewController property:
// CDVPlugin.h

@property (nonatomic, weak) UIViewController* viewController; // instance of CDVViewController

So you might be able to rewrite the code to use that one, no guarantees that it'll work though. You should also make sure you're only initializing the plugin in a single WebView to avoid conflicts of multiple plugin instances running at the same time.

Same issue here, it could be very useful to have a compatible version of Pushwoosh since I'm going to drop the service for this reason and it's a pity 'cause Ilike it very much :(

Let me think of other ways to handle that. I'll keep you posted.

We were able to make this plugin work with iOS by adding the following line to PushNotification.h:
#import <Cordova/CDV.h>

This is actually taken from https://github.com/VillageLuxe/pushwoosh-phonegap-3.0-plugin who resolved the issue in the same way. See https://github.com/g-liu/pushwoosh-phonegap-3.0-plugin/commit/0a31ce78376fd5d4a3e00233d15ab1a238b0559f.


Favourite Container slide up on click

Describe the bug

Favourite container should close if someone clicks on window.

Possible solution

It can be fixed with the help of event listeners

@sairish2001 i am working on this issue

@sairish2001  I have requested a PR, can you please review it


console.logs in consuming apps.

In the package installed via npm, there are multiple console.log calls on load and resize.
It would be preferable if these weren't present, or at least off by default.

Thanks for letting me know! I accidentally published some debug console.logs - they should be removed now in the latest patch.


Could u release the weight, current pretrained weight's link is current github repo. Thanks

Thank you for your interest. We plan to update the current github repo after the paper is accepted.


Improve schematics

Add address bus
Add power nets
Move decoupling caps out of sight

Not yet done:

Data bus
GPIO bus

Thanks for the review, Terence.  I've corrected the CE line of the EEPROM now.  I've also connected A13 of the EEPROM to GND as it was originally floating.  It may make sense to connect it to the U7 latch instead like the other high address bits.  There might be a use for some more EEPROM space in the future.
I'm not too happy with the ERC output either.  The warnings regarding the Pi's power pins don't bother me too much, but there are some messages around the address bus near the slot connector which I have not figured out to remove yet.  I generally get rid of all ERC messages as they're very helpful during development.

I'll clean up the PCB warnings and errors after your merge. Those didn't show up in KiCAD 5 but KiCAD 6 is more picky (in a good way). As for A13, there isn't an A13 on the AT28C64B. The schematic shows a larger capacity EPROM as I couldn't find the right 28 series chip in the default library. I should have created a new component but was too excited about getting going on writing firmware and software.

I should have created a new component but was too excited about getting going on writing firmware and software.

I can totally relate!  Let me know when you're done with whatever changes you want to make on the schematic, then I'll add the GPIO bus - That will really be helpful in finding out how things are connected, in particular on a paper printout.
One of the nice advantages of KiCAD 6 is that components embedded in the schematic can easily be edited.  That is how I added the signal names to the slot connector, and it should be easy to remove A13 from the AT28C64B, too.

Thanks Hans. I was only making temporary changes to see what I’d need to do to fix the warnings and errors in the PCB. It looks like only an hour or two of work but I will wait until after your schematic changes are done.

Thanks Hans. I was only making temporary changes to see what I’d need to do to fix the warnings and errors in the PCB. It looks like only an hour or two of work but I will wait until after your schematic changes are done.

Alright - I'll probably get to it tomorrow morning.  Will ping you on this PR.

I've fixed the AT28C64B component (Added WE pin, remove unused address pins) and added the GPIO bus.  I'm done for now.


Respond 404 when accessing non-existing repository path

When accesing nonexisting path (/api/remote/mrrc/junit/asd/) in repo, I get no response. Response 404 would be IMO better.

Hm, that's not intentional...

fixed in: https://github.com/Commonjava/aprox/pull/209


Unhelpful error when CHANGELOG.md does not exist

I was running knope for the first time on an untagged repository and got the following error:
Error: step::io_error

  × I/O error
  ╰─▶ No such file or directory (os error 2)
  help: This occurred during a step that requires reading or writing to... something. The problem could be a network issue or a file permission issue.

I had to enable debug output to get enough context to figure out that it was erroring because CHANGELOG.md did not exist. There's two bugs here, I think:

The error message should, when possible, include the path that does not exist
CHANGELOG.md should be created when it does not already exist

Pretty sure this is just a wrapper on std::io::Error which… rarely has useful info 😬. We should replace that with more specific errors (e.g., FileNotFound) that have useful context.
Creating a changelog if it doesn’t already exist does sound like a useful feature, also. Thanks!

Regarding error paths, this also applies to step::invalid_cargo_toml, where I have multiple Cargo.toml files and no indication which one is the problem.


Unable to lookup GRPC endpoints?

Did the GRPC endpoints change? I'm getting lookup failures with gprc.osmosis-1.technofractal.com and gprc.cosmoshub-4.technofractal.com:
nslookup gprc.osmosis-1.technofractal.com                                                                                [19:50:35]
Server:		<IP_ADDRESS>
Address:	<IP_ADDRESS>#53

** server can't find gprc.osmosis-1.technofractal.com: NXDOMAIN

nslookup gprc.cosmoshub-4.technofractal.com                                                                                [19:50:37]
Server:		<IP_ADDRESS>
Address:	<IP_ADDRESS>#53

** server can't find gprc.cosmoshub-4.technofractal.com: NXDOMAIN

Hi @npow,
We don't offer quality of service of grpc endpoints.
Closing this issue.


The model returned successful but did not contain any response text

VS Code Version:
OS Version:
Logs:

Steps to Reproduce:

it stopped answering  any questions

Resolved


Only works whenever I write.

ALE isn't working as I type but rather it only works every time I write/save the file.
ALEToggle works turning the linter on/off

Read the README carefully. Not all tools support linting while you type.


OllamaModel is not defined

Trying to follow the examples and the readme but got stuck with this error.
api_model = OllamaModel(model_name=model_name, api_url=api_url)
NameError: name 'OllamaModel' is not defined

My code is exactly like your example:
# Import TokenSHAP
from token_shap import *
model_name = "llama3.2:latest"
api_url = "http://localhost:11434"

api_model = OllamaModel(model_name=model_name, api_url=api_url)
splitter = StringSplitter()
token_shap_api = TokenSHAP(api_model, splitter, debug=False)

# Analyze token importance
prompt = "Why is the sky blue?"
df = token_shap_api.analyze(prompt, sampling_ratio=0.0, print_highlight_text=True)

I installed the requirements, tried different python versions, now using 3.9.6. (3.13 throws a different error)
Ollama is running in the background, model is ready and waiting.
what am I missing?
(I'm on a Mac Mini with M2 Pro)

Solved it - it was a related to the file structure.
My main.py was created outside of my my cloned git instance.


Create WebUSB proof of concept

WebUSB support is mixed, and Ledger themselves say that it doesn't work well with Windows and their Nano X.
This task is to create a dummy "sign transaction" button that can be tested to ensure OS support is sufficient. This will not be launched, simply tested from a development build.
Primary compatibility checklist:

[x] Chrome, Nano S, macOS
[x] Chrome, Nano X, macOS
[x] Chrome, Nano S, Windows
[x] Chrome, Nano X, Windows
[ ] Chrome, Nano S, Linux
[ ] Chrome, Nano X, Linux

I am moving this to QA fot testing on Windows

Both Nano X  and Nano S work on Windows 10 with the latest firmware and ledger update.
I got an error with a second Nano S that had the older firmware  but I am guessing this POC doesn't have error handling implemented yet, and that is the expected result.

Good work, @timstackblock. I don't think we need to worry about the older firmware versions.

@kyranjamie should this issue get closed now that QA is done?

Yes, we can.


New package: VisualStructures v0.1.2

Registering package: VisualStructures
Repository: https://github.com/PetrKryslUCSD/VisualStructures.jl
Created by: @PetrKryslUCSD
Version: v0.1.2
Commit: 001102b11f76afcd7263202f83b3d97d22c2b57d
Reviewed by: @PetrKryslUCSD
Reference: https://github.com/PetrKryslUCSD/VisualStructures.jl/commit/001102b11f76afcd7263202f83b3d97d22c2b57d#commitcomment-115267301
Description: Visualization of structures (beams, shells)

Please close. I tried to register this by mistake.


Use buffered IO in mcap conversion

Prior to this commit, conversion of bag to unchunked MCAP was slower than to chunked MCAP, due to the unchunked conversion using unbuffered IO.
Now we use a buffered writer in both cases, and the unchunked conversion is appropriately faster.

Before:
[wyatt@work bags]$ time mcap convert cal_loop.bag cal_loop.mcap --chunked="false"

real    0m5.240s
user    0m1.393s
sys     0m2.462s
[wyatt@work bags]$ time mcap convert cal_loop.bag cal_loop.mcap --compression=none

real    0m3.594s
user    0m2.367s
sys     0m1.252s

after
[wyatt@work bags]$ time mcap convert cal_loop.bag cal_loop.mcap --chunked="false"

real    0m2.121s
user    0m0.930s
sys     0m1.197s
[wyatt@work bags]$ time mcap convert cal_loop.bag cal_loop.mcap --compression=none

real    0m3.585s
user    0m2.412s
sys     0m1.200s


How does the project fulfill to close all remaining positions at market price to avoid overnight risk and hold 100% cash again?

First of all, thanks for the helpful project.
In 3.1 Intraday Trading the paper said, “At the end of the trading day, traders close all remaining positions at market price to avoid overnight risk and hold 100% cash again.”
I’ve studied this project for weeks, but I can’t figure out how the project fulfills the above statement in high frequency trading. I can only find the related code in trademaster/environments/high_frequency_trading/environment.py.  At line 210 self.terminal can turn out to be true only when self.day is greater or equal to 25,000. That is, we have to run 25,000 steps before episode termination.
    def step(self, action):
        # 此处的action应为仓位变化
        normlized_action = action / (self.action_dim - 1)
        position = self.max_holding_number * normlized_action
        # 目前没有future embedding day代表最新一天的信息
        self.terminal = self.day >= len(self.df.index.unique()) - 1
        ............

If I miss something, please correct me. Thanks!

Thanks for your feedback and your attention to this project!
Sorry for the confusion. The high-frequency trading environment is designed for Binance crypto trading, where the trading goes for 24/7. So, there is no such thing as the overnight risk. So far in this environment, we have not implement such things as closing all the position at the end of the day.

Thanks for your replies. Hope to see this implement soon.


Injected DLL can sometimes freeze the game and create zombie processes

System info: Windows 11 Pro for Workstations, 23H2, build number 22631.3374.
Vanilla/Modded: ModEngine2, issue also present in vanilla Elden Ring client
Known affected client version: 1.13.1 (regulation 1.13.2) to 1.14.0 (regulation 1.14.1)
Known affected commits: c21a886b5022592336eb9d58b0711388bd64dfd9 to 9701ce063143137ce75bfe869d639436119fdc61.
Reproducible?: Cannot reliably reproduce.
Details
I built from source like so:

git clone the repository down.
cmake . to generate the SLN files for Visual Studio.
Opening top-level EROverlay.sln, set target to Debug.
Build solution EROverlay.
Copy data to bin/Debug/ output directory.

Without experience dealing with Visual Studio, Windows API, and DLL injection, I opted for print-debugging. Some points of failure has been ruled out (all changes for debugging are non-critical and does not affect core behaviours and logic):

Injector not working

Issue in hooking.

Further print-debugging pointed me towards the issue being in void MainThread() itself. It is unclear which part of the main thread causes freezing. By attaching Visual Studio's debugger to eldenring.exe, I observed that when the game freezes, the debug output is flooded with:
Exception thrown at 0x00007FFB19EB53AC in eldenring.exe: Microsoft C++ exception: _com_error at memory location 0x000000AE992FF5D0.
Exception thrown at 0x00007FFB19EB53AC in eldenring.exe: Microsoft C++ exception: _com_error at memory location 0x000000AE95EFE058.
Exception thrown at 0x00007FFB19EB53AC in eldenring.exe: Microsoft C++ exception: _com_error at memory location 0x000000AE95EFE288.
Exception thrown at 0x00007FFB19EB53AC in eldenring.exe: Microsoft C++ exception: _com_error at memory location 0x000000AE95EFE2F0.
Exception thrown at 0x00007FFB19EB53AC in eldenring.exe: Microsoft C++ exception: _com_error at memory location 0x000000AE95EFEDB0.
...

At this point, if I were to close the frozen game client first, then close the debug console associated with the thread, a zombie eldenring.exe is spawned and can be seen in Task Manager. This zombie process cannot be terminated correctly ("Access Denied"). Doing the opposite (closing the associated debug console then the frozen game client) does not. These zombie processes interferes with the injector, forcing me to patch the injector to reliably inject:
diff --git a/injector/main.c b/injector/main.c
index 771c030..d0830eb 100644
--- a/injector/main.c
+++ b/injector/main.c
@@ -13,7 +13,7 @@ DWORD get_process_by_name(const wchar_t *process_name) {
         return -1;

     do {
-        if (lstrcmpiW(proc_entry.szExeFile, process_name) == 0)
+        if (lstrcmpiW(proc_entry.szExeFile, process_name) == 0 && proc_entry.cntThreads > 10)
             return proc_entry.th32ProcessID;
     } while (Process32NextW(proc_list, &proc_entry));

Note:

No overlay was used. NVIDIA GeForce Experience's and Discord's overlays have been disabled completely.
Changing window mode between Fullscreen, Borderless Window, and Windowed does not meaningfully impact the success rate.

I'd think using injector is not recommended, will update README to notice this later.


fix: prefer #app useHead

Hi :wave:
This PR resolve #250
I've been able to reproduce the issue within the playground as stated in a comment.
⚠ However, i do have a website which is currently in production with nuxt 3.6.5 WITHOUT this issue which makes me quite nervous if it reveals that the issue only happens for a small fractions of users.
So I noticed that useHead() could not injectHead() within the turnstile plugin. Switching the useHead() from #app seems to fix the issue locally for me.
Another note is that useHead from #app and useHead from #imports are not equal, even the body is different.

(maybe is it a nuxt treeshaking or deps optimization issue ?)
Since this issue is quite bizarre, i have no idea on how to reproduce it on e2e tests.
cc @harlan-zw

This is quite bizarre and worth investigating further, thanks for your efforts!

I'm not sure this is the right solution. useHead from #app is deprecated. It looks like this is a bug in unhead or Nuxt which we need to resolve. Reverting on main; we can keep released version as a workaround for now.


how to package this application

i saw the package.json hasn't include electron-builder or electron-packager,i need to package this application turning to be suffix of .exe in windows,there is some easy way to do it,thanks.

oh,chia-blockchain-gui is child project of  chia-blockchain.In chia-blockchain,there is a build_windows.ps1 to build application


imports with as get corrupted

Turns
import {
  setupTest as _setupTest,
  setupRenderingTest as _setupRenderingTest
} from 'ember-qunit';

into
import {
  setupTest,
  setupRenderingTest
} from 'ember-qunit';

That's the only change in the file, the corresponding uses were not touched.

Awesome, thank you for reporting!
@rondale-sc and I noticed this while working on a different codemod (that was using this one as a starting point). I’m fairly certain of the fix...

I just ran into this problem.


Hotkey Customization for Bookmark All Tabs

On Chrome a user can press CTRL+SHIFT+D and an option to bookmark all open tabs appears. On Thorium CTRL+SHIFT+D seems to open a duplicate tab of the current window.
My question and/or suggestion: is it possible to remap CTRL+SHIFT+D on Thorium to have the same functionality as Chrome.
I know this isn't a high priority and you're probably mad busy. If there's a way to do it in :config or something, hit me up and can figure it out from there.
Thanks so much. I'm really enjoying the browser.

It seems that the shortcut key for this function has been modified in the code. I will forward it to Alex to check this issue.
@SpaceAudits @Alex313031

Can we have this on Ubuntu too? I bookmark sites quite often, but opening duplicate tabs has been... never

@SpaceAudits @ho77iday @eltociear I can add a flag to control this, however it won't be until next Thorium release since M130 is almost done and we are releasing that tommorow.


When AY8910 converts the clock, the noise frequency is wrong

ay0.5 to ay 1.7.zip
The noise frequency is somewhat abnormal.

Fixed at 0.8.15.


Is this project dead?

I am planning on using this for something and want to know if it is dead before I get too deep into things.

No, it's not dead, but "master" is not really moving much forward either.
I just blogged about the status here: http://thorsen.pm/perl/2015/08/31/convos-revamped.html

We're having a Convos hackathon this Saturday: https://twitter.com/jhthorsen/status/715582472621330433

@Xe: The next version is really taking form now:

https://github.com/Nordaaker/convos/tree/one-point-oh
https://twitter.com/jhthorsen/status/764532679543062529


Concurrency issue when using over Grpc/Http

I tried version 1.7.2 by using a singleton service for the model...
When sending multiple requests simultaneously, the transcriptions are mixed.
I used a SemaphoreSlim to ensure that requests are handled sequentially, but compared to a similar service running in Python with ctrasnlate2, the times are way worse when having multiple concurrent requests, which is not the case for single requests.
Any advice?

Hello @kaniosm ,
Not sure which service you put in the singleton, but I expect you just stored the WhisperProcessor.
That is wrong  and WhisperProcessor is not supposed to be used by multiple threads concurrently.
However, you can load the model only once (without any additional SemaphoreSlim if you store the
WhisperFactory or the WhisperProcessorBuilder as a singleton and create a new WhisperProcessor for every new inference request.
This way, you'll load the model only once (it is loaded on the WhisperFactory and you can create a lightweight WhisperProcessor for every new (parallel) request.
Hope that makes sense.
Can you, please, confirm if that was the case (that you used the same WhisperProcessor for multiple requests)?

Hi @sandrohanea ,
I'm using a new Singleton service, which loads the model and exposes a method to transcribe the audio.
The exact code can be found below:
public class WhisperService : IDisposable
{
    private GgmlType _modelType;
    private WhisperFactory _whisperFactory;
    private WhisperProcessor _processor;
    private ILogger<WhisperService> _logger;
    private SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);

    public WhisperService(ILogger<WhisperService> logger)
    {
        _logger = logger;
        LogProvider.Instance.OnLog += LogWhisper_OnLog;

        _modelType = GgmlType.LargeV3Turbo;
        var modelName = _modelType.ToString();
        LoadModel().Wait();
        _whisperFactory = WhisperFactory.FromPath(Path.Combine("ML", $"{modelName}.bin"));
        _processor = _whisperFactory.CreateBuilder()
            .WithLanguage("en")
            .WithProbabilities()
            .WithNoContext()
            .Build();
    }

    private void LogWhisper_OnLog(WhisperLogLevel arg1, string? arg2)
    {
        LogLevel logLevel = arg1 switch
        {
            WhisperLogLevel.Info => LogLevel.Information,
            WhisperLogLevel.None => LogLevel.None,
            WhisperLogLevel.Warning => LogLevel.Warning,
            WhisperLogLevel.Error => LogLevel.Error,
            WhisperLogLevel.Debug => LogLevel.Debug,
            WhisperLogLevel.Cont => LogLevel.Critical,
            _ => LogLevel.Error
        };
        _logger.Log(logLevel, arg2);
    }

    private async Task LoadModel()
    {
        var modelName = _modelType.ToString();
        if (!System.IO.File.Exists(Path.Combine("ML", $"{modelName}.bin")))
        {
            using var modelStream = await WhisperGgmlDownloader.GetGgmlModelAsync(_modelType);
            using var fileWriter = System.IO.File.OpenWrite(Path.Combine("ML", $"{modelName}.bin"));
            await modelStream.CopyToAsync(fileWriter);
        }
    }

    public async Task<List<TextSegment>> ProcessAudio(float[] audioData)
    {
        StringBuilder stringBuilder = new StringBuilder();
        var start = DateTime.Now;
        List<TextSegment> textSegments = new List<TextSegment>();
        //await semaphore.WaitAsync();
        await foreach (var result in _processor.ProcessAsync(audioData))
        {
            TextSegment textSegment = new()
            {
                StartTime = Google.Protobuf.WellKnownTypes.Duration.FromTimeSpan(result.Start),
                EndTime = Google.Protobuf.WellKnownTypes.Duration.FromTimeSpan(result.End),
                Text = result.Text,
                Probability = result.Probability,
                MaxProbability = result.MaxProbability,
                MinProbability = result.MinProbability
            };
            textSegments.Add(textSegment);
            //stringBuilder.AppendLine($"{result.Start}->{result.End}: Language:{result.Language}, Text: {result.Text}, Propability: {result.Probability}");
        }
        //semaphore.Release();
        return textSegments;
    }

    public void Dispose()
    {
        _processor.Dispose();
        _whisperFactory.Dispose();
    }
}

I tried calling the build method in the ProcessAudio method but I had the same behaviour, moving the builder in the ProcessAudio was the solution.
It is still much slower than ctraslate2 with Python in multiple concurrent requests though.


Module name: match case?

Would it make sense for dasel's Go module to match the case of the repository?
ie., github.com/TomWright/dasel instead of github.com/tomwright/dasel

I do agree with you but have concerns about the backward compatibility of this change.

Thinking about it, this would be a breaking change regardless of when it's made. I'm open to making the change but this is also the first time it's come up as an issue.
Perhaps I could get some feedback on this issue so I can see what kind of impact it will have.

Are you using dasel as a go import?
Are you referencing the go module from some external place? If so, where?

If I'm going to change the package name, I may well change it to a vanity URL: go.tomwright.me/dasel.
This will protect against these issues in the future.

Closing this as a non-issue right now. Tackling this will cause backwards incompatibility issues.


Core dumped with grpc::InsecureServerCredentials()

What version of gRPC and what language are you using?
CPP grpc version = 1.36.1
What operating system (Linux, Windows,...) and version?
Ubuntu 18.04
What runtime / compiler are you using (e.g. python version or version of gcc)
g++ 7.5
What did you do?
I've run this elsewhere to test and it works, but, in a bigger project to start the rpc server i get a core dumped with this main.
int main () {
    std::string server_address("localhost:50051");

    ServerBuilder builder;

    builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());

    std::unique_ptr<Server> server(builder.BuildAndStart());
    std::cout << "Server listening on " << server_address << std::endl;
    server->Wait();
}

What did you expect to see?
That it works.
What did you see instead?
with valgrind :
==11334== Memcheck, a memory error detector
==11334== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==11334== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==11334== Command: ./bin/ExploreSimServer
==11334==
==11334== Invalid read of size 8
==11334==    at 0x1D11B5: grpc::GrpcLibraryCodegen::GrpcLibraryCodegen(bool) (in /home/matheo/Documents/work/exploresim/build/bin/ExploreSimServer)
==11334==    by 0x1EC4CD: grpc::ServerCredentials::ServerCredentials() (in /home/matheo/Documents/work/exploresim/build/bin/ExploreSimServer)
==11334==    by 0x1D3EC6: grpc::InsecureServerCredentials() (in /home/matheo/Documents/work/exploresim/build/bin/ExploreSimServer)
==11334==    by 0x1CF1E1: main (server_main.cxx:116)
==11334==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==11334==
==11334==
==11334== Process terminating with default action of signal 11 (SIGSEGV)
==11334==  Access not within mapped region at address 0x0
==11334==    at 0x1D11B5: grpc::GrpcLibraryCodegen::GrpcLibraryCodegen(bool) (in /home/matheo/Documents/work/exploresim/build/bin/ExploreSimServer)
==11334==    by 0x1EC4CD: grpc::ServerCredentials::ServerCredentials() (in /home/matheo/Documents/work/exploresim/build/bin/ExploreSimServer)
==11334==    by 0x1D3EC6: grpc::InsecureServerCredentials() (in /home/matheo/Documents/work/exploresim/build/bin/ExploreSimServer)
==11334==    by 0x1CF1E1: main (server_main.cxx:116)
==11334==  If you believe this happened as a result of a stack
==11334==  overflow in your program's main thread (unlikely but
==11334==  possible), you can try to increase the size of the
==11334==  main thread stack using the --main-stacksize= flag.
==11334==  The main thread stack size used in this run was 8388608.
==11334==
==11334== HEAP SUMMARY:
==11334==     in use at exit: 152,164 bytes in 1,177 blocks
==11334==   total heap usage: 2,216 allocs, 1,039 frees, 281,899 bytes allocated
==11334==
==11334== LEAK SUMMARY:
==11334==    definitely lost: 564 bytes in 11 blocks
==11334==    indirectly lost: 9,145 bytes in 154 blocks
==11334==      possibly lost: 0 bytes in 0 blocks
==11334==    still reachable: 142,455 bytes in 1,012 blocks
==11334==         suppressed: 0 bytes in 0 blocks
==11334== Rerun with --leak-check=full to see details of leaked memory
==11334==
==11334== For counts of detected and suppressed errors, rerun with: -v
==11334== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Erreur de segmentation (core dumped)

Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).
See TROUBLESHOOTING.md for how to diagnose problems better.
Anything else we should know about your project / environment?

This looks like trouble initializing gRPC properly. How are you building gRPC?

To build gRPC, i've use this link and this script and i've installed it using cmake
# NOTE: all of gRPC's dependencies need to be already installed
$ cmake ../.. -DgRPC_INSTALL=ON                \
              -DCMAKE_BUILD_TYPE=Release       \
              -DgRPC_ABSL_PROVIDER=module     \
              -DgRPC_CARES_PROVIDER=module    \
              -DgRPC_PROTOBUF_PROVIDER=module \
              -DgRPC_RE2_PROVIDER=module      \
              -DgRPC_SSL_PROVIDER=module      \
              -DgRPC_ZLIB_PROVIDER=module
$ make
$ make install

If you aren't doing anything special, simply doing -
$ mkdir -p cmake/build
$ cd cmake/build
$ cmake ../..
$ make
$ make install

should work for you

It's not clear to me how this is causing the issue that you are seeing though.
In your case, I believe  https://github.com/grpc/grpc/blob/c4b77ca0fe8a27a2f57567e94b81130d257bd54f/include/grpcpp/impl/grpc_library.h#L44 is not being run, which should get called from https://github.com/grpc/grpc/blob/c4b77ca0fe8a27a2f57567e94b81130d257bd54f/src/cpp/server/server_credentials.cc#L25

@veblush for any other insights.

Okay Thanks for your answer ! i'll investigate with this in mind

This doesn't look right. Somehow g_gli_initializer might have not been initialized. You can try call this explicitly in your code to see if it's caused by g_gli_initializer.
static grpc::internal::GrpcLibraryInitializer g_gli_initializer;

Note that this isn't recommended in general because it's an internal api and grpc is designed to work without this, though.

i'll try that, Thanks !

Closing. Please feel free to comment/open a new issue if this issue still exists.


fix some typo in model.py

fix some typo in model.py

hi, guys.
The travis.ci says the build errored not build failed. I have found a few pr get a build error when build cpp_test and build process stoped at "the fox says 42....".
How to deal with this?


Missing dependency: nexmo-notification-channel

Laravel Version: 5.7.6
PHP Version: 7.2.2
Database Driver & Version:

Description:
When running composer update, I get the following error:

laravel/framework 5.7.x-dev requires laravel/nexmo-notification-channel ^1.0 -> no matching package found.

I'm guessing this has something to do with it: https://github.com/laravel/framework/pull/26689
Steps To Reproduce:
composer update

I'm able to update so I think you might need to add the --with-dependencies flag in your case.

@driesvints - Same result.

[Composer\DependencyResolver\SolverProblemsException]
Problem 1
- The requested package laravel/nexmo-notification-channel could not be found in any version, there may be a typo in the package name.
Problem 2
- Installation request for laravel/framework 5.7.* -> satisfiable by laravel/framework[5.7.x-dev].
- laravel/framework 5.7.x-dev requires laravel/nexmo-notification-channel ^1.0 -> no matching package found.
Problem 3
- laravel/framework 5.7.x-dev requires laravel/nexmo-notification-channel ^1.0 -> no matching package found.
- rap2hpoutre/laravel-log-viewer dev-master requires illuminate/support 4.2.|5. -> satisfiable by laravel/framework[5.7.x-dev].
- Installation request for rap2hpoutre/laravel-log-viewer dev-master -> satisfiable by rap2hpoutre/laravel-log-viewer[dev-master].
Potential causes:

A typo in the package name
The package is not available in a stable-enough version according to your minimum-stability setting
see https://getcomposer.org/doc/04-schema.md#minimum-stability for more details.
It's a private package and you forgot to add a custom repository to find it

Read https://getcomposer.org/doc/articles/troubleshooting.md for further common problems.

Though to be fair, this might be more of a composer / packagist issue since I can do this:
composer search laravel/nexmo-notification-channel
and I get
laravel/nexmo-notification-channel Nexmo Notification Channel for laravel.
laravel/nexmo-notification-channel Nexmo Notification Channel for laravel.

Yeah I think we're missing something here. The package can be found on packagist: https://packagist.org/packages/laravel/nexmo-notification-channel#v1.0.1

No. I'm not. I attempted to, just to see if that would work and let me get past the dependency, but it failed.

Tried removing the vendor directory & deleting the composer.lock file and do a composer install?

OK. That did it. Thank you.


x/build: require TryBot-Result+1 or a new Ignore-TryBot label to submit CLs

Once TryBots have failed on a CL, the open comment thread serves to remind people to make them pass before submitting. However, nothing reminds authors/reviewers to run them in the first place. This is particularly annoying if you need a second Googler +1 vote, since https://go.dev/s/needs-review requires a passing TryBot run.
We can remind people that they need to run TryBots, and make it less likely that people will accidentally bypass them, by requiring an explicit vote from either an approver or the TryBots themselves for submission.
Specifically, we would add a submit requirement like label:TryBot-Result=+1 OR label:Ignore-TryBot=+1. The name of the new label is up for bikeshedding.
cc @golang/release

@rsc suggests we could look into blocking on unresolved comments as well.


Create ncstate-univlib-2x1-b-h-2clblk-rgb.png

adding Libraries logo

Kiara and I will merge this pull request when we meet later


visible: false on WindowPlugin Stops Rendering

Bevy version
0.14
Relevant system information
`SystemInfo { os: "Windows 11 Home", kernel: "22635", cpu: "AMD Ryzen 7 5800X3D 8-Core Processor", core_count: "8", memory: "31.9 GiB" }`
`AdapterInfo { name: "NVIDIA GeForce RTX 4060 Ti", vendor: 4318, device: 10243, device_type: DiscreteGpu, driver: "", driver_info: "", backend: Dx12 }`

What you did
Set visible: false on WindowPlugin
What went wrong
Systems added to "Update" no longer trigger.
Using:
fn setup_window(mut window: Query<&mut Window>, frames: Res<FrameCount>) {
    println!("{}", frames.0);
    if frames.0 == 3 {
        window.single_mut().visible = true;
    }
}

If visible is set to false by default, we only see 0 in the console, once. If set to true, we see the frame count as expected for every frame.
Additional information
Also happens on Bevy example found here

Also happens on Bevy example found here

How do you see that issue in Wasm? It's supposed to stay black...

Issue does not appear on the WASM example; the make_visible system runs fine, and all other Update systems in the example function normally.
Perhaps they were trying to say that it appears if you run the example locally?

Can you try just before and after https://github.com/bevyengine/bevy/pull/14023 please?

Perhaps they were trying to say that it appears if you run the example locally?

Correct!

Can you try just before and after https://github.com/bevyengine/bevy/pull/14023 please?

Works with:
bevy = { version = "=0.14.0-rc.4" }
bevy_winit = { version = "=0.14.0-rc.4" }

Does not work with:
bevy = { version = "0.14.0" }
bevy_winit = { version = "0.14.0" }

Little update: this issue can not be reproduced on the current main on Intel macOS and Linux (with or without wayland).
It really does seem to be Windows-specific.


Enable sign and abs math functions

Your idea:
A discord user would like to have the sign and abs functions enabled in our Math parser.  Because I'm not super familiar with that part of the repo, I'll keep it simple:
From user:

Is there a way to include a "sign" function? That is, something like $[sign(3)] that would return "+"

If they need a reason for both abs and sign, it comes from computing any modifier. The abs is needed to get the base number and the sign is needed to apply the sign.

$[StrSign]$[StrAbs]

If the modifier is negative and the abs function isn't available, this would return "--2".

Relevant code:  https://github.com/naturalcrit/homebrewery/blob/master/shared/naturalcrit/markdown.js
Relevant Discord conversation: https://discord.com/channels/113801089362558983/950919905266507806/1252624469114097756

I had a (very) quick stab at this before I had to run out to work this morning, this is the modification to markdown.js that I came up with:
const mathParser = new MathParser({
	operators : {
		// These default to true, but are included to be explicit
		add      : true,
		subtract : true,
		multiply : true,
		divide   : true,
		power    : true,
		round    : true,
		floor    : true,
		ceil     : true,
		abs      : true,

		sin     : false, cos     : false, tan     : false, asin    : false, acos    : false,
		atan    : false, sinh    : false, cosh    : false, tanh    : false, asinh   : false,
		acosh   : false, atanh   : false, sqrt    : false, cbrt    : false, log     : false,
		log2    : false, ln      : false, lg      : false, log10   : false, expm1   : false,
		log1p   : false, trunc   : false, join    : false, sum     : false,
		'-'     : false, '+'     : false, exp     : false, not     : false, length  : false,
		'!'     : false, sign    : false, random  : false, fac     : false, min     : false,
		max     : false, hypot   : false, pyt     : false, pow     : false, atan2   : false,
		'if'    : false, gamma   : false, roundTo : false, map     : false, fold    : false,
		filter  : false, indexOf : false,

		remainder   : false, factorial   : false,
		comparison  : false, concatenate : false,
		logical     : false, assignment  : false,
		array       : false, fndef       : false
	}
});
mathParser.functions.sign = function (a) {
	if(a == 0) return null;
	if(a > 0) {
		return '+';
	} else {
		return '\\-';
	}
};

I was not having any luck getting abs() to actually function in a brew, even after enabling it.

On further thought, I believe we could also (or instead) include a signed function that returns the input value as a string with a +/- prefix:
mathParser.functions.signed = function (a) {
	if(a >= 0) {
		return `+${a}`;
	} else {
		return `\\-${Math.abs(a)}`;
	}
};

(NB: the negative prefix needs to be \\- or else it will be treated as the start of a list when used at the beginning of a line; I have not yet determined any scenarios that require the positive prefix to be handled similarly)

Looks like the variable hasn't been resolved to the value at the time that the function runs:

signed works pretty well in it's current iteration:


err

npm ERR! code ENOENT
npm ERR! syscall lstat
npm ERR! path C:\Users\Dell\AppData\Roaming\npm
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, lstat 'C:\Users\Dell\AppData\Roaming\npm'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in: C:\Users\Dell\AppData\Local\npm-cache_logs\2024-02-17T05_28_40_474Z-debug-0.log

First you verify the all npm are install or not, then you check npm configuration and last if none of the above steps work, you may need to reinstall npm.


x/website: outdated info about workspace and modules?

The Getting Started page talks about setting up your workspace:

Check that Go is installed correctly by setting up a workspace and building a simple program, as follows.
Create your workspace directory, %USERPROFILE%\go. (If you'd like to use a different directory, you will need to set the GOPATH environment variable.)

It links to the "Workspaces" section in How To Write Go Code, which explains a number of things:

Go programmers typically keep all their Go code in a single workspace.

Do they still do that today?

Note that this differs from other programming environments in which every project has a separate workspace and workspaces are closely tied to version control repositories.

Is that still true?
These pages explain how to set up your workspace and GOPATH, etc. - how to create your first program and library in the workspace, how to install packages, and so on.
Modules and go mod are never even mentioned.
The Go 1.11 release notes stated:

Using modules, developers are no longer confined to working inside GOPATH, version dependency information is explicit yet lightweight, and builds are more reliable and reproducible.

That sounds great. Why isn't this the prescribed way to get started?
I found a useful introduction to go modules on this website, but (beyond the 1.11 announcement post) I haven't really seen modules mentioned or promoted anywhere on the official website.
With support for modules proper, it seems like this should be the preferred approach - the role of the global workspace should be reduced to global installations of tools and so forth, as is the case with most common package managers for other languages? (npm, etc.)
When the official documentation tells me that Go programmers "typically" keep all their Go code in a single workspace, that makes me feel insecure about even learning about modules.
Is a single, global workspace still the preferred/recommended approach?
Or why aren't you promoting the use of modules?

Thanks for reporting this.

but (beyond the 1.11 announcement post) I haven't really seen modules mentioned or promoted anywhere on the official website.

Not completely true: There is a 4-parts series of posts about Go Modules on the project's website (first instalment: https://blog.golang.org/using-go-modules, with link to the other three).
Obviously the fact that you didn't know this suggests there's a "discoverability" issue somewhere.
Besides this, it's true that much of the documentation still needs to be updated to reflect changes in the way Go code is written after the introduction of modules.

A general tracking issue is #33637 (doc: restructure module documentation)
An issue specifically about updating "How to Write Go Code" is #28215 (website: Update "How to Write Go Code" with go modules)

A rewrite of "How to write Go code" is in progress at CL 199417; and you can follow the changes linked at the bottom in #33637 for an overview of the general progress being made.
Overall, the questions you raise here are valid, but the work needed to update the documentation is already being tracked in other issues (#33637 is the main one), so I think we can close this thread in favour of the older ones.

R. Schultz
I've seen Golang sub-repositories installed in /usr/share/gocode.
A. Donizetti
Any resolution regarding (as I framed it) discouraging editing by non-contributors of certain wiki pages?
I noticed the Modules page has two edits this November.

/cc @jayconrod @jadekler

We should do a pass through the installation instructions and any other new user docs and updating things for modules. Just a quick note on documentation in progress though:
@jadekler has an open CL to rewrite How to Write Go Code for modules. See CL 199417. That should land pretty soon.
I'm working on module reference documentation (#33637), which will be available at golang.org/ref/modules, linked from golang.org/doc. That will launch with Go 1.14 and  should supercede a lot of existing reference information, both on the wiki and in go help (though neither will disappear in the short term).
@jadekler and @tbpg have written a series of blog posts on modules, linked from golang.org/doc/#Modules. These are intended to be introductory guides.

The OP mentioned "Workspaces" and J. Conrad cites a code.html rewrite.

For convenience, add the workspace's bin subdirectory to your PATH:

Maybe - though this is off topic - the following could be added (beneath the preceding quote).
Plan 9 configuration is usually done at the beginning of $home/lib/profile.
bind -a $home/go/bin /bin
For PowerShell/PowerShell ISE add for example $Env:Path += ";~\go\bin" in any of these.
profile.ps1
Microsoft.PowerShell_profile.ps1
Microsoft.PowerShellISE_profile.ps1
NB: I don't have access to a Windows 10 machine presently so I'll have to test the PS line.

there's no anchor #Modules
under https://golang.org/doc/#articles
could be added in the Modules section
Go Modules: v2 and Beyond

could be added in the Modules section
Go Modules: v2 and Beyond

That has already been done in CL 209038, and you can see it on tip.golang.org. It will show up on golang.org the next time the website is deployed.

The doc now promotes modules as the primary workflow.


Move cedar-14 to its own directory

Three commits:
1) Move cedar-14 to its own directory
For parity with Heroku-16.
2) Add a .dockerignore for cedar-14
This prevents files that are only used (or generated) by the cedar-14 Vagrant environment from being included in the build context sent to the Docker daemon.
3) Fix broken push-stack example in README
Previously the access key/secret were passed as arguments to push-stack rather than setting the environment variables.

Ah one question - are the other scripts in the bin/ directory cedar-14 specific too? If so I'll move them as well - it just wasn't clear (see https://github.com/heroku/stack-images/pull/63#issuecomment-312679143).

Everything in the root bin directory is only for Cedar-14 so I think my preference would be moving that to a cedar-14 directory and keeping a bin directory inside each stack for consistency (until we can retire Cedar-14).

I agree - I'll update the PR.
Would you like me to move the tmp/log/ directory from the repo root, to within the cedar-14/ directory as well?

Please do and probably also move the .gitignore file and the Vagrantfile which are only relevant for Cedar-14.

PR updated, however the Travis run didn't trigger.
I spoke to Travis support and they say there is a bug with repos using the new GitHub code owners feature that stops the jobs being scheduled for PRs (they still seem to work for branches, so a run will be triggered once this merges). For now, here's a passing Travis run for this from my fork:
https://travis-ci.org/edmorley/stack-images/builds/254959326
I've moved tmp/log/* but left the Vagrantfile where it is, since:

Vagrant hardcodes paths in the metadata files in .vagrant/ so things would break for any existing VMs.
Both the cedar-14 scripts and the new docker-build.sh script need stack-helpers.sh, and moving the Vagrantfile would change the Vagrant root, making the root bin/ directory inaccessible from the cedar-14 scripts.
...however I've added a comment to the file to make it clearer that it's used by cedar-14 only.

Sometime soon I'll also open a PR to update INSTALL.md with Heroku-16 build instructions.

Note: After this merges, users that have an existing Vagrant instance must run vagrant reload (which re-reads Vagrantfile and reboots the VM), to pick up the updated shared folder location.

Unless you disagree strongly, I would still suggest moving the .gitignore file and the Vagrantfile (especially since the change already breaks Vagrant machines slightly). Internally, we dispose the Vagrant machines after each stack image build and I think most customers have picked up our Docker images by now.

Makes sense - done. I also added two more commits for some other cleanup - see the multi-line commit messages for more details.
New Travis run (from my fork due to Travis/Github bug mentioned above), here:
https://travis-ci.org/edmorley/stack-images/builds/255754026
In addition, I tested the Vagrant side locally by following the revised INSTALL.md instructions (I used fake credentials so the push-stack step failed with a permissions error, but everything worked up to that point). I then ran ./bin/docker-build.sh cedar-14 from the host to verify that the .dockerignore correctly excluded the generated tmp/log/ files.

GitHub appears to be broken:
% git ls-remote git://github.com/heroku/stack-images.git | grep 'refs/pull/66/'
6607a5789b1d33097d8c30be8106f92ba1304b18        refs/pull/66/head
86c4b69024f9d80107af53cee14442f809958244        refs/pull/66/merge

However, the current HEAD commit of this branch is db5d085a3711ce7177f768cc865b05a46bba2fdb.
I contacted their support. Please don't make any changes to this pull request until I hear back.

Huh that's strange - thank you for reporting with them, I'll leave the PR as is.

I contacted their support. Please don't make any changes to this pull request until I hear back.

@tt, did you hear anything back?

Travis notified me that the GitHub API issues around repos that have the code-owners feature enabled have now been fixed, so I've force pushed the PR to trigger a new Travis run - since GitHub have now had 18 days to look into the revision deviation issue (it may even be due to the same bug).
The HEAD revision now matches that returned by:
git ls-remote git://github.com/heroku/stack-images.git | grep 'refs/pull/66/'

I heard back that they'd look into it but nothing since. I'm merging this and hopefully it was a one-off on their end.


Minor cleanups

This PR contains a few cleanups for stuff which I stumbled over yesterday:

Removal of is_functional for communication parameters
Make DiagLayer.protocols a cached property

Andreas Lauser<EMAIL_ADDRESS>on behalf of MBition GmbH.
Provider Information

Removal of is_functional for communication parameters

Why?

Removal of is_functional for communication parameters

Why?

mainly because DIAG-SERVICE tags may have a COMPARAM-REFS sub-element  and it is completely impossible to determine if the parameter is supposed to be "functional" or not. besides that, I'm not sure what it even means for a communication parameter to be functional, and finally, there were no in-tree users or tests...

Removal of is_functional for communication parameters

Why?

mainly because DIAG-SERVICE tags may have a COMPARAM-REFS sub-element and it is completely impossible to determine if the parameter is supposed to be "functional" or not. besides that, I'm not sure what it even means for a communication parameter to be functional, and finally, there were no in-tree users or tests...

@dmholtz was the one who introduced the is_functional, maybe he can shed some light on the topic?

cool! let's get this merged then!


Consider adding a step for inferring excluded features for a cohort

Consider adding a step into the Cohort ETL pipeline that will infer exclusion of a phenotypic feature if not explicitly present in the phenopacket.
The inference must account for the other phenotypic features of the patient to ensure no logical inconsistencies are introduced.

Is this covered in the Heuristic Strategy? Or could it be added to it?
@pnrobinson @ielis

No, it is not, but this is a low-priority, in my opinion. Let's leave it for now.

We now have this, it is probably not a function that should be used by default, but it works.


Add test_id for virtctl dry-run testing

Signed-off-by: Zhe Peng<EMAIL_ADDRESS>
What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

/retest

/approve

Is this a duplicate of #6876?

Yes, this duplicate of #6876, I will close this one, sorry.