New night's black agents character sheet

Changes / Comments
I created a New night's black agents character sheet with "personnel file" look & feel
There are 3 buttons :

one to choose if you want to make your rolls public or private
one for tests skill tests, all tests are 1d6+your spending, so there is a pop up asking how much you want to spend
one for attack rolls that takes into account the hit threshold of you target and calculates the critical strike

I tried to respect the Building Character Sheets standards to the best of my abilities.
Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[ ] Does the pull request title have the sheet name(s)? Include each sheet name.
[ ] Is this a bug fix?
[ ] Does this add functional enhancements (new features or extending existing features) ?
[ ] Does this add or change functional aesthetics (such as layout or color scheme) ?
[ ] If changing or removing attributes, what steps have you taken, if any, to preserve player data ?
[x] If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

I also created the french translation (since i'm French) so you will find translation/_en.json and translation/_fr.json

Greetings,
I'm going to close this Pull Request as the changes have not been implemented in the last month. When you've removed the <table> layout feel free to submit a new one.
Thank you,
Cassie


Not correctly resolving subTypeName for polymorphism if not using @JsonTypeName

I am using these settings on my base class:
@JsonTypeInfo(include=JsonTypeInfo.As.PROPERTY, use=JsonTypeInfo.Id.NAME,property="type")
I am getting this returned as the properties if I don't set a @JsonTypeName:
"properties" : {         "type" : {           "type" : "string",           "enum" : [ null ],           "default" : null,           "options" : {             "hidden" : true           }         }
When I do set a @JsonTypeName("User") like so I get what I expect:
"properties" : {         "type" : {           "type" : "string",           "enum" : [ "User" ],           "default" : "User",           "options" : {             "hidden" : true           }         }

To figure this out, you have to show which classes you have and how they extend each other.
I also need the complete generated schema.
I guess it would be better if you created a test-case showing the problem.


Namadillo Status Indicator conflates RPC and Indexer status

The Status Indicator label says "Fully synced" when the RPC node is caught up, but the height and epoch are taken from the Namada Indexer, which can be inactive or catching up while the RPC is still running and caught up.

Hi @Rigorously , thanks for your report :)
Do you mind sharing the RPC url and the Indexer url that you used on this test?
I'm trying to simulate it using a local chain and faking an Indexer url using the same RPC url (because both has the /health endpoint returning 200) but the Status Indicator is red with the message Error syncing

This was observed with Housefire.
https://interface.knowable.run
https://indexer.knowable.run:443
https://rpc.knowable.run:443
Knowable's indexer was lagging behind, while their RPC was up-to-date. That caused transactions to succeed, but not updating the interface. See also the report on Discord starting here: https://discord.com/channels/833618405537218590/1197556681366831134/1292088500677509150

Thanks for the details
I believe we'll need to query epoch from both endpoints, the indexer and the rpc, then compare them to confirm if they are fully synced


Unable to use diff editing with local instsance of qwen2.5-coder-32b-instruct

Issue
I am receiving the following error when attempting to use my local Llama instance of qwen2.5-coder-32b-instruct. (Ubuntu 24.04) When starting aider and pointing to my ollama instance with the following command

aider --model ollama/qwen2.5-coder-32b-instruct

I get the following errors:

OllamaError: Error getting model info for ollama/qwen2.5-coder-32b-instruct. Set Ollama API Base via OLLAMA_API_BASE environment variable. Error: Client error '404 Not Found' for url 'http://<IP_ADDRESS>:11434/api/show'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
Warning for ollama/qwen2.5-coder-32b-instruct: Unknown context window size and costs, using sane defaults.
Did you mean one of these?

ollama/qwen2.5-coder-32b-instruct
You can skip this check with --no-show-model-warnings

and the export for OLLAMA_API_BASE is also correctly configured despite the aforementioned aider error message
My ollama instance is correctly configured as far as I can tell, as I am able to go to my ollama api with the following curl command to obtain info about the hosted model,

curl http://localhost:11434/api/show -d '{
"name": "qwen2.5-coder-32b-instruct"
}'

This produces:
{"modelfile":"# Modelfile generated by "ollama show"\n# To build a new Modelfile based on this, replace FROM with:\n# FROM qwen2.5-coder-32b-instruct:latest\n\nFROM /usr/share/ollama/.ollama/models/blobs/sha256-5ebb70cfdbc4780a34142393418f9f570a82b0650ee4f9031c2f588a4379067c\nTEMPLATE {{ .Prompt }}\nPARAMETER repeat_penalty 1.2\nPARAMETER temperature 0.7\nPARAMETER top_k 50\nPARAMETER top_p 0.9\n","parameters":"repeat_penalty                 1.2\ntemperature                    0.7\ntop_k                          50\ntop_p                          0.9","template":"{{ .Prompt }}" etc etc.
It seems that Aider is unable to properly detect this model when loaded with ollama even though it seems aware of the correct pathing to ollama. (Warning for ollama/qwen2.5-coder-32b-instruct),  however it is both detected properly and works with diff edits when loading with openrouter's implementation

aider --model openrouter/qwen/qwen-2.5-coder-32b-instruct --browser

I attempted to create a custom json to point to my local ollama instance with test settings but this produces the exact same warnings and does not seem to recognize the json file at all:
cat .aider.model.metadata.json
{
"ollama/qwen2.5-coder-32b-instruct": {
"max_tokens": 128000,
"max_input_tokens": 128000,
"max_output_tokens": 8000,
"input_cost_per_token": 0.000000,
"output_cost_per_token": 0.000000,
"litellm_provider": "ollama",
"mode": "chat",
"edit_format": "diff"
}
}
Am I doing something wrong here? At best the errors I am receiving are confusing and contradictory :
"Warning for ollama/qwen2.5-coder-32b-instruct: Unknown context window size and costs, using sane defaults.
Did you mean one of these?

ollama/qwen2.5-coder-32b-instruct"

This is the output of "ollama list" on my system:
$ ollama list
NAME                                 ID              SIZE      MODIFIED
qwen2.5-coder-32b-instruct:latest    3849b64e2cbf    22 GB     About an hour ago
I assume diff edits are not working due to aider using "sane defaults", as I can't think of anything else on my end that would be causing this difference in behavior with edits (local ollama instance refuses diff edits, while openrouters works correctly and changes files with aiders' diff edit feature.)
Version and model info
$ aider --version
aider 0.63.0
ollama/qwen2.5-coder-32b-instruct:latest

Thanks for trying aider and filing this issue.
The lack of context window is due to a litellm bug which should be fixed soon.
You can safely ignore this warning as explained in the docs url it provided.
https://aider.chat/docs/troubleshooting/warnings.html

Thank you for the prompt response Paul! I was wondering, would these warnings disable the diff edit feature locally for any reason? I am trying to, for my test example, add an html comment to a test webpage. using aider with openrouter immediately tries a diff edit, whereas my local instance absolutely refuses. This is even after directly specifying --edit-format diff in the aider launch command:

aider --model ollama/qwen2.5-coder-32b-instruct --edit-format diff --browser
no matter the prompt aider simply refuses to use diff edits with my local model and I am not sure what would be causing the difference.

In what way are you seeing diff edit format being "disabled"? It would help if you could share all the "announce" lines that print when aider launches.
You can pick a specific edit format with --edit-format diff.

additionally, the local model , regardless of choosing whole, diff or udiff it provides accurate information but doesn't attempt to directly modify the file regardless of edit mode. Whereas Openrouter consistently does. Not sure if this is just the particular version of the model that I am using that is incompatible with Aider's prompting where openrouter's is, but I am fairly certain the models are the same.

Aider is correctly launching in diff mode:
Model: ollama/qwen2.5-coder-32b-instruct:latest with diff edit format

But the LLM is not following the system prompt?
Have you added any files to the chat? Have you used aider before?
These links may be helpful:
https://aider.chat/docs/usage.html
https://aider.chat/docs/usage/tips.html
https://aider.chat/docs/troubleshooting/edit-errors.html

It is likely that the local version of the model is quantized and may not be capable of working with diff edit format. You can try --edit-format whole.

You know what, you're right. I used a quantized version (q5_k_s) because i couldnt seem to pull qwen2.5-coder-32b-instruct directly using ollama, just qwen2.5-coder-32b as instruct didn't seem to be in their manifest without quant or fp16 options. Wondering how you got your local model working? Somewhat new to ollama and aider apologies for the ignorance!
--edit-format whole seems to do the same thing with my local model, but if diff edits are not compatible with quantized models in general that would make sense.

I am experiencing the same problem with Qwen2.5-coder:32B and Ollama, where aider does not save any file, just talks about it. I thought it was me, and I was going nuts :)

@tomasmcm this worked for me as well! Thanks!
One thing I noticed from the replies from my quantized version of the model is the bolded text below that's included with all responses from the model. it does now correctly make the edit to my test file successfully.
please add a comment to the top of my index.html file that says "test comment"

Understood. Please proceed.

###<|im_start|>aso:** Sure, here is the SEARCH/REPLACE block to add a comment to the top of client/index.html:

client/index.html

<<<<<<< SEARCH
<!DOCTYPE html>
=======
<!-- test comment -->
<!DOCTYPE html>
>>>>>>> REPLACE

To view the updated content in your browser, you can run:

xdg-open client/index.html

I can also confirm that it worked for me @tomasmcm ! Now if I can figure out a way to use less VRAM... Do you think 8k context will be ok anyway?

First of all, I can confirm that @tomasmcm solution works. Thanks!

I can also confirm that it worked for me @tomasmcm ! Now if I can figure out a way to use less VRAM... Do you think 8k context will be ok anyway?

I'm not a pro. I think for less vram we have to use a smaller parameter size. For me the 7b runs quite slowly but a lot faster than the 32b. The 7b fits into my 8GB vram. So I did the same thing with qwen2.5-coder:7b. It's not as fast as a cloud solution, in exchange its for free and without token limits

I praised the solution and few minutes ago the 7b solution told me something about the search and replace rules :-D
                           Explanation of Changes:
Explanation of Changes:
1. xyz
2. xyz

These changes should make the code easier to read and maintain.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                          SEARCH/REPLACE block Rules:                                                                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Every SEARCH/REPLACE block must use this format:

 1 The FULL file path alone on a line, verbatim. No bold asterisks, no quotes around it, no escaping of characters, etc.
 2 The opening fence and code language, eg: '''python
 3 The start of search block: <<<<<<< SEARCH
 4 A contiguous chunk of lines to search for in the existing source code
 5 The dividing line: =======
 6 The lines to replace into the source code
 7 The end of the replace block: >>>>>>> REPLACE
 8 The closing fence: '''

Use the FULL file path, as shown to you by the user.

Every SEARCH section must EXACTLY MATCH the existing file content, character for character, including all comments, docstrings, etc. If the file contains code or other data wrapped/escaped in json/xml/quotes or
other containers, you need to propose edits to the literal contents of the file, including the container markup.

SEARCH/REPLACE blocks will only replace the first match occurrence. Including multiple unique SEARCH/REPLACE blocks if needed. Include enough lines in each SEARCH section to uniquely match each set of lines that
need to change.

[...cut...]

ONLY EVER RETURN CODE IN A SEARCH/REPLACE BLOCK!```

now that we got this working, I think the relevant question for @paul-gauthier is if Aider should take the max_tokens from .aider.model.metadata.json and send it in options.num_ctx when making a request to http://localhost:11434/api/generate so that the model is loaded with the context window we expect.
(see example here: https://github.com/ollama/ollama/blob/main/docs/api.md#generate-request-with-options)
Or if Aider users are expected to sort out context window configurations in ollama manually.
Either way we could update https://aider.chat/docs/llms/ollama.html with some instructions on how to do it.

I'd be happy to add some docs if you can propose what should be added?

I figured out why it's not getting the model data. It's because it relies on the litellm/llms/ollama.py function get_model_info
If I edit this file to make it like this:
    def get_model_info(self, model: str) -> ModelInfo:
        """
        curl http://localhost:11434/api/show -d '{
          "name": "mistral"
        }'
        """
        api_base = get_secret_str("OLLAMA_API_BASE") or "http://localhost:11434"

        try:
            plain_model = model.replace("ollama/", "")
            response = litellm.module_level_client.post(
                url=f"{api_base}/api/show",
                json={"name": plain_model},
            )
        except Exception as e:
            raise Exception(
                f"OllamaError: Error getting model info for {model} using {plain_model}. Set Ollama API Base via `OLLAMA_API_BASE` environment variable. Error: {e}"
            )

at the start of the function, it will work to populate the model_info as it's supposed to.
What would you suggest to try to update the litellm project to get this (or a better version of this) change in?

Sorry, I'm not sure what bug you are trying to fix. It sounds like one which is already fixed in v0.63.2.
https://github.com/BerriAI/litellm/issues/6703
https://github.com/Aider-AI/aider/issues/2318

That's what it said, but it wasn't working for me. I'll try removing my models json and retry. When I did what I said, it was working as I would expect. Before I did that, it did not, even with v0.63.2

I'd be happy to add some docs if you can propose what should be added?

I think the final goal should be to be able to set the context size for a specific Ollama model in a config setting, which then will be sent to ollama with options.num_ctx.
@tomasmcm suggested a great way by using the max_tokens from the model metadata config.
Would this introduce any weird behavior and/or inconsistency with other settings. I usually don't like to add an additional "meaning" to a variable, where now max_tokens does not imply "we will ask the LLM to use this limit" but only for internal purposes, but I might be wrong since I haven't checked the code yet.
If we consider this almost-breaking change as too much, then we could just add another property (like "ollama_num_ctx")

Aider's max_tokens ModelSetting is indeed sent to the model. If this will cause the desired effect in the Ollama server, then that sounds like the solution.
Aider never enforces any token limits itself. It responds to token limit responses from the API provider. Ollama in this case.

@paul-gauthier You can see here https://github.com/BerriAI/litellm/blob/main/litellm/llms/ollama_chat.py that max_tokens is mapped to num_predict meaning the max tokens to be returned.
num_ctx is a separate option in ollama that controls the model context window and needs to be set explicitly in LiteLLM using that OllamaChatConfig

You can set the Ollama server's context window with a .aider.model.settings.yml file like this:
- name: aider/extra_params
  extra_params:
    num_ctx: 65536

That uses the special model name aider/extra_params to set it for all models. You should probably use a specific model name like:
- name: ollama/qwen2.5-coder:32b-instruct-fp16
  extra_params:
    num_ctx: 65536

The main branch of aider now sets num_ctx=8192 by default for ollama models. That's still small, but it's much better than 2k.
The change is available in the main branch. You can get it by installing the latest version from github:
aider --install-main-branch

# or...

python -m pip install --upgrade --upgrade-strategy only-if-needed git+https://github.com/Aider-AI/aider.git

If you have a chance to try it, let me know if it works better for you.

this is perfect! And I see the docs are also updated with a note on how to configure the context size (https://aider.chat/docs/llms/ollama.html)
I'll try it soon 🤞


Removed potential security leak

It's not recommended to send mysqli-error details to the browser because it may reveal some credentials etc.
What was done:

Removed potential leak
Added error-log for better clarity

How to test:

Review Changeset
Checkout PR branch
Test form usage when MySQL is down (should show error details only in logs)

Reviewed & tested!


Do not close sidebar on clicking a previously viewed link

Type

[ ] Bug fix
[ ] New feature
[x] Improvement to existing feature

Related JIRA Issue(s)
https://www.ebi.ac.uk/panda/jira/browse/ENSWBSITES-1338
Description
Based on review from UX team we decided not to close the sidebar on clicking a previously viewed link, same as search or downloads.
Deployment URL
http://updated-previously-viewed-behavior.review.ensembl.org
Views affected
GB and EV
Other effects
NA

[ ] I have checked any requirements for Google Analytics
[ ] I have created any required tests
[ ] The PR has as its final commit a WASM/JS update commit if any Rust files were updated.

Possible complications
NA

From code review on Wednesday, Sept 22.

There's uncertainty whether reordering of the links to always show last viewed entity first is a good idea. Not sure there's a hard decision on this yet. Don't know if the sorting changes (if any) should be made in this PR.

From code review on Wednesday, Sept 22.

There's uncertainty whether reordering of the links to always show last viewed entity first is a good idea. Not sure there's a hard decision on this yet. Don't know if the sorting changes (if any) should be made in this PR.

I will check with Andrea on this.

decided to do the sorting on a different ticket. QA already done, so just approval needed.


How to capture var values for third-party library styling?

I use highlightjs in a project and I want to use a different themes depending on a what a var is set to. Binding it to a theme makes sense to me -- i.e I could do it other ways but this seems like the right coupling.
I was wondering if you all head a way of grabbing a var value?
I ended up writing this garbage to set the theme, which gets the job done (though it isn't reactive, but I guess I could add a mutation observer), but is there a better way? useVarValue() would be nice.
    const themeVar = theme.editorTheme.slice(4, -1); // gets the inner --varname
    // hack to get themes in here. I need to find a better way in the future.
    useEffect(() => {
        if (!selfElem.current) return
        const value = getComputedStyle(selfElem.current).getPropertyValue(themeVar)
        setThemeValue(value)
    }, [themeVar, setThemeValue])

FWIW I wrote basically the same code today:
  const [color, setColor] = useState<Color | null>(null);

  const once = useRef(false);
  useEffect(() => {
    if (!once.current) {
      once.current = true;
      return;
    }
    if (color !== null) {
      document.body.style.setProperty(unvar(vars.colorTrim), colorMap[color]);
    }
  }, [color]);

// unvar removes the var() function from a string.
export function unvar(str: string): string {
  return str.replace(/var\(([^)]+)\)/g, "$1");
}

There is a pull request to allow defining stylex variables with literal names. Would that solve your problem?
https://github.com/facebook/stylex/pull/584


Code point change for portals location

As discussed these PRs will receive a bit of a tidy-up so just marking as draft.


/usr/include/camera_info_manager/camera_info_manager.h

hi,
Linux pi-desktop 5.15.0-1015-raspi #17-Ubuntu SMP PREEMPT Mon Sep 12 13:14:51 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
ubuntu 22.04
ros2 humble
In CameraNode.ccp, I have to add :
#include <sensor_msgs/msg/camera_info.hpp>,
the header is in source /opt/ros/humble/include  otherwise th header /usr/include/sensor_msgs is used and CameraInfo is not member of sensor_msgs/msg but sensor_msg.
But, I still have errors with colcon build
Starting >>> camera_ros
[Processing: camera_ros]
--- stderr: camera_ros
/home/pi/mes_ros2/src/camera_ros/src/CameraNode.cpp: In constructor ‘camera::CameraNode::CameraNode(const rclcpp::NodeOptions&)’:
/home/pi/mes_ros2/src/camera_ros/src/CameraNode.cpp:176:87: error: no matching function for call to ‘camera_info_manager::CameraInfoManager::CameraInfoManager(camera::CameraNode*)’
  176 | onst rclcpp::NodeOptions &options) : Node("camera", options), cim(this)
      |                                                               ^~~~~~~~~
In file included from /home/pi/mes_ros2/src/camera_ros/src/CameraNode.cpp:6:
/usr/include/camera_info_manager/camera_info_manager.h:192:3: note: candidate: ‘camera_info_manager::CameraInfoManager::CameraInfoManager(ros::NodeHandle, const string&, const string&)’
  192 |   CameraInfoManager(ros::NodeHandle nh,
      |   ^~~~~~~~~~~~~~~~~
/usr/include/camera_info_manager/camera_info_manager.h:192:37: note:   no known conversion for argument 1 from ‘camera::CameraNode*’ to ‘ros::NodeHandle’
  192 |   CameraInfoManager(ros::NodeHandle nh,
      |                     ~~~~~~~~~~~~~~~~^~
/home/pi/mes_ros2/src/camera_ros/src/CameraNode.cpp: In member function ‘void camera::CameraNode::requestComplete(libcamera::Request*)’:
/home/pi/mes_ros2/src/camera_ros/src/CameraNode.cpp:530:56: error: conversion from ‘sensor_msgs::CameraInfo’ {aka ‘sensor_msgs::CameraInfo_<std::allocator<void> >’} to non-scalar type ‘sensor_msgs::msg::CameraInfo’ {aka ‘sensor_msgs::msg::CameraInfo_<std::allocator<void> >’} requested
  530 |     sensor_msgs::msg::CameraInfo ci = cim.getCameraInfo();
      |                                       ~~~~~~~~~~~~~~~~~^~
gmake[2]: *** [CMakeFiles/camera_component.dir/build.make:76 : CMakeFiles/camera_component.dir/src/CameraNode.cpp.o] Erreur 1
gmake[1]: *** [CMakeFiles/Makefile2:248 : CMakeFiles/camera_component.dir/all] Erreur 2
gmake: *** [Makefile:146 : all] Erreur 2
---
Failed   <<< camera_ros [33.2s, exited with code 2]

Summary: 0 packages finished [34.0s]
  1 package failed: camera_ros
  1 package had stderr output: camera_ros

`

You are probably mixing ROS2 from the official repo with ROS1 from the Ubuntu repo. The headers (and all files in general) from official ROS distributions are installed under /opt/ros/humble/$ROS_DISTRO. The header /usr/include/camera_info_manager/camera_info_manager.h is installed by package libcamera-info-manager-dev.
If you install multiple packages that provide the same header and those are also in the search path, then the compiler will not know which header to use. You have to uninstall libcamera-info-manager-dev or otherwise make sure that /usr/include/camera_info_manager is not in the search path.

hi,
thank you very much.
after some changes on an other SSD  with ubuntu 22.;4 anr ros2 humble more clean
pi@pi-desktop:~/mes_ros2$ colcon build --packages-select camera_ros
Starting >>> camera_ros
[Processing: camera_ros]
[Processing: camera_ros]
Finished <<< camera_ros [1min 5s]

Summary: 1 package finished [1min 6s]
pi@pi-desktop:~/mes_ros2$ . install/setup.bash

pi@pi-desktop:~/mes_ros2$ ros2 run camera_ros  camera_node
[0:31:35.081577843] [17657]  WARN IPAManager ipa_manager.cpp:113 Public key not valid
[0:31:35.098176560] [17657]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3910-0a4d1b8d
[0:31:35.190875574] [17671]  INFO RPI raspberrypi.cpp:1374 Registered camera /base/soc/i2c0mux/i2c@1/ov5647@36 to Unicam device /dev/media1 and ISP device /dev/media2
>> cameras:
0: ov5647 (/base/soc/i2c0mux/i2c@1/ov5647@36)
>> stream configurations:
0: 1920x1080-YUV420
  - Pixelformat: NV21 (64x64 - 2592x1944)
    Sizes:
     - 160x120
     - 240x160
     - 320x240
     - 400x240
     - 480x320
     - 640x360
     - 640x480
     - 720x480
     - 768x480
     - 854x480
     - 720x576
     - 800x600
     - 960x540
     - 1024x576
     - 960x640
     - 1024x600
     - 1024x768
     - 1280x720
     - 1152x864
     - 1280x800
     - 1360x768
     - 1366x768
     - 1440x900
[......]
  - Pixelformat: UYVY (64x64 - 2592x1944)
    Sizes:
     - 160x120
     - 240x160
     - 320x240
     - 400x240
     - 480x320
     - 640x360
     - 640x480
     - 720x480
     - 768x480
     - 854x480
     - 720x576
     - 800x600
     - 960x540
     - 1024x576
     - 960x640
     - 1024x600
     - 1024x768
     - 1280x720
     - 1152x864
     - 1280x800
     - 1360x768
     - 1366x768
     - 1440x900
     - 1280x1024
     - 1536x864
     - 1280x1080
     - 1600x900
     - 1400x1050
     - 1680x1050
     - 1600x1200
     - 1920x1080
     - 2048x1080
     - 1920x1200
     - 2160x1080
     - 2048x1152
     - 2560x1080
     - 2048x1536
     - 2560x1440
     - 2560x1600
Stream configuration adjusted
[0:31:35.208601252] [17657]  INFO Camera camera.cpp:1026 configuring streams: (0) 1920x1080-BGR888
[0:31:35.210766305] [17671]  INFO RPI raspberrypi.cpp:761 Sensor: /base/soc/i2c0mux/i2c@1/ov5647@36 - Selected sensor format: 1920x1080-SGBRG10_1X10 - Selected unicam format: 1920x1080-pGAA
camera "/base/soc/i2c0mux/i2c@1/ov5647@36" configured with 1920x1080-BGR888 stream
[WARN] [1664948894.673478721] [camera]: control NoiseReductionMode (39) not handled
[INFO] [1664948895.354029571] [camera]: using default calibration URL
[INFO] [1664948895.354236423] [camera]: camera calibration URL: file:///home/pi/.ros/camera_info/ov5647__base_soc_i2c0mux_i2c_1_ov5647_36_1920x1080.yaml
[ERROR] [1664948895.354514515] [camera_calibration_parsers]: Unable to open camera calibration file [/home/pi/.ros/camera_info/ov5647__base_soc_i2c0mux_i2c_1_ov5647_36_1920x1080.yaml]
[WARN] [1664948895.354593941] [camera]: Camera calibration file /home/pi/.ros/camera_info/ov5647__base_soc_i2c0mux_i2c_1_ov5647_36_1920x1080.yaml not found
^C[INFO] [1664949021.178648055] [rclcpp]: signal_handler(signum=2)
[0:33:41.808849926] [17671] ERROR Camera camera.cpp:524 Camera in Stopping state trying queueRequest() requiring state Running
[ERROR] [1664949021.277092727] [camera]: request 'Request(1216:X:0/1:0)' cancelled
[0:33:41.827455699] [17671] ERROR Camera camera.cpp:524 Camera in Stopping state trying queueRequest() requiring state Running
[ERROR] [1664949021.277405727] [camera]: request 'Request(1217:X:0/1:0)' cancelled
[0:33:41.827670347] [17671] ERROR Camera camera.cpp:524 Camera in Stopping state trying queueRequest() requiring state Running
[ERROR] [1664949021.277553801] [camera]: request 'Request(1218:X:0/1:0)' cancelled
[0:33:41.827807032] [17671] ERROR Camera camera.cpp:524 Camera in Stopping state trying queueRequest() requiring state Running
[0:33:41.833228710] [17671] ERROR DeviceEnumerator device_enumerator.cpp:166 Removing media device /dev/media2 while still in use
[0:33:41.833407155] [17671] ERROR DeviceEnumerator device_enumerator.cpp:166 Removing media device /dev/media1 while still in use

pi@pi-desktop:~/mes_ros2$ libcamera-hello
libEGL warning: DRI2: failed to authenticate
Made X/EGL preview window
[0:54:45.282157321] [17714]  WARN IPAManager ipa_manager.cpp:113 Public key not valid
[0:54:45.286362159] [17714]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3910-0a4d1b8d
[0:54:45.366599589] [17724]  INFO RPI raspberrypi.cpp:1374 Registered camera /base/soc/i2c0mux/i2c@1/ov5647@36 to Unicam device /dev/media1 and ISP device /dev/media2
[0:54:45.370642612] [17714]  INFO Camera camera.cpp:1026 configuring streams: (0) 1296x972-YUV420
[0:54:45.372846734] [17724]  INFO RPI raspberrypi.cpp:761 Sensor: /base/soc/i2c0mux/i2c@1/ov5647@36 - Selected sensor format: 1296x972-SGBRG10_1X10 - Selected unicam format: 1296x972-pGAA
terminate called after throwing an instance of 'std::runtime_error'
  what():  failed to import fd 19
Abandon (core dumped)
pi@pi-desktop:~/mes_ros2$

pi@pi-desktop:~/mes_ros2$ libcamera-hello --qt-preview
Made QT preview window
[0:34:02.517722224] [17677]  WARN IPAManager ipa_manager.cpp:113 Public key not valid
[0:34:02.522520700] [17677]  INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3910-0a4d1b8d
[0:34:02.597206052] [17684]  INFO RPI raspberrypi.cpp:1374 Registered camera /base/soc/i2c0mux/i2c@1/ov5647@36 to Unicam device /dev/media1 and ISP device /dev/media2
[0:34:02.601270973] [17677]  INFO Camera camera.cpp:1026 configuring streams: (0) 1296x972-YUV420
[0:34:02.603464674] [17684]  INFO RPI raspberrypi.cpp:761 Sensor: /base/soc/i2c0mux/i2c@1/ov5647@36 - Selected sensor format: 1296x972-SGBRG10_1X10 - Selected unicam format: 1296x972-pGAA
pi@pi-desktop:~/mes_ros2$

I've video with  "libcamera-hello --qt-preview"
p.s.
as said of me 55 years ago one of my teachers
An island of knowledge in an ocean of ignorance

Are you still having issues with the camera node? The issue you pasted here comes from another program and is probably caused by something else.
It seems the node is now working for you. Can you close the issue if your problem is solved?

No I'm still on camera_ros. I searched how to configure the camera to remove the error below but only found the package for "camera legacy".
[ERROR] [1664987522.360175651] [camera_calibration_parsers]: Unable to open camera calibration file [/home/pi/.ros/camera_info/ov5647__base_soc_i2c0mux_i2c_1_ov5647_36_1920x1080.yaml]
[WARN] [1664987522.360242929] [camera]: Camera calibration file /home/pi/.ros/camera_info/ov5647__base_soc_i2c0mux_i2c_1_ov5647_36_1920x1080.yaml not found

I still have to figure out if the node is indeed sending a video and how to exploit it. (I have not studied the code)
Thank you very much for the help you have given me.

The warning is from the camera info manager, telling you that there are no intrinsics for the camera. If you need intrinsics, you have to calibrate the camera and store them.
If you want to read images from the camera you have to subscribe to the respective topics.
I think your remaining issues are generic ROS questions that are better asked at https://answers.ros.org. I also assume that your original issue has been solved. I am going to close this issue for now. If you are encountering issues that are specific to this repo, then please open another issue.


xbacklight stops working after removing xf86-video-intel

Hi,
It's now advised for Arch users to not install xf86-video-intel as it's mostly not necessary anymore apparently. After doing so, however, the xbacklight section of my polybar has stopped showing up. It's strange because /sys/class/backlight/intel_backlight/backlight still updates fine.
Here's my config.

You mean this section: wiki.archlinux.org
You need the other module: internal/backlight not internal/xbacklight.
Unfortunately there is a header in the polybar-wiki: This module is deprecated

Hm. That didn't seem to work either, had some problem with displaying the
incorrect brightness. Although I haven't investigated it much because I'm
back on the other driver now for other reasons.
On Tue, Mar 13, 2018, 9:38 PM x70b1<EMAIL_ADDRESS>wrote:

You mean this section: wiki.archlinux.org
https://wiki.archlinux.org/index.php/backlight#xbacklight
You need the other module: internal/backlight not internal/xbacklight.
Unfortunately there is a header in the polybar-wiki: This module is
deprecated
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jaagr/polybar/issues/1092#issuecomment-372875576, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AB-m0hiLMONYY1ptXCKhqFM7_P8ozBsVks5teHSAgaJpZM4SmlXI
.

Sounds like it's a problem somewhere else.
But if you don't use it now, you can probably close the issue.

I have removed the deprecation warning from the backlight module page, it should work perfectly fine, as long as the files in /sys/class/backlight are properly updated.
Where does it say to not install xf86-video-intel? I have not seen that before and if the module stops working w/o the driver, the obvious solution seems to be to reinstall the driver.

Where does it say to not install xf86-video-intel?

On the Intel graphics archwiki page, here:

... install the xf86-video-intel package. (Often not recommended, see note below.)

I ended up needing to reinstall xf66-video-intel anyhow because of performance issues, but if you read some of the pages linked from that entry in the Archwiki you'll see some people attesting that xf86-video-intel shouldn't be used anymore.

@patrick96
Ah, sorry. That wasn't the correct link. Look at this: Intel graphics.
They suggest not to install the xf86-video-intel. But this means that xorg-xbacklight cannot be used. Look at the note section. Without the Intel driver there is also no xbacklight command. That means you need a replacement for this.
These dependencies between Intel drivers and xbacklight are very high. Therefore it would be nice to continue the support for the backlight module. I guess it doesn't take much time to maintain. It's already finished code. As I understand it, the xbacklight module needs the Intel driver to work because it does not use the /sys/class/backlight path?


ImdsCredentialsProvider does not follow redirects

Describe the bug
When running under k8s and using kiam to proxy IAM metadata requests, requests towards /latest/meta-data/iam/security-credentials result in HTTP 301 responses with redirects to /latest/meta-data/iam/security-credentials/ (trailing slash). This is different from the behavior when accessing EC2 metadata directly, where both variants result in HTTP 200. Arguably this should be addressed kiam side, but I don't think any development is done in that project at this point. It seems the Rust SDK has chosen to address this by simply always appending the final slash: awslabs/aws-sdk-rust#560
Expected behavior
Instantiating ImdsCredentialsProvider() should be able to discover the IAM/kiam provided role associated with the running context under k8s/kiam.
Current behavior
When no profileOverride is supplied to ImdsCredentialsProvider,  it fails with
Suppressed: aws.smithy.kotlin.runtime.auth.awscredentials.CredentialsProviderException: failed to load instance profile
	at aws.sdk.kotlin.runtime.auth.credentials.ImdsCredentialsProvider.resolve(ImdsCredentialsProvider.kt:83)
	at aws.sdk.kotlin.runtime.auth.credentials.ImdsCredentialsProvider$resolve$1.invokeSuspend(ImdsCredentialsProvider.kt)
	...
Caused by: aws.sdk.kotlin.runtime.config.imds.EC2MetadataError: error retrieving instance metadata
	at aws.sdk.kotlin.runtime.config.imds.ImdsClient$get$op$1$1.deserialize(ImdsClient.kt:117)

Steps to Reproduce
Instantiating ImdsCredentialsProvider under k8s/kiam.
Possible Solution
Append terminating slash to URL used for profile discovery in loadProfile.
Context
No response
AWS Kotlin SDK version used
1.1.1, relevant code appears unchanged up until 1.2.6.
Platform (JVM/JS/Native)
JVM
Operating System and version
Linux 6.1.85

Thanks for the report! I've opened a PR to fix this.

The PR has been merged and changes will be present in the next release v1.2.24, scheduled for tomorrow.

@lauzadis Thank you so much for the extremely efficient turnaround on this issue!


Data not decoded

Describe the bug
Data not decoded
To Reproduce

This Safe interacted with a contract called BorrowerOperations in tx with nonce 357.
I added the ABI for this yesterday to the staging admin
-> Today still not decoded.

Expected behavior
tx data is decoded today
Additional context
That's the tx on the tx service: https://safe-transaction.gnosis.io/api/v1/safes/0xBc79855178842FDBA0c353494895DEEf509E26bB/multisig-transactions/?nonce=357

@tschubotz Transaction is decoded now, it was a caching issue, but I will not close this until I figure out a solution

Thanks, I can confirm that it works now. Also for all ABIs I added, except this one:

Tx  with nonce 2097 from https://gnosis-safe.io/app/#/safes/0xEb3107117FEAd7de89Cd14D463D340A2E6917769/transactions
Calls this contract https://etherscan.io/address/0xD3C8d372bFCd36c2B452639a7ED6ef7dbFDC56F8#code
ABI in the backend which I added yesterday: https://safe-transaction.mainnet.staging.gnosisdev.com/admin/contracts/contractabi/3421/change/?_changelist_filters=q%3Dsystemsettings

I think you pasted the wrong ABI 😉 , I updated the ABI to be the one in the contract and now it's working https://safe-transaction.mainnet.staging.gnosisdev.com/api/v1/transactions/0x521769347b7a1aefc0fe544c6dc98304835295f4e89b7a81b2e4a2c57ec72ed8/

Thanks 🙈

https://gitlab.gnosisdev.com/devops/gnosis-prod/-/issues/280


Convert JSON string column into Map or Array column type

Is your feature request related to a problem? Please describe.
If a dataset looks like this:

Someone might want to change it like this with a convenient way:

so that he or she could handle the element of the collection data.
Describe the solution you'd like
We should enhance settype transform to support from string to map/array conversion. (Of course, the vice versa too)

@joohokim1 @ksparknot
디자인은 아이콘 작업만 진행하면 될것 같습니다. 지원하는 조건 정리되시면 공유 부탁드립니다-

This issue is very close to https://github.com/metatron-app/metatron-discovery/issues/2190.

@ksparknot We need to change array, map types' representation. For many reasons, array and map values are better to be written in plain JSON strings.
Belows are the behaviors of the UI when I changed server code to use plain JSON strings.

@ksparknot This issue is rather urgent, and I cannot proceed without your help.
I'll be appreciate if you process with a higher priority.

This is the file I used: json_in_column.csv.txt


Fix imports in functionrecognizer.py

Some imports were left off for some reason. I added them.

Thanks for the PR!


运行代码后还是无法回答长文本

错误显示如下：
Token indices sequence length is longer than the specified maximum sequence length for this model (9556 > 4096). Running this sequence through the model will result in indexing errors

This is a warning from HF to indicate that the output exceeds the original context window length.
But if you check the output, it should be OK.

This is a warning from HF to indicate that the output exceeds the original context window length.
But if you check the output, it should be OK.

Token indices sequence length is longer than the specified maximum sequence length for this model (5592 > 4096). Running this sequence through the model will result in indexing errors
Traceback (most recent call last):
File "/root/autodl-tmp/LaWGPT/utils/callbacks.py", line 47, in gentask
ret = self.mfunc(callback=_callback, **self.kwargs)
File "/root/autodl-tmp/LaWGPT/webui.py", line 140, in generate_with_callback
model.generate(**kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/peft/peft_model.py", line 627, in generate
outputs = self.base_model.generate(**kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/transformers/generation/utils.py", line 1596, in generate
return self.greedy_search(
File "/root/miniconda3/lib/python3.8/site-packages/transformers/generation/utils.py", line 2444, in greedy_search
outputs = self(
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = module._old_forward(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 809, in forward
outputs = self.model(
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 697, in forward
layer_outputs = decoder_layer(
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = module._old_forward(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 413, in forward
hidden_states, self_attn_weights, present_key_value = self.self_attn(
File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = module._old_forward(*args, **kwargs)
File "/root/miniconda3/lib/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 335, in forward
attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.87 GiB (GPU 0; 23.65 GiB total capacity; 8.51 GiB already allocated; 1.05 GiB free; 8.74 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
Traceback (most recent call last):
File "/root/miniconda3/lib/python3.8/site-packages/gradio/queueing.py", line 407, in call_prediction
output = await route_utils.call_process_api(
File "/root/miniconda3/lib/python3.8/site-packages/gradio/route_utils.py", line 226, in call_process_api
output = await app.get_blocks().process_api(
File "/root/miniconda3/lib/python3.8/site-packages/gradio/blocks.py", line 1550, in process_api
result = await self.call_function(
File "/root/miniconda3/lib/python3.8/site-packages/gradio/blocks.py", line 1199, in call_function
prediction = await utils.async_iteration(iterator)
File "/root/miniconda3/lib/python3.8/site-packages/gradio/utils.py", line 519, in async_iteration
return await iterator.anext()
File "/root/miniconda3/lib/python3.8/site-packages/gradio/utils.py", line 512, in anext
return await anyio.to_thread.run_sync(
File "/root/miniconda3/lib/python3.8/site-packages/anyio/to_thread.py", line 31, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
File "/root/miniconda3/lib/python3.8/site-packages/anyio/_backends/_asyncio.py", line 937, in run_sync_in_worker_thread
return await future
File "/root/miniconda3/lib/python3.8/site-packages/anyio/_backends/_asyncio.py", line 867, in run
result = context.run(func, *args)
File "/root/miniconda3/lib/python3.8/site-packages/gradio/utils.py", line 495, in run_sync_iterator_async
return next(iterator)
File "/root/miniconda3/lib/python3.8/site-packages/gradio/utils.py", line 649, in gen_wrapper
yield from f(*args, **kwargs)
File "/root/autodl-tmp/LaWGPT/webui.py", line 156, in evaluate
print(decoded_output)
UnboundLocalError: local variable 'decoded_output' referenced before assignment具体错误是这样的，我该如何对代码进行修改呢？谢谢！

朋友，你这个主要是显存不大够的问题:
(torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.87 GiB (GPU 0; 23.65 GiB total capacity; 8.51 GiB already allocated; 1.05 GiB free; 8.74 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation)
(默认你跑的llama7b）有三个办法：
1: 如果你有两张24g的卡， 用deepspeed inference，应该能跑起来。
2: 如果只有一张卡，得等一下我等把flash attention的版本release。
3: 如果你有四张24g的卡，只用hugging face默认的accelerator的model parallel的方式，按理说能跑到8k附近。那问题可能是需要控制一下torch提前reserve的显存的大小，设置一下： PYTORCH_CUDA_ALLOC_CONF='max_split_size_mb:1024' ，1024就好了，更大一点或许也可以，会快一点。也就是这个问题 ( If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation)

PYTORCH_CUDA_ALLOC_CONF='max_split_size_mb:102
我试了PYTORCH_CUDA_ALLOC_CONF='max_split_size_mb:1024' ，甚至更大的值，每次在length=15872的时候就OOM了
错误如下
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 30.03 GiB (GPU 1; 79.35 GiB total capacity; 48.80 GiB already allocated; 27.55 GiB free; 50.37 GiB             reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and        PYTORCH_CUDA_ALLOC_CONF


how to restore the certain variable_scope Variables into another certain variable_scope?

Now I have trained a model A and I need two model A instances because one of them just is fixed and untrainable for outputting and another is trainable for next network. I design two variable_scope A_train and A_untrain, I pre-trained A model in variable_scope A_untrain and restore the model also in this scope, code like:
saver_untrain = tf.train.Saver(tf.get_collection(
                                   tf.GraphKeys.GLOBAL_VARIABLES,
                                   'A_untrain'))
saver_path = '~/models/model.ckpt'
# here pre-train model A
saver_untrain.save(sess, saver_path)

Now I need to restore the same model A parameters into the same model in scope A_train, but I cannot follow the previous code because the ckpt files restore the params like A_untrain/input_w1 instread of A_train/input_w1. I want to know if there is a solution to my problem OR a better solution to make two instances which one is trainable and another is untrainable. Thanks a lot.
EDIT_1: I know I can realize my need use code like:
saver_train = tf.train.Saver({'A_untrain/input_w1': A_train.input_w1})
but it will be unpractical when my variables amount is large, so I need to use the variable_scope to restore instead of the specific variables' names.

this is better for stackoverflow (this list is for bugs/issues in TensorFlow itself)

This question is better asked on  StackOverflow since it is not a  bug or feature request. There is also a larger community that reads questions there. Thanks!

Has anybody solved this problem???


Fix the travis tests...again

The push passes, the Pull doesn't. I do not understand Travis :(

The push passes, the Pull doesn't. I do not understand Travis :(

The pull is a merge of the target branch and the PR's branch.
codecov-bash has some logic to handle that, which you've partly replicated in the test script.
I think it is better to use hard-coded sha's by default in the test, and then have (some) explicit tests for handling the merge commits - but that should not be triggered from the outside (i.e. if it is a Travis Push or Pull build), but rather by setting environments to trigger the different code paths.

I.e. https://github.com/codecov/codecov-bash/pull/141 was more sensible in this regard.


Hi,
Can you please tell me if I am able to use Pyzotero  on my local Zotero library without going online?
I'm very new to python, so it may be an obvious answer---apologies of it is and I've missed it.
I'm on a Mac using
osx Mojave
python 3.7
Atom IDE via hydrogen

Please let me know if you need any more information.
Thanks in advance,
Atanas.

No, Pyzotero only works with the web API, not with your local database.


Update Docs / gif to also demonstrate user management

On this file https://github.com/PacoVK/tapir/blob/main/docs/images/tapir.gif
Could we update the workflow to demonstrate how users are managed?

From my experience, if you have deployed Keycloak, you can log in to its administration console for management purposes.
It is recommended to learn about it here Keycloak

Tapir does not know users, it integrates with IDPs like Keycloak via OIDC. You can use any OIDC provider you like. If the OIDC provider does not provide an end-session-path you currently cannot logout via the UI. IDPs like Keycloak provide such endpoint. Hence, they are fully supported :)
Mind that the token the IDP issues needs to pass a role called admin for users that should be able to administer Deploykeys.

Ahhh okay. So, like a traditional SCIM mapping would occur in other systems, in this case we're doing straight user and user role mapping (for the admin) explicitly from the IdP via OIDC.

Ahhh okay. So, like a traditional SCIM mapping would occur in other systems, in this case we're doing straight user and user role mapping (for the admin) explicitly from the IdP via OIDC.


Cost is not used in single cam trajectory post association

In method associate in  tracker/MOTBaseline/src/post_processing/post_association.py, the external C++ program MinCostPerfMatch is called with argument "--max", which solves maximum cardinality matching. The computed cost (similarity) is not used in this step.
Should it instead be solving min cost perfect matching problem, which calls MinCostPerfMatch with argument --minweight?
Thanks.

We use threshold to control whether to establish edges, so weights are no longer used. You can also try using --minweight.

Thanks.


Doc Feedback: confusing content

Location : https://apim.docs.wso2.com/en/next/learn/consume-api/manage-application/generate-keys/generate-api-keys/
This page title says generate-api-keys and the doc title says 'Application Keys'
And it starts saying 'An API Access Token/Key ..'
This looks bit confusing.

This issue is already fixed in master by changing the page title to "Application Keys


clang_tidy.sh timing out

2020-02-25 23:20:51,042 TIMEOUT: tools/distrib/clang_tidy_code.sh [pid=695, time=1802.3sec]
2020-02-25 23:20:51,051 START: tools/distrib/yapf_code.sh
2020-02-25 23:23:05,122 PASSED: tools/distrib/yapf_code.sh [time=134.1sec, retries=0:0]
2020-02-25 23:23:05,123 FAILED: tools/distrib/clang_tidy_code.sh
2020-02-25 23:23:05,211 FAILED: Some tests failed

https://source.cloud.google.com/results/invocations/5e9a52e2-78e1-491d-b548-103a8dc7b1fb/log
https://source.cloud.google.com/results/invocations/43bd0a28-accc-4c3b-b7eb-8531b77c1ece/targets/grpc%2Fcore%2Fpull_request%2Flinux%2Fgrpc_sanity/log
This is blocking https://github.com/grpc/grpc/pull/22131, making it too a release blocker for 1.28

The fix should now be submitted. CC @muxi

awesome, thanks!

Confirmed fixed.


It is not possible to use your types for Yup validation

Describe the bug
How to add a custom type when not all fields are inferred from the form?
To Reproduce
Steps to reproduce the behavior:
We use so props:
export type FormValues = {
  account: Account;
  currency: Currency;
  amount: string;
};

Account and Account types have many props.
type Account {
  accountId: string;
  name: string;
  type: Type;
  ...
}

account and currency fields are custom Select components.
We need to check that an element is selected.
const validationSchema = Yup.object().shape({
  account: Yup.object().required('Account is required'),
  currency: Yup.object().required('Currency is required'),
  amount: Yup.string().required('Amount is required.')
});

Codesandbox link (Required)
codesandbox link.
Expected behavior
The yupResolver function should not complain about the given formSchema.

Any updates on this? We also have to downgrade to 3.1.0 in our codebase

I have a same problem. When I have some complex type for form, sometimes I have in form values which I dont need for validation and if I have like enum as a type, then is the end. Usually I have as form type graphql input type. In this type can be as type for value null, undefined or type of value. But from yup resolver I hade a little bit another type. Value or null. This maybe is my problem.Something missing in yup validation schema (maybe optional).
Now I must downgrade to version 3.1.0.


Add new exec package for host process containers

This change adds a new exec package thats main goal is to run
external processes on Windows. Unfortunately due to a couple
things that can't be accomplished with the stdlib os/exec package,
this new package is meant to replace how processes for host process
containers are launched.
The main shortcomings for os/exec are not being able to pass in a pseudo console to use
for tty scenarios, and not being able to start a process assigned to a job object
instead of doing the Create -> Assign dance. Both of these issue are centered
around not having access to the process thread attribute list that is setup inside
of syscall.StartProcess. This is needed to be able to properly setup both cases,
as it requires calling UpdateProcThreadAttribute and passing in what's necessary
for both scenarios.
Signed-off-by: Daniel Canter<EMAIL_ADDRESS>

There's going to be an option to pass in a pseudo console object but need this to get in https://github.com/microsoft/hcsshim/pull/1228

lgtm

@ambarve PTAL

@katiewasnothere @anmaxvl Anyone able to take a look at this?


chore: update go modules

Updates all go modules and makes change for fulcio signer to use their
updated function signature.
Signed-off-by: Mikhail Swift<EMAIL_ADDRESS>

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
830

Relevant Lines:
1893

💛  - Coveralls

LGTM!


Add Python 3.10 to the testing

"3.10" must be quoted in yaml.  https://dev.to/hugovk/the-python-3-1-problem-85g

Thanks


Wrong currency sent to Adyen when using Magento's currency converter.

Steps to reproduce
Setup:

Capture delay set to manual, both in Adyen and Magento.
Base currency SEK
Enter currency exchange rates in Magento to enable USD in the shop.

Place an order in USD in the shop, using Adyen CC with CSE.
In this case, the order Grand Total was $64.73 (560.90 SEK in base grand total).
An authorization was created in the Adyen Backend, currency USD which is as expected.
From our test account:

When I create an invoice for the order in Magento and use Capture Online, the order is not captured in Adyen due to the capture being sent in a different currency than the authorize.

As you can see, the order is also set to processing, which might not be correct. I would expect it to still be pending since the capture wasn't successful.

Hi Albert,
I understand your issue. Unfortunately I don't know how we can change this. Magento will change the status to processing if an invoice is created. We can't set a pending status in this time because the Magento core does this by default.
Regards,
Rik
Adyen

I understand the problem with Magento setting the order to processing by default. I think I can work around this, by adding another order status.
The main issue for me is that the wrong currency is sent to Adyen when I create an invoice and use Capture Online. This prevents me from capturing manually from Magento.

HI Albert,
This is because in the interface of the invoice Magento is converting it to the base currency. I have no idea if there is a setting in Magento to use order currency instead of base currency in the invoice view.
Regards,
Rik
Adyen

Hello Rik,
I can confirm that this is also an issue when creating credit memos in Magento. They will be sent to Adyen in the base currency, not the currency used on authorize.
There must be a way to solve this. Magento saves all prices in both base and order currency on orders, invoices and credit memos. Also the exchange rate used is saved on the order, invoice and credit memo.
Isn't it possible to get the right currency code and amount from the invoice model saved before sending the API capture request to Adyen?
Authorize Request:
    [response] => Array
        (
            [originalReference] =>
            [reason] => 3694:1111:6/2016
            [additionalData_authCode] => 3694
            [additionalData_expiryDate] => 6/2016
            [additionalData_cardSummary] => 1111
            [merchantAccountCode] => xxxxxxx
            [eventCode] => AUTHORISATION
            [operations] => CANCEL,CAPTURE,REFUND
            [success] => true
            [paymentMethod] => visa
            [currency] => USD
            [pspReference] =><PHONE_NUMBER>734539
            [merchantReference] => 100000062
            [value] => 6473
            [live] => false
            [eventDate] => 2015-11-09T09:41:13.75Z
            [additionalData] => Array
                (
                    [authCode] => 3694
                    [expiryDate] => 6/2016
                    [cardSummary] => 1111
                )

            [amount] => Array
                (
                    [value] => 6473
                    [currency] => USD
                )

        )

Capture Request:
    [processResponse begin] => Begin to process Notification
    [response] => Array
        (
            [originalReference] =><PHONE_NUMBER>734539
            [reason] => Modification in different currency than authorisation
            [merchantAccountCode] => xxxxx
            [eventCode] => CAPTURE
            [operations] =>
            [success] => false
            [paymentMethod] => visa
            [currency] => SEK
            [pspReference] =><PHONE_NUMBER>135074
            [merchantReference] => 100000062
            [value] => 56290
            [live] => false
            [eventDate] => 2015-11-09T09:41:53.00Z
            [amount] => Array
                (
                    [value] => 56290
                    [currency] => SEK
                )

        )

Hi Albert,
The problem here is partial refunds and partial captures and option to put in a manual amount. You can define your own amount to refund as well this is in the base currency instead of the order currency. The solution here is to use the order currency in the view instead of the base currency but that is something that is in the core of magento.
Regards,
Rik
Adyen

Or to use the base_to_order_rate data saved in the invoice and do the conversion before sending the refund / capture.


Clean up "Where did you hear about CoderDojo" answers

Business Case
The community team have researched and decided on a clarified set of answers to the "How did you hear about CoderDojo" question in the Start a Dojo form.
Detail
https://docs.google.com/document/d/1XxRrkV3DvnftCOI8KilMDVsOcIA-MeBbj4qUHTlt4ts/edit
To be decided
What happens to unmapped answers.
Whether we can add the "more detail" answer to all questions.

Previous
New (In order)

Search engine
Search engine

Other CoderDojo Volunteers
CoderDojo volunteers

[no previous, new label]
Raspberry Pi Foundation / CoderDojo Foundation outreach

[no previous, new label]
Social media

Future Learn
Future Learn

[no previous, new label]
My employer (CSR scheme at work)

Events
Event / Conference / Training

[no previous, new label]
Library or youth group

Word of mouth
Word of mouth

Other
Other (comment field)

Other Coding Organisations
[no replacement, leave in db]

Development Community
[no replacement, leave in db]

Family/Friends
[no replacement, leave in db]

Media (newspaper/radio)
[no replacement, leave in db]

Just to clarify, the entries that read [no replacement, leave in db] should not appear in the select on the form any more.
Previous answers for those options will stay in the database.

Exactly.


Course card image and overall layout adjusted to match the mockups + Volley removed in favor of Glide

https://openedx.atlassian.net/browse/MA-1257
Glide is now being used instead of Volley for image fetching and transformations

now only that remains is Volley removal from the project :smiley:

@bguertin, @aleffert: You guys can also review this if you want. It's mostly done, other than a few small issues, and removing Volley.

@aleffert @bguertin @1zaman plz review

:+1: I have commented on a few minor issues, otherwise seems good to go.


feat: add searchSuggestionQuickNavigationItemSelected event

The type of this PR is: Feature

This PR resolves FX-4629
Description
This PR adds a new event to track when a user selects one of the quick navigation items in a search suggestion (right now only for relevant artist suggestions).
Example:
{
  action: "searchSuggestionQuickNavigationItemSelected",
  context_module: "header",
  destination_path: "/artist/andy-warhol/works-for-sale",
  label: "Auction Results"
}

PR Checklist (tick all before merging)

[x] If I've added a new file to the tree I've exported it from the common index.ts
[x] I've added comments with examples for any new interfaces and ensured that they're in the docs
[x] No platform-specific terminology has been used outside of click and tap (platform is inferred by the DB storing events)

:rocket: PR was released in v4.113.0 :rocket:


Setting up PHP 8.1 on ubuntu-latest somehow tries to use redis extension

Describe the bug
In sebastianbergmann/phpunit, we currently run tests against PHP 8.1.
Our GitHub Actions job definition looks like this (also see ci.yaml):
  tests:
    name: Tests

    runs-on: ${{ matrix.os }}

    env:
      PHP_EXTENSIONS: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter
      PHP_INI_VALUES: assert.exception=1, memory_limit=-1, zend.assertions=1

    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
          - windows-latest

        php-version:
          - "8.0"
          - "8.1"

        compiler:
          - default

        dependencies:
          - lowest
          - highest

        include:
          - os: ubuntu-latest
            php-version: "8.0"
            compiler: jit
            dependencies: highest

          - os: ubuntu-latest
            php-version: "8.1"
            compiler: jit
            dependencies: highest

    steps:
      - name: Configure git to avoid issues with line endings
        if: matrix.os == 'windows-latest'
        run: git config --global core.autocrlf false

      - name: Checkout
        uses: actions/checkout@v2

      - name: Override PHP ini values for JIT compiler
        if: matrix.compiler == 'jit'
        run: echo "PHP_INI_VALUES::assert.exception=1, memory_limit=-1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=32M" >> $GITHUB_ENV

      - name: Install PHP with extensions
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          extensions: ${{ env.PHP_EXTENSIONS }}
          ini-values: ${{ env.PHP_INI_VALUES }}

      - name: Determine composer cache directory on Linux
        if: matrix.os == 'ubuntu-latest'
        run: echo "COMPOSER_CACHE_DIR=$(./tools/composer config cache-dir)" >> $GITHUB_ENV

      - name: Determine composer cache directory on Windows
        if: matrix.os == 'windows-latest'
        run: ECHO "COMPOSER_CACHE_DIR=~\AppData\Local\Composer" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

      - name: Cache dependencies installed with composer
        uses: actions/cache@v2
        with:
          path: ${{ env.COMPOSER_CACHE_DIR }}
          key: php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }}
          restore-keys: |
            php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-

      - name: Install lowest dependencies with composer
        if: matrix.dependencies == 'lowest'
        run: php ./tools/composer update --no-ansi --no-interaction --no-progress --prefer-lowest

      - name: Install highest dependencies with composer
        if: matrix.dependencies == 'highest'
        run: php ./tools/composer update --no-ansi --no-interaction --no-progress

      - name: Run sanity check
        run: bash ./build/scripts/sanity-check

      - name: Run tests with phpunit
        run: php ./phpunit

With this configuration, jobs running on ubuntu-latest with PHP 8.1 emit the following warning
PHP Warning:  PHP Startup: Unable to load dynamic library 'redis' (tried: /usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis (/usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis: cannot open shared object file: No such file or directory), /usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis.so (/usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

We do not understand why redis is causing problems here, because our job configuration does not indicate that we want redis to be installed.
Version

[ ] I have checked releases, and the bug exists in the latest patch version of v1 or v2.
[x] v2
[ ] v1

Runners

[x] GitHub Hosted
[ ] Self Hosted

Operating systems

[x] ubuntu-latest

PHP versions

[x] 8.1

To Reproduce
See ci.yaml.
Expected behavior
PHP 8.1 starts up without emitting a warning related to redis.
Screenshots/Logs
See the corresponding run:
PHP Warning:  PHP Startup: Unable to load dynamic library 'redis' (tried: /usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis (/usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis: cannot open shared object file: No such file or directory), /usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis.so (/usr/local/php/8.1/lib/php/extensions/no-debug-non-zts-20201009/redis.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Additional context
n/a
Are you willing to submit a PR?
Absolutely!

@localheinz
https://pear.php.net/ has expired certificate which broke extensions in the build.
Please restart the workflow, it should work now.
Fixed in https://github.com/shivammathur/php-builder/commit/f68704f7c111b25cf80e182c4c00bf418faaef79

Thank you, @shivammathur!
🤓


Fix/close pool in test

A small fix for a test where a thread pool was left running
A faster implementation of Game of Life, with one reaction site per cell

Codecov Report

Merging #110 into master will not impact coverage.

@@          Coverage Diff          @@
##           master   #110   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          13     13
  Lines         990    990
  Branches      115    115
=====================================
  Hits          990    990

Continue to review full report at Codecov.

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


The JSON License is a risk

Pulsar depends on Json, which is one of Java Library, and its license is "The JSON License".
"The JSON License" includes the following sentence
"The Software shall be used for Good, not Evil."
and some people consider that it is a risk because it cannot be judged what is Evil.
I consider that Json should be replaced with alternative library to have many people and companies  use Pulsar.

FYI, Apache products have been unable to include works under JSON license.
https://www.apache.org/legal/resolved#json
A discussion about alternatives is on-going.
https://mail-archives.apache.org/mod_mbox/www-legal-discuss/201611.mbox/browser

From the email thread, there's a link to a Debian page with few suggested alternatives.
https://wiki.debian.org/qa.debian.org/jsonevil
Maybe using any of these, would avoid making any code change.

Merged fix from #130 in 6ea847c


Update COMMITTERS.md

adding Jens and Sheeri
Problem
👋 Thanks for opening a pull request! Please include a brief summary of the problem your change is trying to solve, or bug fix. If your change fixes a bug or you'd like to provide context on why you're making the change, please link the issue as follows:
Closes: #ISSUE-NUMBER
Solution
Please describe your change as it relates to the problem, or bug fix, as well as any dependencies. If your change requires a schema change, please describe the schema modification(s) and whether it's a backwards-incompatible or backwards-compatible change, then select one of the following:

Note: All schema changes require discussion. Please link the issue for context.

[ ] Your change modifies the core OpenLineage model
[ ] Your change modifies one or more OpenLineage facets

If you're contributing a new integration, please specify the scope of the integration and how/where it has been tested (e.g., Apache Spark integration supports S3 and GCS filesystem operations, tested with AWS EMR).
One-line summary:
Checklist

[ ] You've signed-off your work
[ ] Your pull request title follows our guidelines
[ ] Your changes are accompanied by tests (if relevant)
[ ] Your change contains a small diff and is self-contained
[ ] You've updated any relevant documentation (if relevant)
[ ] Your comment includes a one-liner for the changelog about the specific purpose of the change (not required for changes to tests, docs, or CI config)
[ ] You've versioned the core OpenLineage model or facets according to SchemaVer (if relevant)
[ ] You've added a header to source files (if relevant)

SPDX-License-Identifier: Apache-2.0
Copyright 2018-2024 contributors to the OpenLineage project

@Sheeri thanks for the PR! Not seeing any changes here :)

@Sheeri guessing you want this merged to main, but this will merge it into a branch. Is that what you intend?

@merobi-hub fixed that.


Please update the ChangeLog

... ideally regularly. It is hard to guess what changes were implemented when, the only thing I do (on nearly each update) is to check the commit log.
Maybe CI could include the commit messages since last release into ChangeLog before the automated release? This should work for many of the good commit messages (and where it doesn't still leaves a trace for the user and provide you with a starting point for polishing this from time to time.

log to CHANGELOG.md include in publish

Thank you, that's looks useful.
What do you think about using --ignore-commits-without-issue (which likely means to create some issues for changes before commits, but also creates a nice way to group commits in any case)?


checker workflows and tooltester logs

Feature Request
Desired behaviour
Checker workflows that can run successfully should have tool tester logs
Not sure if not run or not visible
Follows #2348
┆Issue is synchronized with this Jira Story
┆Issue Type: Story
┆Issue Number: DOCK-853

Run checker workflows for verified workflows, period
Let's get a breakdown of checker workflows and why they're blacklisted
Are there any in https://github.com/dockstore/dockstore-support/blob/develop/tooltester/src/main/java/io/dockstore/tooltester/blacklist/BlackList.java here that have no versions that are successful

Reviewer should check that remaining verified workflows with checker workflows have logs
@garyluu to fix checker workflows, at least hello world and md5sum so that at least one version of the checker workflow has logs (ideally, not a branch)

2 and 3:
#workflow/github.com/DataBiosphere/topmed-workflows/UM_variant_caller_wdl:

[x] find latest version https://dockstore.org/workflows/github.com/DataBiosphere/topmed-workflows/UM_variant_caller_wdl:1.32.0?tab=files
[x] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/DataBiosphere/topmed-workflows/UM_aligner_wdl:
[ ] find latest version can't find it anymore
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/DataBiosphere/topmed-workflows/UM_aligner_cwl:
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
quay.io/pancancer/pcawg-sanger-cgp-workflow
[ ] find latest version 2.0.6
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
quay.io/pancancer/pcawg-dkfz-workflow:  I can never run this
[ ] find latest version 2.0.6
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/KnowEnG/cwl-gene-prioritization
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/NCI-GDC/gdc-dnaseq-cwl/GDC_DNASeq
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/bcbio/bcbio_validation_workflows
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/dockstore-testing/md5sum-checker
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/dockstore-testing/md5sum-checker/wdl
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production
#workflow/github.com/dockstore/hello_world
[ ] find latest version
[ ] Manually run it
[ ] Verify on staging
[ ] Verify on production

TODO List:

[ ] Make changes for https://docs.dockstore.org/docs/publisher-tutorials/checker-workflows/ and mention logs
[ ] Verify all checker workflows that were ran
[ ] Do something for bcbio_validation_workflow
[ ] Make a real hello_world checker workflow, make new release, rerun.


Clarify meaning of slots that exist both at mapping-level and at mapping set-level

The mapping set class seems to have two very different types of metadata slots:

Slots that are really for metadata of the set itself, not of the mappings;
Slots that are really for metadata of the individual mappings, but that are allowed to be used once and for all at the level of the mapping set – presumably to avoid repeating the same metadata for all mappings, if said metadata is the same for all individual mappings in a set.

It is obvious that the metadata slots that are only allowed at the set level belong to the first category (e.g., mapping_set_id, mapping_set_title).
But for the slots that are allowed both at the set level and at the individual mapping level, it is not obvious how they should be interpreted when they are found at the set level.
If a set has a creator_id metadata for example, should that be understood to mean that the referenced creator is the creator of the set (which may not be the same as the creator(s) of the individual mappings that make up the set), or that it is the default creator of all the mappings of the set (at least all those that do not have an explicit value for that slot)?
The documentation of creator_id seems to suggest the latter because it refers to “mapping” in singular (“Identifies the persons or groups responsible for the creation of the mapping“), but I’d be wary of using English grammar to infer whether a metadata slot is intended to refer to an individual mapping or to a set of mappings… especially since the documentation of author_id, which is a slot that only exists for individual mappings (and so cannot refer to the “author” of a mapping set) uses “mappings” in plural!
For now, my assumption is that all the slots that exist both at the mapping level and at the mapping set level are all about the individual mapping, and that when they are used at the set level, it is only as a “shortcut” to avoid repeating the same metadata for all individual mappings (said otherwise: a slot never has a different meaning depending on whether it is used on an individual mapping or on a mapping set). But this is something that should be explicitly specified. All the spec says is:

Some SSSOM metadata elements apply only to one element or the other, but many can be applied to both.

which in my opinion is wholly inadequate.

To further clarify: the issue above matters because it dictates whether metadata found at the set level should be propagated down to the mapping level, or not.
If setting creator_id at the set level is merely a shortcut to avoid explicitly setting creator_id on each mapping (as I’m currently assuming it is), then it is fine to propagate the value of that slot to all the mappings of the set when de-serializing a set – in fact, not only it is fine, but arguably that is what should be done.
On the contrary, if creator_id at the set level is intended to represent the creator(s) of the set itself, then its value should not be propagated down to the individual mappings.

@gouttegd I am glad you raise this discussion, it irked me since the inception of SSSOM.
I have no good idea how to solve this. Lets start with the two most obvious ways: meta-modelling and default range assumption.

meta-modelling. We introduce a meta property like propagates_to_individual_mappings: true that can be added constraint on the mapping set slot using the slot_usage section in LinkML. This only need to be specified for slots at mapping set level.
Default range assumption: if the exact same slot exists in both mapping set and mapping set level, the above feature (propagates_to_individual_mappings: true) is assumed by default. This is documented as a global feature of the model.

Any other ideas?

Let’s get an answer to the following question then, about the intentions when the model was first designed:

Is my current assumption (stated in the first message) correct?  Are all the slots that exist both at the mapping level and the mapping set level intended to be really about individual mappings, and never about the mapping set?

If that is the case, then your second proposition is fine, it just needs to be explicitly stated somewhere in the spec.
On the contrary, if at least some of the slots that exist both at the mapping level and at the mapping set level are intended to have a different meaning depending on the level they are used (for example, creator_id on a mapping refers to the creator of that particular mapping, but creator_id on a set refers to the creator of the entire set – with the understanding that “creator of the set” is not the same thing as “creator of all the mappings in the set”), then obviously your second proposition is not applicable. In that case the specification needs to state explicitly what is the meaning of such slots for each level.

Independently of the question of which slots should be propagated down to the mapping level (all of them or only some of them), the spec also needs to specify how values should be propagated.
In particular, we must know what to do when an individual mapping already has a different value for a slot that is also present at the set level.
For example:
#curie_map:
#  EXA: http://example.org/EXA_
#  EXB: http://example.org/EXB_
#mapping_tool: "Microsoft MappingMaker 2000"
subject_id  predicate_id     object_id  mapping_tool
EXA:0001    skos:exactMatch  EXB:0001
EXA:0002    skos:exactMatch  EXB:0002   Oracle Mapping Generator 3.87
EXA:0003    skos:exactMatch  EXB:0003

What is the desired behaviour here? I can see several options:

Probably the most obvious one is, propagate the value of mapping_tool to the mappings where the slot is empty, but for the mappings that already have a value there, the value at the mapping level takes precedence. In this example, the mappings for EXA:0001 and EXA:0003 would get the value “Microsoft MappingMaker 2000”, but the mapping for EXA:0002 would keep its own value “Oracle Mapping Generator 3.87”.

The value at the mapping set always takes precedence, regardless of what individual mappings say. In this case, all three mappings would get the value “Microsoft MappingMaker 2000”.

The value at the mapping level always takes precedence, even when it is empty. That would mean that propagation should only happen if the slot is completely absent from the mapping table (no column in the TSV file for that slot). In this example, the mappings for EXA:0001 and EXA:0003 would have no value set for mapping_tool, while the mapping for EXA:0002 would keep its own value.

I intuitively prefer 1, but I am not certain. The advantage of 3 is that it is simpler to maintain in cases where, for example, a global field only makes sense in conjunction with certain justifications. It does not make sense to say: mapping_tool for mapping_justification: semapv:ManualMappingCuration.
I would be clearly against 2.

I intuitively prefer 1, but I am not certain.

I see two problems with option 1, which is why I tend to prefer option 3.
The first problem is: what about multi-valued fields? For example, if we have this:
#creator_id:
#  - ORCID:1
#  - ORCID:2
subject_id  predicate_id     object_id  creator_id
EXA:0001    skos:exactMatch  EXB:0001
EXA:0002    skos:exactMatch  EXB:0002   ORCID:3|ORCID:4
EXA:0003    skos:exactMatch  EXB:0003

Under option 1), it is clear that the value of creator_id for the EXA:0001 and EXA:0003 mappings should be ORCID:1|ORCID:2, but what about the EXA:0002 mapping? It is almost certain that in this situation, some people would expect that the final creator_id value for EXA:0002 should be the union of the two lists (ORCID:1|ORCID:2|ORCID:3|ORCID:4) – and I don’t think that is an unreasonable expectation, so that’s another detail for which we would need to make a clear decision and to explain in the spec.
The second problem is about mappings with empty values. In the example above, what if the EXA:0003 has an empty value because we don’t actually know who created it? Under option 1), we can’t distinguish between a field that is empty because it is supposed to be empty and a field that is empty because it is supposed to take the default value propagated from the set level.
Option 3) solves those two problems by basically disallowing the mixing of a default value set at the set level and explicit values set at the individual mapping level.
To put it differently, option 3) means that setting a value at the set level as a “shortcut” to avoid setting it on each mapping is only allowed in the case where all mappings in a set have the same value, and the field is not even present in the TSV columns.
So even if you have 99 mappings with the same value A and just one mapping with a different value B, you MUST explicitly set the values on each individual mapping. You CANNOT set the value A at the set level and leave it empty on the 99 corresponding mappings – well, you can, but if you do that the value from the set level will not be taken into account: all 99 mappings will be treated as if they had no value.
I believe this is the safest and least confusing option.

I think you are right - this is what we should do! Any other opinions?

To be clear, I slightly prefer option 3) but I think all three options are more or less equally reasonable, so I don’t mind which one is chosen in the end.
What matters to me is that one option is decided and that the corresponding expected behaviour is described in the spec, so that the behaviour is not left to the implementations to decide.

We can ask other for their opinion, but lets move to the second issue: how to solve which slots should be propagated at all. I made a quick analysis:
Slot currently not globally specifiable but maybe should be?

mapping_justification
object_category
subject_category
semantic_similarity_measure
semantic_similarity_score
author_id
author_label

Slots exist on both levels, and should be propagated

mapping_date
mapping_provider
mapping_tool
mapping_tool_version
object_match_field
object_preprocessing
object_source
object_source_version
object_type
predicate_id
predicate_label
predicate_modifier
subject_match_field
subject_preprocessing
subject_source
subject_source_version
subject_type
license

Slot only exist on mapping level, and should not exist globally:

confidence
issue_tracker_item
mapping_cardinality
match_string
object_id
object_label
reviewer_id
reviewer_label
subject_id
subject_label

Slot exists on both levels and should not be propagated

comment
see_also
other
creator_id
creator_label

What do you think?

Slot currently not globally specifiable but maybe should be?

semantic_similarity_score

How likely it is that all mappings in a set will have the same semantic similarity score, so that the value could be set only once at the set level?
I would have no objection to that, but it seems of dubious value. (Contrary to semantic_similarity_measure: it makes sense – though it would not always be the case – that the same measure has been used for all mappings in a set.)

Slots exist on both levels, and should be propagated

mapping_date

Makes sense. I note you did not mention the publication_date field, which also exists on both level.
My suggestion would be to make publication_date a mapping set value only. After all, individual mappings are never published on their own, only the mapping set they belong to is.
So we would have mapping_date which says when an individual mapping was asserted (and which MAY be set at the global level if all mappings in a set were asserted at the same time, and propagation will occur), and publication_date which says when a mapping set was published.

predicate_id
predicate_label
predicate_modifier

Unless I’m missing something those slots do not exist on both levels, they are on the mapping level only. And I think they should stay like that. Even if a mapping set only contains mappings that have the same predicate, I’d argue that the predicate is much too important to be set once and for all at the set level, and should always be set explicitly for each mapping.

license

This one is tricky. Propagating it would mean that the set-level license is not the license of the set, it is the license of all the mappings in the set (which is not the same thing).
In fact, if we follow the logic above about publication_date, where only a mapping set can ever said to be published (and thereby needs a publication date), then similarly only a mapping set needs a license.
No opinion for all the other slots.

I updated all the suggestions @gouttegd  according to your comments! I agree with all of them, thanks.

I have no good idea how to solve this. Lets start with the two most obvious ways: meta-modelling and default range assumption. […] Any other ideas?

It just occurred to me that there would be a third way, though it would involve a breaking change :scream: with the current version of the spec, so I don’t expect you to see it favourably. I mention it for completeness, though.
Add a new slot at the set level only called something like defaults (or default_values), where the mapping-level values that are the same for all the mappings in the set can be specified.
That is, instead of this:
#mapping_tool: "Microsoft MappingMaker 2000"
subject_id  predicate_id     object_id
EXA:0001    skos:exactMatch  EXB:0001
EXA:0002    skos:exactMatch  EXB:0002
EXA:0003    skos:exactMatch  EXB:0003

we would have this:
#defaults:
#  mapping_tool: "Microsoft MappingMaker 2000"
subject_id  predicate_id     object_id
EXA:0001    skos:exactMatch  EXB:0001
EXA:0002    skos:exactMatch  EXB:0002
EXA:0003    skos:exactMatch  EXB:0003

This would have two benefits:

It makes immediately obvious which values in the metadata block are really metadata about the set, and which ones are (default) metadata for the individual mappings, without having to refer to the spec to find the propagation rules. Everything that is under the defaults slot are individual mapping metadata and should be propagated, everything that is outside of defaults are mapping set metadata and should never be propagated.

It allows to use the same slot name for a metadata that we want to exist both at the set level and at the individual mapping level. For example, if we decide that the mapping set should have its own creation_date (independently of the creation date of the mappings), we could have

#creation_date: ... (date when the mapping SET was created)
#defaults:
#  creation_date: ... (default creation date for all individual mappings)

Which is something that would not be possible with the current system.
The obvious slightly minor inconvenient of this approach is, at noted above, that it is completely different from the current version of the spec and therefore would make several people unhappy (myself included, since the change would obviously affect SSSOM-Java!), at least for the beginning.

This is not a bad idea! I am assuming it will cause some upheaval. I will run it by Chris in my next call with him and see what he thinks.

I am assuming it will cause some upheaval.

Certainly. And there is a reasonable argument to be made that if it has taken so much efforts to convince people to adopt SSSOM, pushing an incompatible change now would not be wise and could lead to those people deciding to drop the standard.

Any update on this?
If there is no objection to this comment, I’d like to start turning it into actual changes both in the specification (e.g., removing the publication_date slot from the Mapping class to keep it only in the MappingSet class) and in the documentation (to explain which slots should be propagated).

I think the following we can enact right now as suggested by the comment you linked:

Slot currently not globally specifiable but maybe should be?
Slot only exist on mapping level, and should not exist globally:
Slot exists on both levels, but should probably only exist on mapping set level

The question of how to deal with default values is still open. I have now added it to my agenda with @cmungall to contemplate (forgot it last time), and see what we agree on.

I think the following we can enact right now as suggested by the comment you linked:

OK, can prepare a PR to update the model to move slots around and update their description as needed.

The question of how to deal with default values is still open. […] he had a "51% towards metamodel solution but open to other". The metamodel solution would be to add a flag like "propagates: true" to all the slots that can propagate

I am fine with that solution, but I could use some help with the implementation, because it’s unclear to me how you can add an arbitrary flag to a slot in LinkML

You can probably reach out to @sierra-moxon (also on OBO slack) who is one of our LinkML master wizards.

Done with #368 (in the spec/doc) and #371 (in the model).
The one thing that would remain to be decided is whether propagation/condensation is allowed when using other formats than SSSOM/TSV (e.g. JSON-LD), but that will need to be done as part of the efforts to actually specify those formats.
For what it’s worth, I believe condensation (and therefore propagation) does not make much sense for both the RDF and the JSON-LD serialisation. Those serialisations are very ”verbose” anyway, trying to save space by condensing slots with the same value to the level of the set would be pointless. That being said, I am not (strongly) opposed to the idea.

Regarding this:

The one thing that would remain to be decided is whether propagation/condensation is allowed when using other formats than SSSOM/TSV (e.g. JSON-LD), but that will need to be done as part of the efforts to actually specify those formats.

Propagation and condensation are characteristics of model interpretation (driven by settings within the mapping metadata, or maybe I should say metamodel), are they not? Their should not be any difference in how the model is interpreted whether it is TSV, JSON-LD, or RDF, should there?  Under the metamodel solution, the interpretation is explicitly defined for SSSOM content.
I can't see any obvious issue in representing the same characteristics in those other formats. The top-level metadata will define what propagates and can be expressed in any of the formats.
And the biggest value of this capability is not really about saving space, even in TSV you're not saving much space. It's about cognitive load—you don't want someone to have to manually review every mapping to make sure the metadata attribute has been added to that particular mapping and is exactly the same. Just scanning (or searching) for exceptions is way easier, in any format.

Their should not be any difference in how the model is interpreted whether it is TSV, JSON-LD, or RDF, should there?

There could be, if we decided to.

I can't see any obvious issue in representing the same characteristics in those other formats.

I don’t see any issue either. I just also don’t see the real value in doing so.
But at the same time, I do see the value of not having to treat the different serialisation formats differently, which is why I said that I am not strongly opposed to it.
If we decide to treat condensation/propagation as a general characteristic of the model that is independent of the serialisation, then all that needs to happen is to move the description of the condensation/propagation operations from the section about the TSV format (where it currently resides) to the general section about the data model.


Issue when refreshing objects in joined hierarchy schema in 3.0.0

Hi,
I got an issue when upgrading from 2.5.1 to 3.0.0.
I'm using a joined hierarchy system and two different databases (sqlite and postgresql).
I realized that if an object from the postgresql DB was expired, the system would try to load it from the default DB, sqlite in my case, even if it came originally from the postgresql DB.
Here's a minimal code to reproduce the issue:
from sqlalchemy import Column, Integer, String, case, and_, Table

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///first.db"
app.config["SQLALCHEMY_BINDS"] = {"second": "sqlite:///second.db"}
db = SQLAlchemy(app)

class Notices(db.Model):
    __bind_key__ = "second"
    __tablename__ = "Notices"
    ID_Event = db.Column(db.Text)
    Packet_Type = db.Column(db.Text, nullable=False, primary_key=True)

    __mapper_args__ = {
            "polymorphic_on": Packet_Type
            }

class Notices_Suite(Notices):
    __tablename__ = "Suite_Notices"
    Packet_Type = db.Column(db.Text, db.ForeignKey("Notices.Packet_Type"), nullable=False, primary_key=True)
    RA = db.Column(db.Float)

    __mapper_args__ = {
            "polymorphic_identity": "STANDARD",
            }

with app.app_context():
    db.create_all()
    n = Notices_Suite(
        Packet_Type="STANDARD",
        ID_Event="event",
        RA=0,
    )
    db.session.add(n)
    db.session.commit()
    alert = db.session.query(Notices).first()
    print(alert)
    db.session.expire(alert)
    print(alert.ID_Event)

Running the code raises an exception stating that the 'Notices' table does not exist, because it is trying to get it from the default DB instead of the "second"
The expected behaviour is that the object would be reloaded when needed.
Environment:

Python version: 3.10
Flask-SQLAlchemy version: 3.0.0
SQLAlchemy version: 1.4.36

You can't have foreign keys between databases, and that hasn't changed. That's just a limitation of databases, not something that Flask-SQLAlchemy or SQLAlchemy can change.

Both models belong to the same database. This seems to work well on 2.5.1.

I missed that you were using inheritance.

OK, I see what's going on, the order that our Session.get_bind checks things to find the right bind can fail for joined inheritance in some cases (and probably for other types of queries). When it fails to find a specific bind, it falls back to the default bind.


Animation Reset?

Is there a way to reset an animation back to frame 0 programmatically? Or better yet a way to load the image in a non-animated state?

I wish there be a public method called reset or something alike, it'd be a great help.
I'm making a walk-through page with GIFs in different pages and I want the GIF image plays from the beginning when it is displayed.

Can't you just do:
animagedImageView.animatedImage =  animagedImageView.animatedImage;

to restart the animation?

I think you'd have to set to nil first before setting back to the initial image, because setting that same image on it twice is a no-op. But yes, that should do it.

FLAnimatedImage  *temporaryImage = myAnimatedImageView.animatedImage;
myAnimatedImageView.animatedImage = nil;
myAnimatedImageView.animatedImage = temporaryImage;

The above code did a trick for me.


Added identity and occurrences to evidence. Updated test cases.

Closes #129

according to https://github.com/CycloneDX/specification/blob/56dfd3dbd957dab6ce4d48310b9ec70c8a21ef8d/schema/bom-1.5.schema.json#L1262-L1268
and https://github.com/CycloneDX/specification/blob/56dfd3dbd957dab6ce4d48310b9ec70c8a21ef8d/schema/bom-1.5.schema.json#L1299-L1305
We have an overall confidence, and we have multiple specific confidence values.
One could argue that an overall confidence might be derived of (e.g. meridian over all) all specific confidences. This would be true if all specifics were weighted equally.
The mere existence of an overall confidence value indicates that this is not the case.
Therefore, i would argue, that the weighing of each specific confidence value should be published.
And if this was published, then an overall value would no longer make sense, since it could be calculated by each tool that digested this document.
:x: Therefore, Ii do not agree to the existence of such property.

@jkowalleck Thanks for your input. Based on today's IWG meeting, it's my understanding that weight is no longer being considered, as its up to the consumer to place weight on what they believe are the most important techniques for analysis. Is  that correct? Is weight being withdrawn? If so, then perhaps some documentation improvements to describe consumer weighting?

Per https://github.com/CycloneDX/specification/issues/129#issuecomment-1488483425 callstack is being added in. Will update when complete.

Ok, callstack support has been added back into this PR and test cases


Implement saturated_mul for Fixed64

sp_arithmetic::Fixed64 implements saturated_multiply_accumulate for unsigned types which does uint + self * uint. It would be great to also have (in pseudo-Rust) saturated_multiply<U: unsigned>(n: U) that does self * uint.

Yeah that makes sense.
Fixed64 is pretty much a proxy for our one and only use case for it in substrate, so it is not super generic.
Why do you need it?

I want numbers in the range of 1 to (e.g.) 1'000 to refer to the amount of my stablecoin that you are bidding for bonds as well as calculating the amount of expansion/contraction that needs to be done.

We actually removed one usag, but the other remains.

Closed by #5877