Move examples to a separate repo

When there are loads of examples (especially huge ones) in the repo, it significantly slows down the process of git-cloning it.
Would be good to move them to a separate repository and add a mention in the README about it.

For large repositories it is possible. For example Castle Game Engine is about 1 gigabyte.
I don't think it's worth moving the examples to a separate repository for < 50 megabytes.


Hooks implemented on ADS

@travula
Please review my code which is written for hooks service.

This pull request is now managed with CodeReviewHub. Refresh.


BUG- Core().run() raises an error in VS Code Notebook

Description
Executing tp.Core().run() will raise an error in VS Code Notebooks:

Output exceeds the [size limit](command:workbench.action.openSettings?%5B%22notebook.output.textLineLimit%22%5D). Open the full output data [in a text editor](command:workbench.action.openLargeOutput?e939e06d-a290-41ba-8539-292198447f8a)
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last)
File [c:\Users\jacta\.conda\envs\tp_2_1\Lib\argparse.py:1895](file:///C:/Users/jacta/.conda/envs/tp_2_1/Lib/argparse.py:1895), in ArgumentParser.parse_known_args(self, args, namespace)
   1894 try:
-> 1895     namespace, args = self._parse_known_args(args, namespace)
   1896 except ArgumentError as err:

File [c:\Users\jacta\.conda\envs\tp_2_1\Lib\argparse.py:2103](file:///C:/Users/jacta/.conda/envs/tp_2_1/Lib/argparse.py:2103), in ArgumentParser._parse_known_args(self, arg_strings, namespace)
   2102     # consume the next optional and any arguments for it
-> 2103     start_index = consume_optional(start_index)
   2105 # consume any positionals following the last Optional

File [c:\Users\jacta\.conda\envs\tp_2_1\Lib\argparse.py:2025](file:///C:/Users/jacta/.conda/envs/tp_2_1/Lib/argparse.py:2025), in ArgumentParser._parse_known_args..consume_optional(start_index)
   2024         msg = _('ignored explicit argument %r')
-> 2025         raise ArgumentError(action, msg % explicit_arg)
   2027 # if there is no explicit argument, try to match the
   2028 # optional's string arguments with the following strings
   2029 # if successful, exit the loop
   2030 else:

ArgumentError: argument --force/-f: ignored explicit argument '[c:\\Users\\jacta\\AppData\\Roaming\\jupyter\\runtime\\kernel-v2-99168hn1nHFYc8jn.json](file:///C://Users//jacta//AppData//Roaming//jupyter//runtime//kernel-v2-99168hn1nHFYc8jn.json)'

During handling of the above exception, another exception occurred:

SystemExit                                Traceback (most recent call last)
...
-> 1002     source_file = inspect.getsourcefile(etb.tb_frame)
   1003     lines, first = inspect.getsourcelines(etb.tb_frame)
   1004     max_len = max(max_len, first + len(lines))

AttributeError: 'tuple' object has no attribute 'tb_frame'

How to reproduce

create a Taipy Core app in VS Code Notebook:

from taipy import Config
import taipy as tp

# Normal function used by Taipy
def double(nb):
    return nb * 2

# Configuration of Data Nodes
input_data_node_cfg = Config.configure_data_node("input", default_data=21)
output_data_node_cfg = Config.configure_data_node("output")

# Configuration of tasks
task_cfg = Config.configure_task("double",
                                 double,
                                 input_data_node_cfg,
                                 output_data_node_cfg)

# Configuration of the pipeline and scenario
pipeline_cfg = Config.configure_pipeline("my_pipeline", [task_cfg])
scenario_cfg = Config.configure_scenario("my_scenario", [pipeline_cfg])

# Run of the Core
tp.Core().run()

Expected behavior
I should be able to execute tp.Core().run() in VS Code Notebook and use Taipy Core in it.
Runtime environment
Please specify relevant indications.

Taipy version: 2.1
VS Code Notebook (ipykernel:'6.21.3')

Hello @FlorianJacta, can you also provide the Python version?
For now, I can not reproduce the Bug on Python 3.10.8, with a Pipenv environment (seem like you are using conda as well).

@long did we encounter this issue with gui ?
I thought the force cli arg was added by notebook ?

@trgiangdo I have this issue with Python 3.10.10 and 3.11.0. I guess what is relevant is more the version of ipykernel or VS Code (1.76.1).

The problem seems like the --f option is interfering with Anaconda on Windows.
We'll need to reproduce and make sure that there is no other interference.

I'm having the same issue. Executing the code example above, I get this stack trace:
usage: ipykernel_launcher.py [-h] [--development | --experiment [VERSION] |
                             --production [VERSION]] [--force]
                             [--clean-entities] [--list-versions]
                             [--delete-version VERSION]
                             [--delete-production-version VERSION]
ipykernel_launcher.py: error: argument --force/-f: ignored explicit argument '/home/arcanaxion/.local/share/jupyter/runtime/kernel-v2-3370qs2v29kG36D9.json'
Output exceeds the size limit. Open the full output data in a text editor
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last)
File ~/.pyenv/versions/3.10.8/lib/python3.10/argparse.py:1859, in ArgumentParser.parse_known_args(self, args, namespace)
   1858 try:
-> 1859     namespace, args = self._parse_known_args(args, namespace)
   1860 except ArgumentError:

File ~/.pyenv/versions/3.10.8/lib/python3.10/argparse.py:2068, in ArgumentParser._parse_known_args(self, arg_strings, namespace)
   2067     # consume the next optional and any arguments for it
-> 2068     start_index = consume_optional(start_index)
   2070 # consume any positionals following the last Optional

File ~/.pyenv/versions/3.10.8/lib/python3.10/argparse.py:1990, in ArgumentParser._parse_known_args..consume_optional(start_index)
   1989         msg = _('ignored explicit argument %r')
-> 1990         raise ArgumentError(action, msg % explicit_arg)
   1992 # if there is no explicit argument, try to match the
   1993 # optional's string arguments with the following strings
   1994 # if successful, exit the loop
   1995 else:

ArgumentError: argument --force/-f: ignored explicit argument '/home/arcanaxion/.local/share/jupyter/runtime/kernel-v2-3370qs2v29kG36D9.json'

During handling of the above exception, another exception occurred:

SystemExit                                Traceback (most recent call last)
...
-> 1002     source_file = inspect.getsourcefile(etb.tb_frame)
   1003     lines, first = inspect.getsourcelines(etb.tb_frame)
   1004     max_len = max(max_len, first + len(lines))

AttributeError: 'tuple' object has no attribute 'tb_frame'

Environment:

Local virtual environment created with venv in WSL
Python 3.10.8
Taipy 2.1
VS Code 1.76.2
ipykernel==6.22.0

Is it to be expected that the stack trace is showing that the exception happened in argparse.py of my pyenv python executable? My VS Code notebook kernel is using a local .venv created from that pyenv python executable. The base pyenv python doesn't even have Taipy installed.

Hello, I tried running the same notebook in VS Code on the latest develop version which now outputs the following:
usage: ipykernel_launcher.py [-h] [--development | --experiment [VERSION] |
                             --production [VERSION]] [--force-run]
                             [--clean-entities] [--list-versions]
                             [--delete-version VERSION]
                             [--delete-production-version VERSION]
ipykernel_launcher.py: error: argument --force-run: ignored explicit argument '/home/arcanaxion/.local/share/jupyter/runtime/kernel-v2-75686ZX8c9G2yuQc.json'

# same as before

ArgumentError: argument --force-run: ignored explicit argument '/home/arcanaxion/.local/share/jupyter/runtime/kernel-v2-75686ZX8c9G2yuQc.json'

During handling of the above exception, another exception occurred:

SystemExit                                Traceback (most recent call last)
...
-> 1021         source_file = inspect.getsourcefile(etb.tb_frame)
   1022         lines, first = inspect.getsourcelines(etb.tb_frame)
   1023     except OSError:

AttributeError: 'tuple' object has no attribute 'tb_frame'

Hello again @arcanaxion and @FlorianJacta,
In the current version, both --force and --force-run are conflicted with vscode-jupyter package on Windows.
For now, just as a work-around, we will rename the option to --taipy-force to avoid any further conflict.
In the future, Taipy and Taipy-core will have a better method to setup arguments to run the application.
Thank you again.

@trgiangdo Thanks for your work on this issue because I much prefer using notebooks in VS Code than in Jupyter Notebook/Lab.

In the current version, both --force and --force-run are conflicted with vscode-jupyter package on Windows.

I'm not sure how VS Code extensions work, but should this still be affecting me in WSL?

Ah, maybe the conflicts are on Linux too 😅
Either way, soon after some renaming, you should be able to use the VSCode extension again.

Hello @arcanaxion, we've just released a hotfix. You can update taipy-core to 2.1.4 and Core service should work in VsCode jupyter notebook now.


How to set country restriction

Ignore this - i found it from looking through your samples - Awesome work!
Hi there - this is looking good, but I can't see how i can set the country restriction - all searches are returning results from India - the documentation link seemed to be dead too.
Cheers

Hi. The Documentation Link is fixed (https://tanoy009.github.io/ng4-geoautocomplete/docs/).
Please update your module with the latest version i.e 0.0.7.
You can set the country restriction via 'geoCountryRestriction'. It should be an array of country code like this [ 'us','pr','vi','gu','mp'].


Cannot download file with % or # or ' in the filename

Traceback (most recent call last):
  File "backup.py", line 257, in save_file
    fout.write(download_file(headers, member_id, metadata['path']))
  File "backup.py", line 229, in download_file
    r.raise_for_status()
  File "C:\Users\Tom Oakley\Anaconda3\lib\site-packages\requests\models.py", line 837, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url:

Test with parentheses too.
Propose
path.replace(r'%', r'%25')
or
urllib.parse.quote(path)

The characters appear to be causing problems because they are special characters in URLs.  The switch to using the dropbox SDK rather than the requests library in backup_dropbox v2 may fix these issues.

Fixed in v2.0+


Allow nav bar to scroll above the screen edges

I am trying to achieve this behaviour:

I have a not translucent navigation bar (gray), a plain view (blue) and a scroll view. The blue view is not the header of the table, is just a view above it. I need the view to scroll along with the navbar to a certain point, and then stop scrolling.
I'd like to know if there is a way to solve with the current state of the project. I have been playing with followers, but I didn't make it. I've made some changes in the repo to achieve this video, and it seems to work, but still a little buggy. If you are interested in this feature, I can submit a PR to review.

closed after #352 is merged


Check for custom properties in no-color-keywords

Fixes #1120
Checks for custom properties when looking at color-keywords. I.e. the custom property is named --red.
<DCO 1.1 Signed-off-by: Dan Purdy<EMAIL_ADDRESS>

Coverage remained the same at 97.529% when pulling e31abb6230815c3f49f97b322cb968526fa5ba10 on feature_fix-color-keywords into 373d345aded602a9d4ca563dd48653163db0d71d on v1-dev.

Coverage increased (+0.04%) to 97.573% when pulling 9ee433045e40dc1c23958af80d8e7ec8f797c879 on feature_fix-color-keywords into 373d345aded602a9d4ca563dd48653163db0d71d on v1-dev.


Incorrect nested modal positions

Bug Report
Steps
Create nested modals, adding a close icon on the second one:
You can use this snippet on modal examples:
import React from 'react'
import { Button, Icon, Modal, Image } from 'semantic-ui-react'

function ModalExampleMultiple() {
  const [firstOpen, setFirstOpen] = React.useState(false)
  const [secondOpen, setSecondOpen] = React.useState(false)

  return (
    <>
      <Button onClick={() => setFirstOpen(true)}>Open first Modal</Button>

      <Modal
        onClose={() => setFirstOpen(false)}
        onOpen={() => setFirstOpen(true)}
        open={firstOpen}
      >
        <Modal.Header>Modal #1</Modal.Header>
        <Modal.Content image>

            <Icon name='right arrow' />

         <Modal.Description>

            This is an example of expanded content that will cause the modal's
            dimmer to scroll.

          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image
            src='https://react.semantic-ui.com/images/wireframe/paragraph.png'
            style={{ marginBottom: 10 }}
          />
          <Image src='https://react.semantic-ui.com/images/wireframe/paragraph.png' />
        </Modal.Description>
        </Modal.Content>
        <Modal.Actions>
          <Button onClick={() => setSecondOpen(true)} primary>
            Proceed <Icon name='right chevron' />
          </Button>
        </Modal.Actions>

        <Modal
          onClose={() => setSecondOpen(false)}
          open={secondOpen}
          size='small'
          closeIcon
        >
          <Modal.Header>Modal #2</Modal.Header>
          <Modal.Content>

That's everything!

          </Modal.Content>
          <Modal.Actions>
            <Button
              icon='check'
              content='All Done'
              onClick={() => setSecondOpen(false)}
            />
          </Modal.Actions>
        </Modal>
      </Modal>
    </>
  )
}

export default ModalExampleMultiple

Expected Result
When opening the nested modal, it should be centered
Actual Result
The nested modal appears at the top of the page and the close icon is cut off
Version
Last version
Testcase
https://codesandbox.io/s/semantic-ui-react-forked-k9cx5?file=/index.js

Make sure your semantic-ui-css is up to date (latest ver) and that you dont double import at public index.html if you are using CRA

This is due to the size of the first modal being so large. There would actually be a significant amount of engineering needed I think to determine how to make a second modal stay centered once a larger modal was on screen that requires controlling. I do not think this time will be invested because the nested modal edge case is a bad UX pattern. There are lots of articles talking about how to remove these patterns from products by doing a quick "nested modals ux" search which will yield a lot of articles with strategies to avoid this pattern.

@brianespinosa I appreciate the reminder that modals shouldn't be overused, but I think there are many valid cases for modals and even nested modals. The merits of modals aside, this framework supports nested modals and the documentation provides examples for them, thus I think they should work.
I can help characterize this problem a bit more as I just ran into it.
At first I had a nested modal where everything was centered, horizontally and vertically as I intended. Then, I noticed that after the content in my first modal got long enough that it would scroll, now the 2nd modal was no longer vertically centered but it was now near the top of the screen.
As a workaround, I set <Modal.Content scrolling> and now the 2nd modal is again centered, both vertically and horizontally.


latex snippet in snipmate style doesn't work

I have created a tex.snippets file and wrote some snippets, but when I typed the triggering phrase and pressed , it does nothing. My other snippet filetypes like cpp and python works fine.

Mhmm, I can think of checking:

logs (:h luasnip-logging) will tell you if loading failed somehow
is the filetype actually tex and not latex? :set ft=tex to make sure

I think the filetype for .tex files is plaintex

For .tex files I believe LuaSnips recognizes 2 ways of specifying snippets

luasnippets/<filytype>.lua so luasnippets/<tex>.lua

luasnippets/<filetype>/<anything>.lua so luasnippets/tex/<anything>.lua

I'm not sure if it's LunarVim-specific though. But anyways, this would mean that doing tex.snippets is incorrect.

filetype and extension are not the same, try running  nvim /tmp/asdf.tex  and then  :set ft  and you will see the filetype.

:set ft in my .tex file returns the following

I see what's going on, so instead of letting the latex's filetype is tex, I just set it as plaintex, and it worked well. Thank you so much!


Assessment: Focus inline feedback editor once in edit mode

Checklist
General

[ ] I tested all changes and their related features with all corresponding user types on a test server.
[x] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Server

[ ] Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
[ ] I followed the coding and design guidelines.
[ ] I added multiple integration tests (Spring) related to the features (with a high test coverage).
[ ] I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
[ ] I documented the Java code using JavaDoc style.

Client

[x] Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
[x] I followed the coding and design guidelines.
[x] Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
[ ] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
[ ] I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
[x] I documented the TypeScript code using JSDoc style.
[ ] I added multiple screenshots/screencasts of my UI changes.
[x] I translated all newly inserted strings into English and German.

Changes affecting Programming Exercises

[ ] I tested all changes and their related features with all corresponding user types on Test Server 1 (Atlassian Suite).
[ ] I tested all changes and their related features with all corresponding user types on Test Server 2 (Jenkins and Gitlab).

Motivation and Context

Resolves #6675
Once a tutor inserts inline feedback inside programming exercise manual assessments, you want to start writing immediately. Therefore the textbox should be focused in edit mode, which was not the case.
Description
There are two cases in which we want the textbox to be focused:

initial open: the angular components for each line are created at page load and get visible through an added class name (this is part of the ace-code-editor functionality). Therefore, we can not solve this inside the angular component but focus the textbox when the class name is added externally.
enter edit mode on existing feedback: we can do this inside the angular component by reacting to the editFeedback "event"

Steps for Testing

Prerequisites:

1 Instructor
2 Students
1 Programming Exercise with Manual assessment

Log in to Artemis
Navigate to Course Administration >  > Exercise Dashboard > Start Assessment
Add new inline feedback and verify that the cursor is already inside the feedback textbox
Save the inline feedback
Click the Edit button and verify that the cursor is again inside the feedback textbox

Exam Mode Testing

Review Progress

Performance Review

[ ] I confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
[ ] I confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

[ ] Code Review 1
[ ] Code Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Exam Mode Test

[ ] Test 1
[ ] Test 2

Test Coverage

Screenshots

Codecov Report

Merging #6797 (3754eb8) into develop (ffebd27) will increase coverage by 0.05%.
The diff coverage is 50.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #6797      +/-   ##
=============================================
+ Coverage      80.37%   80.43%   +0.05%
- Complexity     13913    13984      +71
=============================================
  Files           2448     2448
  Lines          93343    93588     +245
  Branches       13104    13150      +46
=============================================
+ Hits           75028    75279     +251
+ Misses         10088    10061      -27
- Partials        8227     8248      +21

Impacted Files
Coverage Δ

...hared/code-editor/ace/code-editor-ace.component.ts
59.64% <0.00%> (-0.53%)
:arrow_down:

...itor-tutor-assessment-inline-feedback.component.ts
91.48% <100.00%> (+0.18%)
:arrow_up:

... and 129 files with indirect coverage changes

Flag
Coverage Δ

client
76.23% <50.00%> (+0.10%)
:arrow_up:

server
84.96% <ø> (-0.01%)
:arrow_down:

Continue to review full report in Codecov by Sentry.

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

Tested on ts6, works as expected


C++ version of PPSwerveControllerCommand release date?

Hi,
Is it likely a C++ version of your PPSwerveControllerCommand will be released in the near future?  Last Season we modified the WPILib SwerveControllerCommand example code to process PathPlanner paths (that included holonomic rotations) instead of the standard WPILib Paths and we also modified the PP code to read the JSON Vel and Acc values form the paths files directly instead of using hard coded max Vel and Max Acc arguments in the constructor, and we eventually got it working really really well, but we were so far out of our depth having to copy and modify library code and we also had some seriously ugly nested sequential and parallel Command Groups happening in order to do things along the path.
Path Planner has come so far in the last 12 months with all the new features. Thankyou to all the contributors to this project.
We'd love to be able to use the new marker feature to launch commands along the way and use the new path groups feature so all our paths for an auto will all be in the one file. But with a C++ implementation of PPSwerveControllerCommand not released, I'm wondering if I need to go back down the worm hole and get my head back into that space (PTSD coming on) to write our own updated C++ version of SwerveControllerCommand that handles the markers, stop points and array of pointers to commands or should I just hold tight as the C++ implementation is just around the corner?
Cheers
Warren

The reason it currently isn't there is the vendordep template provided by WPILib does not include the C++ commands library. I have no idea how to add this dependency to the project since it seems to be undocumented and the way the gradle config works is different from a normal robot code project. It seems like it should be added in here but any name I could possibly think of for it doesn't work. If you have any ideas I'll give them a try.

I suppose worst case, if I can't figure out how to include it in the library, I can provide source code for the C++ commands that you can just copy somewhere in your project instead of every C++ team needing to write a custom version themselves.

I'm not really up on all the Gradle stuff. I'm more of a, look at sample code and modify it to make it work than fully understanding whats going on under the bonnet type of coder, so I can't offer much help in these types of issues.
Was the command based framework stuff setup as a dependency when they were transitioning from the old command based framework to the new command based framework a couple of years back, so you had a method choosing which command based framework you wanted to use?
I cant see wpilibOldCommands anymore in the repo. Has the old command based framework now been completely depreciated and the new framework in just part of the core WPILib code and hence it doesn't need to to be optionally selected now?
All this stuff is way above my understanding, Sorry I can't offer more help.

Yeah I don’t use gradle outside of FRC so I don’t get much of it either. I’m not really sure if this is how the WPILib compilation stuff works, but I believe that pretty much everything is a shared library, so including a dependency on the new commands framework might mess things up for teams not using a command based project since they won’t have that dependency in their project (although I’m not sure there’s many, if any, teams doing path following without the command framework). I guess I’ll just keep messing around with it for a bit to see if I can figure it out. If not I will post source files somewhere for c++ teams before the season starts.

We need someone that works on WPILib command based stuff to help out here. I think oblarg from the Wpilib Repo is the person that re-wrote the New C++ Command Based framework.  What is the exact question we need to ask him?

I don’t think it’s anything to do specifically with the commands framework since it’s typically included as a vendordep but the vendordep template needs it to be included differently by editing the gradle files somehow. I’ll probably just open an issue in the vendor template repo to ask what I need to change.

Yeah I don’t use gradle outside of FRC so I don’t get much of it either. I’m not really sure if this is how the WPILib compilation stuff works, but I believe that pretty much everything is a shared library, so including a dependency on the new commands framework might mess things up for teams not using a command based project since they won’t have that dependency in their project (although I’m not sure there’s many, if any, teams doing path following without the command framework). I guess I’ll just keep messing around with it for a bit to see if I can figure it out. If not I will post source files somewhere for c++ teams before the season starts.

Although I’m not sure there’s many, if any, teams doing path following without the command framework
It's not as bad as you might think
In fact, I prefer knowing what is actually happening on each loop than abstracting it into a command

Very interesting stuff @WarrenReynolds , I haven't considered the scalability of commands the way you phrase it. Our robot did most of the same stuff during autonomous and teleop with the timed framework. While I admit many of things we do would be considerably easier with commands, I still believe the flexibility of timed makes up for it. I prefer to spend more time writing something that I am in full control of rather than going with an easier solution and having to work around it if necessary. As far as scalability/readability goes, I'd say our codebase is quite good. Most, if not all, functions are written with the either the intention of being run one or looped, with some including loops and threads themselves. If you go into it with that mentality, almost everything is intuitive. Our codebase is spread across 19 cpp files and 29 hpp files. Here's an example of the buttonManager() function, which we call in teleopinit to handle our cargo path.

I definitely would like to do a further exploration into command based framework, especially as C++ support becomes more flushed out, but for now we're happy with what we use.

If you're interested in playing around with it, I made a working C++ version of PPSwerveControllerCommand. Its just a single .h file since I couldn't get it to compile as a .h and .cpp file for some reason. No idea why. I suppose if you want it separated you can try to separate it yourself and see if you have more luck. It seems like depending on the command framework is not really going to be an option so I will make more gists for the other commands at some point and document using them on the wiki.

Someone over in vendor template repo suggested a change that will let me depend on the new commands vendordep so these commands will now be added directly to PPLib. Downside being that teams not using the command based vendordep will probably need to install it. Unsure about if it will care if you never actually use any of the commands.


Remove type instabilities and unnecessary GC allocations

Use tools to remove type instability and eliminate GC allocations such as:

AllocCheck.jl
DispatchDoctor.jl
Cthulhu.jl and JET.jl,

Related to #87


New version: LibreWolf.LibreWolf version 121.0-1

Pull request has been created with Komac v1.11.0 :rocket:
Microsoft Reviewers: Open in CodeFlow

For moderators
This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping @Exorcism0666, I'll get a notification.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

@wingetbot waivers Add Validation-Domain

Hi @Exorcism0666,

This PR's version number 121.0-1 has 2 parameters (sets of numbers between dots - major, minor, etc), which is less than the current manifest's version 120.0.1-1, which has 3 parameters.

Is this intentional?
(Automated response - build 586)

@stephengillie yes!

Hi @Exorcism0666,

This PR's version number 121.0-1 has 2 parameters (sets of numbers between dots - major, minor, etc), which is less than the current manifest's version 120.0.1-1, which has 3 parameters.

Is this intentional?
(Automated response - build 609)


Automated Package Upgrade

:tada: This PR is included in version 2.2.252 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fixed update of existing soft deleted legacy export wins.

Description of change
This fixes the case when migration command encounters soft deleted legacy export win that already exists in Data Hub and cannot update it.
Checklist

[x] Has this branch been rebased on top of the current main branch?

Explanation
The branch should not be stale or have conflicts at the time reviews are requested.

[x] Is the CircleCI build passing?

General points

Other things to check

Make sure fixtures/test_data.yaml is maintained when updating models
Consider the admin site when making changes to models
Use select-/prefetch-related field lists in views and search apps, and update them when fields are added
Make sure the README is updated e.g. when adding new environment variables

See docs/CONTRIBUTING.md for more guidelines.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 96.42%. Comparing base (4da62e0) to head (e3fb518).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #5427   +/-   ##
=======================================
  Coverage   96.42%   96.42%
=======================================
  Files         940      940
  Lines       22346    22346
  Branches     2010     2010
=======================================
+ Hits        21547    21548    +1
+ Misses        651      650    -1
  Partials      148      148

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Many Chimera actions do not work

e.g.

restart steam
performance overlay
steam overlay

This is due to the use of sxhkd which is Xorg specific.
We should switch to https://github.com/waycrate/swhkd which works with both Xorg and Wayland.

Additionally, sxhkd remains enabled and spams journalctl with failure messages when switching to gamepadui. chimera-session gamepadui and chimera-session-use-gamescope should stop/disable the sxhkd service until swhkd is implemented.


QueryResource: Don't close JSON content on error.

Following similar issues fixed in #11685 and #15880, this patch fixes a bug where QueryResource would write a closing array marker if it encountered an exception after starting to push results. This makes it difficult for callers to detect errors.
The prior patches didn't catch this problem because QueryResource uses the ObjectMapper in a unique way, through writeValuesAsArray, which doesn't respect the global AUTO_CLOSE_JSON_CONTENT setting.

The issue was the new code wasn't using the fully-customized ObjectMapper from the toolchest, so it wasn't respecting parameters like resultAsArray. The new patch fixes that.


Fix bug.  support for task execution without arguments

Now. can not execution no args tasks.
@shared_task
def test_task():
    print("Hello, World!")

func main() {

        cli, _ := gocelery.NewCeleryClient(
                gocelery.NewRedisCeleryBroker(REDIS_URL),
                gocelery.NewRedisCeleryBackend(REDIS_URL),
                1,
        )

        asyncResult, err := cli.Delay(test_task)
        if err != nil {
                panic(err)
        }

go run main.go
[2019-06-26 17:37:44,256: ERROR/ForkPoolWorker-2] Task test_task[cd94a9db-cdec-43f4-be87-7474df4cca21] raised unexpected: TypeError('test_task object argument after * must be an iterable, not NoneType')
Traceback (most recent call last):
  File "/$HOME.local/share/virtualenvs/test-python-repo--NH_gJ4S/lib/python3.7/site-packages/celery/app/trace.py", line 385, in trace_task
    R = retval = fun(*args, **kwargs)
TypeError: test_task object argument after * must be an iterable, not NoneType

https://github.com/gocelery/gocelery/blob/master/message.go#L171
Add below code.
fmt.Printf(stirng(jsonData))
Debug log.
{"id":"81af5e46-b6dc-46c3-9057-d21202d9c2aa","task":"vulns.tasks.test_task","args":null,"kwargs":{},"retries":0,"eta":null}
args is null.

I'm sorry. why failed ci test...
Please advice.

Can't stop worker Within 10 seconds...

my temporary workaround is just pass array as variadic input
package main

import (
	"github.com/gocelery/gocelery"
)

func main() {
	cli, _ := gocelery.NewCeleryClient(
		gocelery.NewAMQPCeleryBroker("amqp://guest:guest@localhost:5672/"),
		gocelery.NewAMQPCeleryBackend("amqp://guest:guest@localhost:5672/"),
		1,
	)

	args := make([]interface{}, 0)
	_, err := cli.Delay("my_package.my_task", args...)
	if err != nil {
		panic(err)
	}

}

Thank you @afdalwahyu
Me too. Now, I adapt the same workaround.
I made a PR as a permanent measure, but isn't it?

Added additional tests and merged the changes into master.
https://github.com/gocelery/gocelery/pull/150

Thank you add test.
I didn't recieve notification...


Tooltip Does Not Show on react-native-web

Using version 1.4.22 I am able to see my tooltip on ios and android but when testing the react-gifted-charts in a react-native-web project the tooltips do not show when hovering over datapoints. I have tried a variety of config changes but have never successfully seen a tooltip on hover. Is there a specific prop to enable this?

Hi @jeffpearsall
For web I would suggest you use react-gifted-charts
Hover options are not available in this library but will be added soon.


Registrator

@JuliaRegistrator register

@JuliaRegistrator register

@JuliaRegistrator register

Registration pull request updated: JuliaRegistries/General/85875
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" fab34006ca75629a2c0ced95cfa9686202040a8b
git push origin v0.1.0


bug: 404 Page Return Button Does Not Work

Bug Definition
In 404 error page return to home button doesn't return to home page instead it returns to 404 page.
-- Please add discord contact information
** discord username: @Aksel#7033 **
## Bug environment
Describe the environment produces the bug. For example:
https://secim.gonullu.io/en/
Describe how you are producing the bug step by step

Go to https://secim.gonullu.io/en/asdasd
Click the return to home button

Expected Behaviour
The button should return user to home page.
Desktop Information

Windows 11
Mozilla Fİrefox, Safari

Mobile Phone Information

Devıce: [for example iPhone6]
Operating System (with the version): [for example iOS8.1]
Version [for example default browser, safari]
Browser Version [for example 22]

Additional Context

I was very confused for a moment there haha 😅

I was very confused for a moment there haha 😅

sorry for misunderstanding i was trying to write my discord username 😅 it was my bad sorry


Fresh Install - Screen Doesn't Update on Click/Keypress

chronos@localhost / $ sudo edit-chroot -all
name: xenial
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xenial...
crouton: version 1-20200116214215~master:9017d640
release: xenial
architecture: amd64
xmethod: xorg
targets: xfce
host: version 12607.82.0 (Official Build) stable-channel grunt
kernel: Linux localhost 4.14.149-13636-g9eade7219710 #1 SMP PREEMPT Fri Jan 10 00:14:58 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/xenial...

Please describe your issue:
Strange issue I'm having. Not even sure how to really describe it. Installed using the instructions in the readme and any time I click or press a key, I have to switch to Chrome OS and back for the screen to actually display what I've done. It seems like everything is being processed, just not displayed until switching.
Running the sudo startxfce4 command:

Machine loads xfce and dumps me back in Chrome OS:

Swap to xfce, click to open 2 terminal windows (have already clicked in screenshot):

Switching to Chrome OS to get xfce display to update:

Switching back to show updated display:

My stupid workaround is - run "glxgears" or anything that updates window every frame, and check if it works for you. Obviously not great way.

@TacClark  & @malkia,
For some more info. and another possible workaround see https://github.com/dnschneid/crouton/issues/4241#issuecomment-602252335
Hope this helps,
-DennisLfromGA


sammy debug

Add debugging support via OpenOCD and GDB (or some other custom debugger).
sammy debug /path/to/firmware.elf
sammy debug  --platform="stm32f10x" /path/to/firmware.elf
sammy debug main.cpp

This will open an OpenOCD session along with GDB and dump the user into the GDB shell.
The platform will be deduced from the build directory path. Users can force their flavor of platform by using the --platform option
If a source file is given, an associated .elf file must have already been generated from a build command. If so, the associated .elf file will be found in the build directory and a debug session will be started.

May want to consider https://github.com/pyocd/pyOCD


[MCOMPILER-457] Warn about warn-config conflicting values

Following this checklist to help us incorporate your
contribution quickly and easily:

[x] Make sure there is a JIRA issue filed
for the change (usually before you start working on it).  Trivial changes like typos do not
require a JIRA issue.  Your pull request should address just this issue, without
pulling in other changes.
[x] Each commit in the pull request should have a meaningful subject line and body.
[x] Format the pull request title like [MCOMPILER-XXX] - Fixes bug in ApproximateQuantiles,
where you replace MCOMPILER-XXX with the appropriate JIRA issue. Best practice
is to use the JIRA issue title in the pull request title and in the first line of the
commit message.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Run mvn clean verify to make sure basic checks pass. A more thorough check will
be performed on your pull request automatically.
[x] You have run the integration tests successfully (mvn -Prun-its clean verify).

If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.
To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

[x] I hereby declare this contribution to be licenced under the Apache License Version 2.0, January 2004

[ ] In any other case, please file an Apache Individual Contributor License Agreement.

May I ask for review, please?

Does this PR resolve issue?
As I understood setting only failOnWarning to true has no efect.
Maybe when failOnWarning is true we also need to change showWarnings to true.

I didn't want to change currently implemented logic.
MCOMPILER-457 happened to me as well. Caused some... confusion.
For future me, that does not remember that, it'd be fine to be warned about strange plugin set up.

Maybe when failOnWarning is true we also need to change showWarnings to true.

Maybe. I'd like to have the warning at least in such case as well, that parameter is updated out of my control.

Is there any change requested here?

maybe we should simply change showWarnings to true per default as described in MCOMPILER-457?

maybe we should simply change showWarnings to true per default as described in MCOMPILER-457?

Doing so in apache/maven-compiler-plugin#157
What about THIS change?

May I ask for review, please?


xdai.gnosis-safe.io walletconnect requests ethereum instead of xdai network.

Description
xdai.gnosis-safe.io walletconnect requests ethereum instead of xdai network. Try with Minerva Wallet or Alpha Wallet.
I had a quick look at the code https://github.com/gnosis/safe-react/blob/a79a4d16a7eaa69cafa5f9206f9935dca771ea05/src/logic/wallets/utils/walletList.ts#L18-L25 and with correct ENV config at REACT_APP_NETWORK=xdai , I think it should already work. But the deployment doesn't.
Environment

Browser: Chrome (Mobile) & Chromium
Wallet: WalletConnect
Safe:
Environment:

production (rinkeby)

Steps to reproduce

Go to xdai.gnosis-safe.io
Connect via WalletConnect
Scan or click deep link with Minerva Wallet or Alpha Wallet.
It connects to the wrong network.

Expected result
Connects to xdai chain.
Obtained result
Connects to ethereum network.

I confirm. WalletConnect always requests mainnet chain id:
<== {"id":1632993998809041,"jsonrpc":"2.0","method":"wc_sessionRequest","params":[{"chainId":1,"peerId":"893690a7-72ca-4b4b-8267-89143abd5c4a","peerMeta":{"description":"","icons":["https:\/\/rinkeby.gnosis-safe.io\/app\/favicon.ico"],"name":"Gnosis Safe","url":"https:\/\/rinkeby.gnosis-safe.io"}}]}

I would consider this major. @liliya-soroka wdyt?

I reported this to the blocknative team before, will ping them again

https://github.com/blocknative/onboard/issues/711

Wasn't really fixed, waiting for https://github.com/gnosis/safe-react/pull/2939


testing of website

Healthcheck  is working
Date :- 23.02.2023

Healthcheck is working
Date :- 27.02.2023


[vscode-oss]the language pack shows misalignment

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.92.2
OS Version: win10

Steps to Reproduce:

Probabilistic occurrence, has occurred twice so far

After modifying the source code, rebuilding and installing (exe) may result in the language pack being misplaced

After testing, it was found that deleting the folder C:\Users\<user>\AppData\Roaming\Code - OSS\clp would restore normal operation

The language pack has been added to product.json,then build exe

  "builtInExtensions": [
        {
            "name": "MS-CEINTL.vscode-language-pack-zh-hans",
            "version": "1.92.2024081409",
            "sha256": "eb7d50ca4f83b83627b17e5641d879365da56222d5a0b4f50e73ac0432ab160c",
            "repo": "https://github.com/microsoft/vscode-loc",
            "metadata": {
                "id": "e4ee7751-6514-4731-9cdb-7580ffa9e70b",
                "publisherId": {
                    "publisherId": "0b0882c3-aee3-4d7c-b5f9-872f9be0a115",
                    "publisherName": "MS-CEINTL",
                    "displayName": "Microsoft",
                    "flags": "verified"
                },
                "publisherDisplayName": "Microsoft"
            }
        }]

May I ask if it is a caching issue?

It may be due to inconsistent file generation order each time


add dynamic linker support

Why do we need it?
with the work of @reduz and alket soon we can have an asset sharing  ( addon ) but the missing system is that this addons is all in gd script but there are so many works that can be done in modules like add Admob,IAP,OpenCV,CameraCaputre,VRsupport and so many more , this modules should be compiled and it's scary for beginners just to clone the godot repo add the module then download dependencies and compile it but think about it if the modules is compiled and can be added to engine it will be great.
Problems

first of all that this modules should be compiled with compilers that the godot was compiled
every version of godot can load just the modules for that version
our last problem how can we implement it that it will be simple and easy to use both for module developers and engine users

my solution is that we just support those release on steam and in site the stable versions and if someone wants a custom version he should download the modules code and compile it themselves, for compatibility issue the modules should have a supported version and for different platform the compiled version should exist.
@akien-mga I will appreciate it if you  add feature request and discussion label to this issue

Related to #2701

I understand, but this is too much work for too little gain.
What we could do is configure Godot so you can set a path to your Godot
repository that you compile yourself, and downloading the addon will add a
module into Godot, that you can recompile.
On Sat, Mar 5, 2016 at 4:46 PM, Ignacio Etcheverry<EMAIL_ADDRESS>
wrote:

Related to #2701 https://github.com/godotengine/godot/issues/2701
—
Reply to this email directly or view it on GitHub
https://github.com/godotengine/godot/issues/3936#issuecomment-192718298.

I think it's too little gain is for you and me but think about the developers that they hope with godot they can bring food for their children :stuck_out_tongue_closed_eyes: and does not know anything about android sdks , ndk, gradle, or some of them even does not anything about git , I just say if it is lots of work just direct me in the right direction let me support this system but if you think that it is bad design for godot and you don't want that in godot then I think I should close this issue.

Would having a C API make the problem easier to solve?

@Zylann it would, in fact #3943 would make it possible to write wrappers directly in GDScript with no performance penalties.
You could (for example) just distribute an OpenCV module written in GDScript itself and it would call C code directly, much like it happens in other languages with FFI support (like this). In short, there would be no need for compiling.
But it should also be possible to write modules and link them dynamically. I think this is a huge issue Godot has - having to compile your own C++ modules makes no sense - but perhaps the problem is being cross-platform. What about something like Pluma?

Linking modules dynamically is not impossible (even without additional libraries), but might be a pain to setup correctly. I have discussed the issue with @est31 once and we actually went rather deep into it.
I might do this one day, but given the current state of affairs, for the next few months I have enough other issues to tackle first. If anyone of you wants to take it, I'm free to speak about it on IRC.

The problem is not linking modules dynamically, this is super easy. The
problem is creating modules for every single platform Godot supports.
On Wed, Jun 8, 2016 at 2:13 PM, Bojidar Marinov<EMAIL_ADDRESS>wrote:

Linking modules dynamically is not impossible (even without additional
libraries), but might be a pain to setup correctly. I have discussed the
issue with @est31 https://github.com/est31 once and we actually went
rather deep into it.
I might do this one day, but given the current state of affairs, for the
next few months I have enough other issues to tackle first. If anyone of
you wants to take it, I'm free to speak about it on IRC.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/3936#issuecomment-224661922,
or mute the thread
https://github.com/notifications/unsubscribe/AF-Z25uZVzcO9fhZqKDHirjbOIhYiBpbks5qJvgsgaJpZM4HqEgW
.

@reduz That would be the module developers' problem, not ours. So not a big issue, since even now, the modules have to be compiled for every single platform.

Yeah, the problem is that it's a lot of work for the module developer.
On Wed, Jun 8, 2016 at 2:41 PM, Bojidar Marinov<EMAIL_ADDRESS>wrote:

@reduz https://github.com/reduz That would be the module developers'
problem, not ours. So not a big issue, since even now, the modules have to
be compiled for every single platform.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/3936#issuecomment-224670379,
or mute the thread
https://github.com/notifications/unsubscribe/AF-Z2_-qH36U3CKDl09COFfwWIzGNxPwks5qJv64gaJpZM4HqEgW
.

@reduz I think a developer won't mind that if it means more users will use the module (since users don't need to build it nor the engine). Also a developer may just release the source and the users could share their builds (like unofficial builds of Godot).

An alternative I thought about could be to make a simplified, generated
from bindings, godot API for this to link from C or C++. It would at least
make it easier to link and keep compatibility between versions
On Wed, Jun 8, 2016 at 3:02 PM, Ignacio Etcheverry<EMAIL_ADDRESS>
wrote:

@reduz https://github.com/reduz I think a developer won't mind that if
it means more users will use the module (since users don't need to build it
nor the engine). Also a developer may just release the source and the users
could share their builds (like unofficial builds of Godot).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/3936#issuecomment-224676665,
or mute the thread
https://github.com/notifications/unsubscribe/AF-Z285dFHCuBTDnh5wr0iGAwUs9-0uuks5qJwOxgaJpZM4HqEgW
.

@reduz You mean like a libgodot.so which can be called from C++?

yes, exactly, you link your program against a wrapper header/lib and
generate a dll/so. Godot then loads this .so dynamically for every platform
On Wed, Jun 8, 2016 at 3:40 PM, paper-pauper<EMAIL_ADDRESS>wrote:

@reduz https://github.com/reduz You mean like a libgodot.so which can
be called from C++?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/3936#issuecomment-224687867,
or mute the thread
https://github.com/notifications/unsubscribe/AF-Z2y0eIsGDfvLhf2OMazSX0AXb0-82ks5qJwyTgaJpZM4HqEgW
.

@reduz That's a pretty good idea! Does this approach have any limitations? It would speed up C++ development a lot. +1

@paper-pauper the limitations is that you have the same API access as GDScript.

@neikeq that would not affect wrappers, which would only need to call the register hook. I think this is a good solution.

I don't really like the fact that GDScript would be required to bind dynamic modules, because GDScript is a module itself, it is optional. Modules depending on other modules is not a bad thing, but for such a core feature the engine's API should be enough.

For what @reduz proposed, GDScript is not required at all.
For what I proposed in #3943, you raise a good concern but GDScript is always bundled with Godot, so it'd be the best way to distribute wrappers (aside from C++, which is always possible). What other language aside from those two would you suggest for wrappers?

I wouldn't use an intermediate language, actually, or maybe use the reflection/Variant system, which is already a dynamic interface to the engine. I understand that it would reduce the requirements for the module creator. However, since it's heavily used in the engine, how would you inherit from Node, Reference, or Resource?
Also, theoretically, if you setup a standard build system for a module on each platform you want to support, you can easily update it for newer versions of Godot.
At the same time, I'm curious about what will be the best solution. I've worked on a few projects involving dynamic modules and realized a lot of problems need to be solved. My last engine project was litteraly designed around loading modules dynamically, assuming they won't change during execution because it's too much work to maintain validity of objects. So adding or removing modules requires to restart the engine, but that's way better already than having to setup a whole C++ environment to build everything.

I'll revive this thread with a proposal. Let me know what you guys think about it.
First a bit of context:
Distributing dlls/so files in Godot as external modules is to difficult due to the many different compilers, versions, ABI changes, etc. In a bit more detail.

C++ is terrible for binary compatibility in shared objects, the ABI is different between compilers and compiler versions.
Even if the same compiler was used, C++ requires symbols (class) sizes to be the same in order to link properly

This makes adding extra functionality as a .dll linking against Godot too difficult to even attempt.
An idea lurked around about creating a more stable mirrored C++ API that replicates API functions using a safer API, but this would only solve 2), not 1).
So, how about the following? Some functionality must of course be used as an extension, such as if you want to add a module that might replace the physics engine, but for the large amount of libraries and other stuff that might be nice to bind (ie, SQLite, ODBC, DBUS, Kinect, FMOD, whathever), having access via the script API to this would be fine. I think this could be solved via the following:

Create a very simple dynamic API via C, not C++ which can access most godot functionality, but only provide a minimal API.
C ABI is much more stable and compatible between compilers and compiler versions than C++.
C ABI would be simple and access most of Godot via the reflection API instead of headers, ie

godot_class c = class_db_get_class("Node2D");
godot_instance ins = godot_instance(c);
godot_call_method( ins, "set_pos", godot_vec2(10,22) );

the idea would be to simply add scripts using C, not sure how this would work exactly (CScript could be a class where you edit which which C class to instance) .
This would allow us to bind all sort of C and C++ libraries without any risk, given the ABI will always be C.
What do you think?

To add a bit more depth on how this would be used, we would just add a specific type of addon that is a CPlugin or somethin like this, like
addons/sqlite/sqlite.Linux.x86.32.so
addons/sqlite/sqlite.Linux.x86.64.so
addons/sqlite/sqlite.Windows.x86.32.so
addons/sqlite/sqlite.Windows.x86.64.so
addons/sqlite/sqlite.android.arm7.so
etc
Even WebAssembly has shared object loading in the roadmap.
This way it would be super simple to distribute this kind of content, and even distribute it in the asset library.

I've reread twice, but still not sure to understand what you mean by "the idea would be to simply add scripts using C".
For instance, let's say I want to make a Text To Speech plugin.
I guess that my plugin would have to create or extend an AudioStream with some custom methods and properties. Would it be possible ?

Would you be able to create and register object types and bind its methods with this approach? If so, how would inheritance work?

My first intuition would be that my plugin would have to create or extend an AudioStream with some custom methods and properties. Would it be possible ?

By design no, since there is not really any way to extend AudioStream and provide audio from a script. The script APIs are not low-level enough.
However, for such special cases like mixing audio in low level, or any other case where you want direct C access, it would be pretty easy to add a special API to do this as an exception..

Would you be able to create and register object types and bind its methods with this approach? If so, how would inheritance work?

yes and no. It would work the same way as scripts. If you want to create a custom button in C (not a very useful example :P ), you would specify that your C script (likely via API) is intended to go into a Button, then it will receive the same information as a script placed on a Button.
In the scene tree, you make it appear as custom types via EditorPlugin API, the same way GDScript scripts appear there,.

Again, what I am proposing is basically a "Use C as scripting language"

The usage will be really simple,. we' ll just a provide a single .h file for C programs to use with the Godot reflection API exposed in C. (again, not all classes and functions in a header, just the reflection API ).
This should be enough to make very simple shaderd objects/dlls we can even provide a small SConstruct to build those projects standalone.

I like the idea. If it does not limit the extension to .c then I would be able to create scripts with D using extern(C) :)

I like the idea. If it does not limit the extension to .c then I would be able to create scripts with D using extern(C) :)

you literally would use anything that interacts with C

I think this is a great idea, and it could really bring a lot of stuff to Godot. +1

Ah okay, I think I understood better now.
So for instance, this would allow us to use gdscript for prototyping complex AI algorithms, and later convert the gdscript into a faster compiled "C script".
And for instance, in case we don't have the ability to compile our Cscript for Macintosh or for Emscripten, we could just provide the original gdscript version instead of the "C version".
Sounds great !

So when you write a C script, you don't have access to the "Godot standard lib"? No DVector, no memory tracking, basically you need to recode everything?
If I were to convert my Voxel Tools module to this API, how would I generate voxel Meshes with SurfaceTool with the reflection API without slowing down the algorithm?
And how should I provide nodes such as VoxelTerrain or VoxelSprite?

@Zylann reudz's idea is best to use when you have a library and you want to set an api for it in gdscript without compiling the whole engine. but I think if you want to have a voxel  mesh and voxel tool you should write modules then compile the whole engine.

@Zylann If your voxel tools are meant to be distributed as an addon, I don't think it would be too troublesome to move code to C, but you would probably only want to move the voxel generation part. Should still be pretty fast though.

Regarding @Zylann's comment, the downside of @reduz proposal is that godot_call_method(ins, "method_name") uses variant call.
IMO it would be better to provide method calls for every method in the API which call their respective methods directly instead of using variant call. I don't think it would increase the size that much, 2~ MB at worst. The problem would be automatically generating such glue wrappers, because there is no way to automatically know the real method name. Another problem is that some of those methods are private. This is the same problem I faced when writing my C wrappers.

@reduz I think passing thousands of vertices to build meshes only using the reflection layer with the C API will generate a lot of overhead. A project I worked on before had the same idea to make a particle simulator module to communicate with the engine, it delivered terrible results compared to what can be done with a native API. Also, as I said, making my own module would also require to include my own base classes, including STL, and being unable to see it in the Godot profiler (memory/CPU).
Aside from my particular case, not being able to native link directly is kind of frustrating, because, even if I know C++ binary compatibility is worse, I always used cross-platform libraries without having to recompile them, from small ones like SFML to Qt, which is huge. Just pick the correct version. This can be done. Why can't Godot follow this scheme? Is it too big to maintain? Does the code changes too frequently?

IMO it would be better to provide method calls for every method in the API which call their respective methods directly instead of using variant call.

This would simply add a lot of size overhead to Godot unnecessarily. The point of this API is to use external libraries, not so much improve performance (even though you can still do it). I can see it justified for Mono but not for this.

I think passing thousands of vertices to build meshes only using the reflection layer with the C API will generate a lot of overhead.

@Zylann I don't think so, generating geometry is just filling up a few DVectors. This should be really fast as the C API will have functions to lock them/unlock them and access the raw data inside. Calling Mesh.add_surface() through variant_call won't happen nearly as often, so it should not be a performance limitation.

Would it be possible to have a method like godot_get_method(type, "set_pos") that returned a MethodBind? This way we could cache a method when needing to call it many times.

@neikeq yeah, don't see why not

For reference to those reading the thread, here's some documentation of why C must be used instead of C++:
http://www.mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands

With the C API method, is it possible to have modules that depend on others?
For example, a basic noise generation module, then a voxel module using the first one on a native level?

Here's a draft of how the C API would look like. It would be a single file:
http://pastebin.com/Qepcp5Nm

@reduz Looks clean and easy to use. Can't wait to see it in practice!
@Zylann I think it would be possibly simply by using the "extern" keyword, since it'd be all dynamically linked.

@reduz I hope those binding are going to be created automatically, is this correct? :smile:

@paper-pauper the problem is, if a module links another at compile-time as a dependency, how would it be usable as a Godot C module?
My last engine project supported this case by simply letting the OS load the dependencies, putting the libs next to each other. The system keeps a reference count, so it doesn't matters if the engine loads it a second time after.
Just wondering if that would be possible with Godot :)

@bojidar-bg the bindings will give you access to the regular Godot reflection API, you don't have to do anything from Godot side
@Zylann I don't think one of these modules will link another one

@reduz  It might not be that frequent, but it can happen, and is certainly possible to do. I already have module ideas in mind that would rely on this. Otherwise, the same issue that led Godot to support C modules would be present in modules again.

What about using libdl to load shared libraries at runtime instead of linking?

@paper-pauper  Why use a library when you can just link at compile time? #ItJustWorks

@Zylann here we are talking about dynamic loading in any case, otherwise you'd still have to recompile Godot in order to write modules, and in that case how would that be different from the current approach?

@paper-pauper I was asking this about modules depending on another module https://github.com/godotengine/godot/issues/3936#issuecomment-228597629. If you don't allow them to depend on another, you'll have the same problem as Godot: having to modify a module's source code and recompile it.

@Zylann and I said that by using dlopen, it is possible for modules to depend on other modules :)

@Zylann  @paper-pauper @bojidar-bg  I think you guys might be misunderstanding what this is.
This is a simple API to write C plugins that can be loaded dynamically. It does not intend to replace Godot modules (which are compiled-in) or even be a way to extend Godot using C++.
This this C API is created to distribute binary modules as ..DLL, .SO or .DYLIB (depending on the platform), that can be opened by any Godot version, in run-time and keeping binary compatibility.
The main use cases are:

Binding Godot to third party libraries without having to recompile Godot
Adding support to Godot for unexposed APIs present in the host OS without having to recompile Godot
Adding extra (fast) compiled bits of code to add-ons written mostly in GDScript without having to recompile Godot.

Unlike C++ modules that are compiled-in, this very simple C API will be limited because:

It won't allow to add new object types
It's a lot more difficult to write for
It won't have any access to Godot internals

@reduz I still think it's very cool, please go ahead :+1:

Here's a draft of how the C API would look like. It would be a single file:
http://pastebin.com/Qepcp5Nm
:+1: 3 :heart: 2

Would there be a way to subscribe to notification events and signals? Or  that would be possible already using the godot_script_ functions?

I see there is a Cscript module at godot source. Is this already available ? If so, how do I integrate libraries created with this API with GDScript ?

@Bitiquinho : it's not yet functional.

I'm currently working on a C++ module and it's a huge pain to have to re-link the entire godot project each time something change (especially considering godot output is ~120mo big vs my 10 .o files totaling 1.5mo...).
Furthermore, according to @reduz

The problem is not linking modules dynamically, this is super easy.

So it would make life really easier to be able to have dynamic linking support for godot modules (and to update the doc accordingly) :+1:

@touilleMan have you heard of gold? Its a very cool tool and has an incremental mode where it reserves some space so that when you change only a little bit, it will be able to re-link much faster than before.

@touilleMan I believe you can make a static module that dlopen a dynamic one, as suggested before.

@est31 thanks for the tip ! I got a speedup from 14.12s to 9.30s using gold on a single line change.
I manage to get my module compiled as a shared library, the result is much better (see here)
I takes 6.77s by running scons at the root directory (by comparison running scons with no changes takes 6.11s so it's mostly dependencies check overhead)
Finally I could go as low as 1.37s by specifying the target using scons bin/libmymodule.x11.tools.64.llvm.so (0.7s with no changes) given it cuts a lot the amount of dependencies :smiley:
However the road to get there was quite painful, so I think it should worth it to add a word about this in the documentation. If you agree I could work on this :+1:

@touilleMan dude that'd be great! +1

https://github.com/godotengine/godot-docs/pull/308 enjoy ! 😄

@touilleMan is awesomeMan, I'm sure this is gonna help lots of people :+1:

Just want to say that the DLScript module implements what reduz is proposing here.
See the readme for an overview of what it does.
It's almost finished, only a few edges that need rounding but it's feature complete.
Just leaving that here so nobody wastes resources to try to implement it themselves.

Closing, as GDNative (aka DLScript, aka cscript) is now implemented in the master branch :) :tada:


use air to run application in watch mode

https://github.com/cosmtrek/air

Thanks! Merging this with the conflict, will fix it locally.


C# and Unity wrappers

Fixed a bug where PlaybackDevice disposed the underlying device #2540, #2307 DSO-9910
Multi device support in Unity (via RsFrameProvider) DSO-10280

C#
Object pooling for frames and profiles
Fixed a bug where PlaybackDevice disposed the underlying device
Removed custom FrameSet marshaler
Add ICompositeDisposable interface to FrameReleaser and FrameSet
Processing blocks callbacks are marshalled through native user-data pointers, avoiding closure allocation
Added missing Format.Disparity32
Added Option interfaces (IOption, IOptions, IOptionsContainer)
Added IEnumerable to Pipeline
UNITY
Downgrade project version to 2017.4 LTS
VideoFrame to Texture2D uses FrameQueue and uploads data straight to GPU
Fixed stream configuration being reset when recording
Multi device support (via RsFrameProvider)
Processing blocks are now asset based, their options are persistent and they have a dedicated inspector UI.

I think that we can merge this one together with #2561 which fix a crash in the SW device example, update the documentation and fix few issues in the processing blocks in the unity project


XP-424 Remove unused packages

References
XP-424 Remove unused packages
Summary

Removed rope and requests

Are there any open tasks/blockers for the ticket?

Reviewer checklist
Reviewer agreement:

Reviewers assign themselves at the start of the review.
Reviewers do not commit or merge the merge request.
Reviewers have to check and mark items in the checklist.

Merge request checklist

[x] Conforms to the merge request title naming XP-XXX <a description in imperative form>.
[x] Each commit conforms to the naming convention XP-XXX <a description in imperative form>.
[x] Linked the ticket in the merge request title or the references section.
[x] Added an informative merge request summary.

Code checklist

[x] Conforms to the branch naming XP-XXX-<a_small_stub>.
[x] Passed scope checks.
[x] Added or updated tests if needed.
[x] Added or updated code documentation if needed.
[x] Conforms to Google docstring style.
[x] Conforms to XAIN structlog style.

@PanicButtonPressed Good point! I will change it.


Updated validations.py python script.

Fixed the behavior of validate_user function in validations.py.
Closes: #1
Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[x] Tests pass
[x] Appropriate changes to README are included in PR

@googlebot I signed it!

CLAs look good, thanks!
ℹ Googlers: Go here for more info.

I can't able to open that link. Showing me "Access not possible."


Dependency Track deduplication not working

Bug description
While uploading the same scan result multiple times from ZAP, SonarQube, Dependency Track etc to a CICD engagement in DefectDojo with Deduplication enabled, Dependency Track findings are not seen as duplicates.
Steps to reproduce
Enable Deduplication feature
Upload the same dependency track scan finding to CI/CD engagement multiple times.
Expected behavior
dependency track findings should register as duplicate.
Deployment method (select with an X)

[x] Kubernetes
[ ] Docker
[ ] setup.bash / legacy-setup.bash

Environment information
DefectDojo v. 1.9.3 ( release mode )
Sample scan files
JSON files below
deptrack1.txt
deptrack2.txt
Screenshots

Can yo uplease upgrade to 1.11.1 and try again? It should work according to the code, but 1.9.3 is already a bit old.

Can yo uplease upgrade to 1.11.1 and try again? It should work according to the code, but 1.9.3 is already a bit old.

We have tried it in v1.9.3 and v1.11.0.
The screenshot attached is for v1.11.0. Do you need me to upgrade it to 1.11.1?

We have tried it in v1.9.3 and v1.11.0.
The screenshot attached is for v1.11.0. Do you need me to upgrade it to 1.11.1?

No, 1.11.0 is fine.

No, 1.11.0 is fine.

I forgot to ask you what the (DEBUG) logs were showing, or the deduplication log. Anyway, this is caused by some very old logic in defect dojo around deduplication:
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76914 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76917 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76915 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76913 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur

I forgot to ask you what the (DEBUG) logs were showing, or the deduplication log. Anyway, this is caused by some very old logic in defect dojo around deduplication:
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76914 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76917 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76915 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:209] deduplication flags for new finding (static) 76921 and existing finding 76913 flag_endpoints: False flag_line_path:False flag_hash:False
[20/Jan/2021 14:00:16] DEBUG [dojo.specific-loggers.deduplication:204] no endpoints on one of the findings and the new finding is either dynamic or doesn't have a file_path; Deduplication will not occur

did some fixes in that PR.

did some fixes in that PR.

@pawnu can you try 1.12.0, it should work now.

@pawnu can you try 1.12.0, it should work now.

Thanks, it works now.


How to add image as background ?

How to add image as background ?

You could just add an image view behind the canvas :)


Uses specific_class.url instead of Page.url on Rich Text

I was overriding the url method for my Article/Page subclass. "View online" works fine but not on Rich Text link handler.

Thanks! I think this can be simplified to: page = Page.objects.get(id=attrs['id']).specific.
Could you add a test for this, please?

Ok! I'll write tests and place this week.
Thanks.

Completed in #3494


Canonical type comparison

Since in Numpy we have dtype('float64') == None, type comparison should be done using is or isinstance.
import numpy as np
a = np.array([1.1, 2.2])
print(a.dtype) # prints dtype('float64')
print(a.dtype == None) # prints True

This PR fixes that in accuracy_metrics.

Codecov Report
Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 57.70%. Comparing base (0d85e7d) to head (5d8370f).

Files with missing lines
Patch %
Lines

keras/src/metrics/accuracy_metrics.py
0.00%
0 Missing and 1 partial :warning:

:exclamation:  There is a different number of reports uploaded between BASE (0d85e7d) and HEAD (5d8370f). Click for more details.
HEAD has 6 uploads less than BASE

Flag
BASE (0d85e7d)
HEAD (5d8370f)

keras
4
1

keras-torch
1
0

keras-tensorflow
1
0

keras-jax
1
0

Additional details and impacted files
@@             Coverage Diff             @@
##           master   #20231       +/-   ##
===========================================
- Coverage   79.37%   57.70%   -21.67%
===========================================
  Files         501      501
  Lines       47444    47444
  Branches     8713     8713
===========================================
- Hits        37657    27376    -10281
- Misses       8023    18359    +10336
+ Partials     1764     1709       -55

Flag
Coverage Δ

keras
57.70% <0.00%> (-21.53%)
:arrow_down:

keras-jax
?

keras-numpy
57.70% <0.00%> (ø)

keras-tensorflow
?

keras-torch
?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

In general type comparisons are recommended to be done using is instead of ==. I have fixed some other places that this has happened too.


es6 import / esm

Using ES6 / esm
See 2. of https://github.com/marek-simonik/record3d-wifi-streaming-and-rgbd-mp4-3d-video-demo/issues/3

Thanks for your work!


Modelform Duplicated queries For Foreignkey Field

Hello , When i install django-debug-toolbar and saw that when form is rendering it duplicated  queries for products_category Field which is Foreignkey Field

@ShakilAhmmed Hey there, I am facing the exact same problem and couldn't find any reason as to why would it run same query twice. Did you find any luck with it ?

@ShakilAhmmed Hey there, I am facing the exact same problem and couldn't find any reason as to why would it run same query twice. Did you find any luck with it ?

No :(


Repair checkpoint for checkpoint corruption and not the WAL

When we try to replay a checkpoint here
https://github.com/prometheus/prometheus/blob/30505a202a4c33ceeb10bfb3ba01e371a2a10906/tsdb/head.go#L678-L680
we can encounter a wal.CorruptionErr. But we are repairing only the WAL irrespective of whether the corruption was from WAL or checkpoint:
https://github.com/prometheus/prometheus/blob/30505a202a4c33ceeb10bfb3ba01e371a2a10906/tsdb/db.go#L632-L638
This can lead to wrong repairs as segment numbers inside checkpoint and WAL are not related.
Update after https://github.com/prometheus/prometheus/issues/7530#issuecomment-655401947: drop entire WAL along with checkpoint if we encounter corruption in replaying checkpoint and drop everything from Head and start fresh.
~We should be repairing checkpoints for corruption in the checkpoint.~
~Currently, with checkpoint errors, we lose all the data from WAL. But if we could repair checkpoint, we can replay samples for at least some portion of the series. (Irrespective of this, WAL should not be repaired for checkpoint corruption)~

But if we could repair checkpoint, we can replay samples for at least some portion of the series.

Only some series isn't of much use, for the same reasons a partial scrape is worse than a failed scrape - and would effecitvely bring back the unknown series errors. If there's corruption we need to drop all data from the corruption onwards, which in the case of the checkpoint means dropping the entire checkpoint.

Do you mean to say drop both checkpoint and also the WAL? (btw, in that case, we should also remove the data from the memory)

We can't use the WAL without the checkpoint (if there is a checkpoint), so if there's checkpoint corruption we should be starting with nothing in the head.

Will work on this. Thanks.

@showuon are you still working on this?

Hold on before working on this. https://github.com/prometheus/prometheus/issues/7530#issuecomment-655393626 makes sense and need to re-think this. If checkpoint is corrupt, replaying WAL for partial series might not be useful/meaningful.

Hold on before working on this. https://github.com/prometheus/prometheus/issues/7530#issuecomment-655393626 makes sense and need to re-think this. If checkpoint is corrupt, replaying WAL for partial series might not be useful/meaningful.

Sorry. No, go ahead to take over it. Thanks.

Definitely! @codesome please let me know once you have had thought about the approach in the comment by Brian.

In Prometheus Storage Working Group call we wen't over these 3 options of how we want to handle this

Drop everything from Head since there will be partial series. This means if you have any corruption in checkpoint, you lose all data that was there in the Head.
Repair the checkpoint and continue with the remaining WAL replay. This means you will lose partial number of series (for the series records that were present in the checkpoint from after the corruption), and there will possibly be some gap in the restored series (again, for the missing samples record in the corrupted section of checkpoint), but the remaining samples for those series from the WAL segments will be restored.
Repair the checkpoint and restore the partial number of series as option 2, but don't replay remaining of the WAL. Hence you lose a bunch of samples for the restored series that's in the WAL segments.

The proposal here is option 2 which was in the original issue description (I have updated it to reflect this).
Here the option 3 does not look attractive in front of option 2, and we do not want to drop all the data. While partial series could return wrong results for some queries (but the operator should already be notified about corruption hence expect this), we cannot rule out the use cases where partial series is fine.
@bwplotka @brancz can you please confirm the above?

That is good. Will go with the fix once bartek  confirms.

I do not think we should go with option 2. partial data is impossible to work with.

Then that sounds like option 1. Also, checkpoint corruptions should be rare, it will only happy if disk is faulty and not on Prometheus crashes.

To not block this any further, let's go with the simpler option 1, and we can revisit this later if that is causing any problems.

Then I will go with option 1. Thank you!
If someone has any other concerns, please comment here.

Hello from the bug scrub: there seems to be open PRs that address the issue, keeping open.


Use minimal git for fetching gems

Motivation for this change
Noticed that using buildRubyGem would pull in a second ruby interpreter due to using "full fat" git, which includes asciidoctor (which brings it's own ruby interpreter)
I patched this locally to see if it would fix the issue and at least in my testing it works just the same, with the benefit of smaller closure size (and faster builds if you don't have that git/asciidoc/ruby combo built already)
Things done

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

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 117727 at ae4fac9f run on x86_64-linux 1

1 package skipped due to time constraints:

mastodon

2 packages built successfully:

anystyle-cli
metasploit


Make da.RandomState extensible to other modules

This enables other libraries like cupy or randomgen to compose their
random modules with dask array.
Fixes https://github.com/dask/dask/issues/3993

[ ] Tests added / passed
[ ] Passes flake8 dask

I ended up wanting this for some cupy experiments.
@dhirschfeld can I ask you to give this a spin?

Alas: https://github.com/cupy/cupy/issues/1675

Only back in the office today so I probably won't get a chance to test until at least tomorrow...

Looks like it works great!

Thanks for verifying @dhirschfeld

Thanks for adding this functionality - it makes for a very quick/easy win for end users!


MP4 output with two-pass-transcode.rb?

Is it possible to output MP4 rather than MKV with the two-pass-transcode script?

Yes. Just add --extra format=av_mp4 to your command line.
Does that work for you?

Will try that now.

Handbrake version:
HandBrakeCLI 1.81
My command line:
two-pass-transcode.rb ghost.mkv --add-audio all --add-subtitle all --extra format=av_mp4
The error code:
/usr/local/bin/two-pass-transcode.rb: unsupported HandBrakeCLI option name: format

@briangoodman You can't add image-based subtitles from DVDs or Blu-ray Discs to an MP4 format file. That's why it's failing. Remove --add-subtitle all from your command line and try again.

Will retry first thing tomorrow. Thanks for the quick reply.

Until tomorrow, a curiosity question. I’ve transcoded almost 400 foreign language films with other-transcode using the same command line and my MP4s contain the subtitles. Does other-transcode do something different to handbrake with respect to subtitle files?
(The reason I use MP4 is superior metadata support in Plex)

@briangoodman As to the difference between the two different tools, it depends on the input file and which options you're using. Also remember that other-transcode is based on ffmpeg and will simply ignore subtitles it doesn't like.
As for which format works better in Plex, I've always used MKV because it's much more compatible, flexible and, as far as I'm concerned, it supports metadata better. Your mileage may vary, of course.

... and a clarification regarding MKV, metadata, and Plex:
The metadata support in MKV may be better than in MP4, but the problem is that Plex, In spite of numerous requests, only reads a limited subset of MKV metadata - title, language, and audio track title.
So you might ask why I need more metadata that that. For 75% of my Plex movie library, I rely on Plex to correctly parse the filename information to provide the correct movie information. But since I am on the OCD 12 step program, there are some items where I want more control. For example:

the Plex agent tags any film related to music as Music and I want a separate genre for Musicals.
the Plex agent sometimes tags individual films in a series (like James Bond) with different genre tags and I want them to be the same (yes, serious OCD).
there are a few genres that I've added beyond what the Plex agent tags to enable additions to the Categories tab.

@briangoodman I'm sorry you're still having the same problem. Can you give me more information about your platform and your input file? A dump from MediaInfo would be ideal. Thanks.

I’m running the script on a 2012 i7 Mac Mini running Catalina.
To rule out any issues with old hardware and operating systems, I will install the scripts on my wife’s 2018 i3 Mac Mini running Sonoma.
So I’d like to leave this open while I remove the hardware/operating system age variables, which will take awhile.

Could you use this on your .mkv files after they're created? (You need ffmpeg installed, of course.)
fmpeg -i movie.mkv -c copy movie.m4v

I performed the ffmpeg conversion as above. Attached are 4 mediainfo screenshots:

the original MakeMKV file
the two-pass transcode of the original MakeMKV file to MKV
the ffmpeg conversion of the two-pass transcoded file to MP4
the other-transcode of the original MakeMKV file to MP4

P.S. I note that both two-pass transcode to MKV and other-transcode to MP4 successfully incorporated all the VobSub files while ffmpeg did not.

The above was done on my 2012 Mac Mini i7 Catalina.

Just tried the two-pass-transcode with all the script dependencies updated and HandBrakeCLI 1.8.1 on my Sonoma Mac Mini i3. The "--extra format=av_mp4" suffix returns the same error.

@briangoodman My sincere apologies for wasting your time. The reason it's not working is that I haven't yet checked in the change to enable support for format. I'll do that in the next few days.
In my defense, my local version of the completely rewritten version of transcode-video, which is based on two-pass-transcode.rb, has this change.

@lisamelton
No need to apologize. Next to your efforts to create and support these scripts, the small amount of time I spent is a rounding error.


Search for Shows

Use MongoDB text search for searching shows by query
Search by fields: name and description
Name of the query: search

@prabhuomkar I will take this