Currency Converter API service started to ask for a Free API KEY (required)

{
"status": 400,
"error": "Free API Key is required. Obtain your free API key at https://free.currencyconverterapi.com"
}

URL example: https://free.currencyconverterapi.com/api/v6/convert?q=INR_USD&date=2018-02-14
Get KEY URL: https://free.currencyconverterapi.com/free-api-key
PS: I'm working on PR

This was fixed in both 1.x and 2.x (and released) so I'm closing the issue!


sanitycheck error on mimxrt1050_evk samples/gui/lvgl/sample.gui.lvgl with no network connection

$ cat sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/build.log
Zephyr version: 1.14.99
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.7.3", minimum required is "3.4")
-- Selected BOARD mimxrt1050_evk
-- Found west: /home/apboie/.local/bin/west (found suitable version "0.5.7", minimum required is "0.5.6")
-- Loading /home/apboie/projects/zephyr1/zephyr/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts as base
-- Overlaying /home/apboie/projects/zephyr1/zephyr/dts/common/common.dts
Parsing Kconfig tree in /home/apboie/projects/zephyr1/zephyr/Kconfig
Loaded configuration '/home/apboie/projects/zephyr1/zephyr/boards/arm/mimxrt1050_evk/mimxrt1050_evk_defconfig'
Merged configuration '/home/apboie/projects/zephyr1/zephyr/samples/gui/lvgl/prj.conf'
Merged configuration '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/overlay.conf'
Configuration saved to '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/.config'
-- Cache files will be written to: /home/apboie/.cache/zephyr
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
-- Performing Test toolchain_is_ok
-- Performing Test toolchain_is_ok - Success
make[1]: Entering directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
make[2]: Entering directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
make[3]: Entering directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
Scanning dependencies of target lvgl-populate
make[3]: Leaving directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
make[3]: Entering directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
[ 11%] Creating directories for 'lvgl-populate'
[ 22%] Performing download step (git clone) for 'lvgl-populate'
Cloning into 'lvgl'...
fatal: unable to access 'https://github.com/littlevgl/lvgl.git/': Failed to connect to github.com port 443: Connection timed out
Cloning into 'lvgl'...
fatal: unable to access 'https://github.com/littlevgl/lvgl.git/': Failed to connect to github.com port 443: Connection timed out
Cloning into 'lvgl'...
fatal: unable to access 'https://github.com/littlevgl/lvgl.git/': Failed to connect to github.com port 443: Connection timed out
-- Had to git clone more than once:
          3 times.
CMake Error at /home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl/lvgl-populate-prefix/tmp/lvgl-populate-gitclone.cmake:66 (message):
  Failed to clone repository: 'https://github.com/littlevgl/lvgl.git'

make[3]: *** [CMakeFiles/lvgl-populate.dir/build.make:91: lvgl-populate-prefix/src/lvgl-populate-stamp/lvgl-populate-download] Error 1
make[3]: Leaving directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
make[2]: *** [CMakeFiles/Makefile2:73: CMakeFiles/lvgl-populate.dir/all] Error 2
make[2]: Leaving directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'
make[1]: *** [Makefile:84: all] Error 2
make[1]: Leaving directory '/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/zephyr/ext_proj/Subbuild/lvgl'

CMake Error at /home/apboie/.local/lib/python3.7/site-packages/cmake/data/share/cmake-3.13/Modules/FetchContent.cmake:798 (message):
  Build step for lvgl failed: 2
Call Stack (most recent call first):
  /home/apboie/.local/lib/python3.7/site-packages/cmake/data/share/cmake-3.13/Modules/FetchContent.cmake:889 (__FetchContent_directPopulate)
  ../../../lib/gui/lvgl/CMakeLists.txt:24 (FetchContent_Populate)

-- Configuring incomplete, errors occurred!
See also "/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/CMakeFiles/CMakeOutput.log".
See also "/home/apboie/projects/zephyr1/zephyr/sanity-out/mimxrt1050_evk/samples/gui/lvgl/sample.gui.lvgl/CMakeFiles/CMakeError.log".

The test appears to be trying to clone a git repository. I was offline when the error occurred. This extra project should be added to the west manifest instead.

This is a known limitation and the intention is to move lvgl to a dedicated west repo after the migration of ext is done.

@nashif, @carlescufi, @MaureenHelm  as already 2 people ran into issues with the lvgl download (this issue and https://github.com/zephyrproject-rtos/zephyr/pull/6826#issuecomment-494923867) would it be an option to create an empty repo lvgl in zephyrproject-rtos, then I could take care of migrating lvgl in to the west manifest?

@vanwinkeljan sure, can you prepare a repo in your fork that would act as a module, I will then create it in the zephyr project and push it and make it ready for PRs and integration.

@nashif Create a branch (west_module) in my lvgl fork.
But would it not be better to directly fork the main lvgl repo to zephyrproject-rtos and that I send a PR to that repo?
(zephyr part can be found in draft pr #17320)


Write up how we want to do audit tags, audit branches, and feature branches

Motivation
We want to document the process we decided for audits and new features.
The draft notes are in the Retrospective pad.

Hey team! Please add your planning poker estimate with Zenhub @arya2 @conradoplg @dconnolly @gustavovalverde @teor2345 @upbqdn

The audit tag and branch part got split into ticket #5431 and PR #5395.


Transition matrix is not updated during the train in the lstm_crf example

I think there is a bug in the lstm_crf example.
Please see my reviews there.
https://github.com/apache/incubator-mxnet/pull/7253

@sandeep-krishnamurthy Please kindly add labels, Bug, Pending Requester Info. Thanks!

@zhangchen-qinyinghua i cannot see your reviews in #7253 . can you please provide a minimum reproducible example.

@anirudh2290
The problem is, the transition matrix should be made one of the parameters (can be learned during the train process), rather than be fixed.
I will try to make a PR resently, fix the bug together with a mini-batch version of LSTM-CRF implenmentation.

@zhangchen-qinyinghua : Could you please share more information about what issue you were facing? Minimum reproducible code would be very nice to have.  Or, if you have a PR with suggested changes, please do share.

#11375 should have fixed it.


fix rubocop violations

some of the test cases are going to fail because they were already broken.  i am addressing some of them but would appreciate you merging this pull request.  thanks!

Looks like this needs a rebase

Closing this out since rubocop is green now.


Improve error output and traces in the ank CLI

Description
Currently the ank CLI logs a lot of error as log messages instead of writing the errors to stderr. Additionally log messages should be used only for debugging purposes and thus only debug traces should be allowed in the CLI
Goals
Define, document and apply a clear concept about logging, outputting errors and exiting with proper exit codes for the ank CLI.
Final result
Summary
We have decided to implement its own tracing in the CLI. Crates regarding tracing either do not provide what we need or they are too complex for this task. The concept is written in the comment and it is also described in the swdesign.
Tasks

[x] Clarify the concept and write it down as a comment.
[x] Implement the concept. See #53

Short brainstorming about the concept:

Tracing functions:

output_debug(message) - just debug and continue
output_and_exit(message) - prints a message (a success) and calls exit(0)
output_and_error(message) - prints the error message and calls exit(1)

If there is an internal error in the CLI, the CLI shall write a message to the user (something like "internal error occurred"). The flag (-v) shall provide detailed information.
CLI shall have special functions for the "CLI tracing". The developer will understand that we want to do a trace (it is not a forgotten debug print).

TODO: how to hide the env_logger (so the user is not able to create info or warning logs)?

We can use flags:

-v to activate the debug traces

Errors have no flag. They will always be printed to the user.
The debug traces will be activated with the flag "verbose". The flag will activates the output_debug function or sets the log level to "debug".
There is no other log level except of debug and error.

How to implement the tracing in CLI
The goal is to have own tracing in the CLI and hide the standard logger. The point is that the developer shall use our proprietary tracing functions and not the standard ones.
I have checked several crates regarding tracing. There are two problems there. One problem is that some crates are just an extension of the standard logger. In other words they do not hide the standard logger. This violates our main requirement. The second problem is that some crates are able to hide/replace standard logger. But they are very complex. It would be overkill to use a complex solution for such tiny task.
Kaloyan had an idea to check tracing in the rustup. Particularly this. This seems to be what we want.

I have checked the tracing from rustup. Unfortunately they cannot be used in the Ankaios as it is. They require many dependences. In other words the implementation is too complex. But the idea with macros which call a formatting function seems to be good.

The pull request has been reviewed and merged to the main.


App: Flip temperature module rendering in 3,6,9

overview

When a temperature module is placed in slots 3, 6, or 9, the Run app displays it as if the cords were on the left side. We should treat all tempdecks in slots 3, 6, 9 as flipped in the RobotWorkSpace component.

Software version 3.14.0

We're not going to migrate the designs from PD into this, but rather we can just flip it.

So glad this is closed!

On Aug 20, 2020, at 12:02 PM, Brian Arthur Cooper<EMAIL_ADDRESS>wrote:
Closed #4422 https://github.com/Opentrons/opentrons/issues/4422 via #6383 https://github.com/Opentrons/opentrons/pull/6383.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/Opentrons/opentrons/issues/4422#event-3675983985, or unsubscribe https://github.com/notifications/unsubscribe-auth/AI453PARJ7HWX52JY4JDMKDSBVCLFANCNFSM4JLYN2ZA.


[11.x] Split Facades into package

This PR extract "Facades" from "Support" to have a better separation of concerns.
Packages like Log, Cache, Encryption, Filesystem, Hashing, Notifications, Pagination, Pipeline, Process, Routing and Translation require "Support" but do not depend on "Facades".
Doing so it could also potentially be possible to use "replace" in composer to have more control over facades.
It should not be a BC, I could target 10.x but it seems safer to target the next version. Let me know if you want me to change.
Thanks in advance

I don't think there is a huge advantage to the wider user base of doing this.

Is there a disadvantage? It would help to decouple the framework more and it would be possible to opt-out from Facades in some scenarios.

It's still not really possible to truly opt out of facades. Moving them to a package just moves files around, and doesn't reduce any actual coupling.

You are free to just not use facades in your application code, also. 🤷

Thanks for your answer!

It's still not really possible to truly opt out of facades. Moving them to a package just moves files around, and doesn't reduce any actual coupling.

I talked on #internals and it's possible if you use some packages that don't require "support", but yes it's limited. The way to go to achieve that would be to

Not depend on Facade in the framework
Have the package required by default in the project

Like that, no BC and possibility to opt-out. But it's a bit of change internally, I would be fine doing some PRs thought if that's an options.

You are free to just not use facades in your application code, also. 🤷

Yes but it's always nice to not depend on something that is not used, but indeed you can enforce that with static analysis or architectural tools like deptrac.

@BafS but won't this cause a lot of refactoring on user land?

@BafS but won't this cause a lot of refactoring on user land?

No because the package would be enabled by default, the namespace would be the same, so there should be no BC, the facades would all be there in the vendor folder by default.
Internally we can still use app('xxx'), dependency injection or even string when necessary to register something (Foo::class is 'Foo' after all).


Prs/adding pickle output to cli

see issue: https://github.com/SovereignCloudStack/rookify/issues/60

You can use the cli like so:
rookify --show
rookify --show device
the later will parse for the device section. If a section does not exist an error is thrown.
I did not completely udnerstand what was meant with the 'migrated' flags, probably need to still add that

In general I like the option to filter outputs. What needs to be changed is that each module should present it's understanding of the state data on it's own instead of an "one fits all" approach to just output everything as a JSON blob.

Ok cli has some more features, most of all the show-progress feature:
.venv/bin/rookify --help
usage: Rookify [-h] [--dry-run] [--list-modules] [--read-pickle [<section>]] [--show-progress [<module>]]

options:
  -h, --help            show this help message and exit
  --dry-run
  --list-modules        List all modules
  --read-pickle [<section>]
                        Show the content of the pickle file. Default argument is 'all', you can also specify a section you want to look at.
  --show-progress [<module>]
                        Show progress of the modules.

I only implemented it for analyze_ceph, as I think I probably should add a status-mode in order to proceed or do you think I should pass the argument through loadmodules(....,show_progress=True)?
Running of rookify --show_progress now looks like this:
.venv/bin/rookify --show-progress
2024-09-12 14:11.09 [info     ] Pickle file set: data.pickle
2024-09-12 14:11.09 [info     ] Pickle file set: data.pickle
2024-09-12 14:11.09 [info     ] Show progress of all modules
2024-09-12 14:11.09 [info     ] Execution started with machine pickle file
2024-09-12 14:11.09 [info     ] AnalyzeCephHandler Progress: Not all commands have been run yet.

And I was thinking, that it would be nice to have extra arguments to run the command for each module to check the status.'
Also added a lot of tests


PyMTL 4.0 release staging

This PR includes changes that will be part of the PyMTL 4.0 release. Here is a list of changes included in this PR (WIP):

[x] Support for Verilator 5.016, including Verilog import support and CI setup
[x] Revamped Verilog import support to address data corruption / segfaults
[x] Support for parallel pytest runs with the xdist module
[ ] Revamp stdlib; this may break existing code that uses pymtl3.stdlib
[ ] Support for specification-based testing

Closing this to rename the dev branch to pymtl4.0-dev


sortable list example fix

This pull request fixes an issue in the sortable list demo where list items dragged and dropped into the same list when the dragIndex < dropIndex do not move correctly.

👍

CLA is valid!

@DetweilerRyan thanks for the fixes! 0.3.0 published


Abort actually raises an error

We attempt to reference error in abort. https://github.com/hopsoft/turbo_boost-commands/blob/main/lib/turbo_boost/commands/runner.rb#L185

This should be resolved now.


[HUDI-3178] Fixing metadata table compaction so as to not include uncommitted data

What is the purpose of the pull request

We commit to metadata table followed by data table while committing any writes. At the end of metadata table commit, we also trigger compaction if conditions are met. There is a chance that the actual write eventually failed in data table on which case, compaction could have included the uncommitted data. But once compacted, it may never be ignored while reading from metadata table. So, this patch fixes the bug. Metadata table compaction is triggered before applying the commit to metadata table to circumvent this issue.

Brief change log
(for example:)

Modify AnnotationLocation checkstyle rule in checkstyle.xml

Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end.
Added HoodieClientWriteTest to verify the change.
Manually verified the change by running a job locally.

Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

@manojpec : Can you review the patch too.


Change json_pointer to provide an iterator begin/end/etc, don't use vectors, and also enable string_view

I'm doing almost all interactions with my json trees via json_pointer.
The json pointer's vector is a performance bottle neck.
In my view, json_pointer should have the pointer_type be defined in the template specialization.
(so that I can easily turn on string_view)
And it should never split the strings into a vector, but rather allow for iteration, do on-the-fly-unescaping as needed.
In my my case, the speed up is quite considerable.
Also, this goes hand in hand with moving the object_t key_type to a separate template parameter.
(so that I can easily turn on string_view in the basic_json as well)
Will post a PR prob thurs/fri.  Will just make a new json_pointer class and if def, instead of making changes, might be useful to test one against the other.

Thanks for proposing an improvement!
I am really interested to see an example where the overhead of the current string/vector approach is measurable! It would be great to have this as a benchmark.
I would really look forward to a PR - just one remark: the library targets C++11, so an approach using std::string_view is not suitable, I'm afraid.


Debugging the activity widget

Thanks for that amazing package. Example app works great, however when I tried to connect to my app, I wasn't able to run the activities.
I follow the README from scratch 3 times, but no luck. init works, and I can print the id of live activity. When I debug, I can also see that create activity works. But I don't see anything with initial widget code or the package's code(football one), dynamic island is just black from my app.
Is there any additional step to connect live activity widget to app? (I've created the target, add the group ids)

Hi, I've used 14 pro max simulator. Example app was working on the simulator. As for the waiting init, when I put await on it, it wasn't returning anything at all. So I've used without it, just put 3 seconds delay between init and create.
Notifications enabled, live activity is also enabled for the app. Putting the app in background, and then clicking on the dynamic island also bring the app back. So it's almost working, but probably couldn't render that live activity widget(swiftUI code).
Demo widget with L-T or your example, both didn't work. It worked with another package https://pub.dev/packages/flutter_live_activities
So my best guess is, something is not connected to that activity widget or its attributes.

I tried to setup from scratch and the tricky stuff is the swift part (which need to be specified in the doc). So be sure to replace the ActivityAttributes bloc with the followed bloc, it NEED to be the name (referenced in the plugin).
So change this bloc:
struct MyAppWidgetAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        // Dynamic stateful properties about your activity go here!
        var value: Int
    }

    // Fixed non-changing properties about your activity go here!
    var name: String
}

To this one (EXACTLY the same, do not change anything like renaming method, it will compile but not display live activity):
struct LiveActivitiesAppAttributes: ActivityAttributes, Identifiable {
  public struct ContentState: Codable, Hashable { }

  var id = UUID()
}

And reference it in the ActivityConfiguration
ActivityConfiguration(for: LiveActivitiesAppAttributes.self)

That makes great sense. I've found your package more developed than the other one(and thanks again). I'll switch back to yours later today and update the issue.

How can we manage the state then? Is there any way to have manageable ContentState in the widget?

@istornz  Is there any way to use ContentState with dynamic data? I'd like to build sth changeable and dynamic during the lifecycle of the activity.

Same issue!
Somehow, when I changed the images to another, the live activity not showing.
(if I use the psg and chelsea assets, it works, but if I change them to my own asset, it does not show the live activity on the locked screen).
--- of course I inserted the images' path into the pubspec.yaml file..
any idea?

@janosdupai It it probably because you try to display an image with a too high resolution. You can use the resizeFactor() or resize manually your image.
For more information: https://github.com/istornz/flutter_live_activities#access-flutter-picture-from-native-

Thanks!


move elavator to position

the robot shall move the elevator to a specified position
the driver station shall have a number of buttons to specify preset positions
the robot shall use a command for this

What do you mean by "the dashboard shall have a number of buttons to specify preset positions"?

the driver station. and there should be buttons move the elavator to a specific height. for example to the height of the scale or the height of the exchange. see #9

Does driver station = joysticks or the driver station software?

both. see #9

Buttons on the joystick, not on the computer

closed


Add Frame component to exports

📑 Description
I tried to extend a component by copying its contents into my own file, but I ran into issues accessing the Frame component:
import Frame from 'flowbite-svelte/dist/utils/Frame.svelte';

results in:
Missing "./dist/utils/Frame.svelte" specifier in "flowbite-svelte" package

And:
import { Frame } from 'flowbite-svelte';

results in:
Module "flowbite-svelte" has no exported member 'Frame'.

This PR resolves the issue by adding the Frame component to the exports in src/lib/index.ts
Status

[ ] Not Completed
[X] Completed

✅ Checks

[X] My pull request adheres to the code style of this project
[ ] My code requires changes to the documentation
[ ] I have updated the documentation as required
[ ] I have checked the page with https://validator.unl.edu/
[X] All the tests have passed
[X] My pull request is based on the latest commit (not the npm version).

I'm OK with that PR.


Link error after upgrade to 4.6.1

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RNSVGPathParser", referenced from:
      objc-class-ref in libRNSVG.a(RCTConvert+RNSVG.o)
ld: symbol(s) not found for architecture x86_64

Oh, I should reopen XCode after upgrading. XCode will not auto load added files.


@sweir27 => [ArtistSeries] Add other series rail to page

Looks like:

Relatively straightforward. I added the usual fragment container, but also included a query renderer (in case we wanted to skip SSR). For the collections on the artist page, we already intentionally defer those client-side (expensive ES-backed queries).
However, for this rail, even on the artist page, we probably don't need that, but left the renderer in just in case.

This seems straightforward/good to me!!
I know @dzucconi has thoughts about the Carousel -- I'm not sure if that applies to this treatment since this is a pretty standard use-case for that component.

This seems straightforward/good to me!!
I know @dzucconi has thoughts about the Carousel -- I'm not sure if that applies to this treatment since this is a pretty standard use-case for our current component 🙃 .

I had thought the design called for no arrows, just an overflow-x container. This is fine.  (I'm still opposed to using it, however 😅 )


Model.evaluate progress bar doesn't work in graph mode

System information.

Have I written custom code (as opposed to using a stock example script provided in Keras): yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Windows 10
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): 2.7.0
Python version: 3.8
Bazel version (if compiling from source): N/A
GPU model and memory: N/A
Exact command to reproduce: See https://colab.research.google.com/gist/drasmuss/b4d074f13c4bed294a1403f351e4d263

Describe the problem.
As requested here, I am re-opening this issue from the Tensorflow repository here. History/discussion can be seen in that issue.
Describe the current behavior.
Calling Model.evaluate in graph mode (after calling tf.compat.v1.disable_eager_execution()) doesn't produce any stdout.
Describe the expected behavior.
A progress bar should be displayed along with the loss values, as in eager mode.
Contributing.

Do you want to contribute a PR? (yes/no): no
If yes, please read this page for instructions
Briefly describe your candidate solution(if contributing):

Standalone code to reproduce the issue.
https://colab.research.google.com/gist/drasmuss/b4d074f13c4bed294a1403f351e4d263

Notes from triage:
We will see if we can reproduce this in the latest version of TensorFlow, we also need to weigh if this is worth fixing considering all of the tf.Session based code will be removed at some point.  This still works in graph mode when you don't disable eager execution.  This is probably not worth fixing as it only occurs when you run tf.compat.disable_eager_execution.
@rchao just in case there is an easy fix here.

Bisecting would be the easiest way to figure out a solution. That said I don't think we're prioritizing issues that only occur when eager execution is disabled, though contribution to fix it is welcomed.
Keeping this open for a few days in case there is interest to contribute. Otherwise we should close this issue in a couple of weeks or so.

We will see if we can reproduce this in the latest version of TensorFlow, we also need to weigh if this is worth fixing considering all of the tf.Session based code will be removed at some point. This still works in graph mode when you don't disable eager execution. This is probably not worth fixing as it only occurs when you run tf.compat.disable_eager_execution.

Based on the above comments, I am closing this issue.


Group skipped tests in the html report

Initially 'Show skipped' toggle button is not pressed:

If there are no skipped tests in the report and 'Show skipped' button is pressed then there is a message about that.

If there are skipped tests in the report and 'Show skipped' button is pressed then list of  unique skipped suites appears.

If some comments contain URLs then a trivial RegExp detection is applied. No rocket science for now. Use URLs in comments with caution.

@SwinX @sipayRT

в остальном :ok:

:+1:


Contradiction with other Azure documentation

Per closing notes in https://github.com/MicrosoftDocs/azure-docs/issues/108243 I am opening a feedback on this page as it is claimed to be in error.
It contradicts with https://learn.microsoft.com/en-us/azure/active-directory/hybrid/connect/how-to-connect-group-writeback-v2 on the behavior of the null writeback value.

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

ID: 2d3ec0cf-ee89-7fc9-8231-c941de992f7f
Version Independent ID: a274b442-0847-785e-94ba-86fa940b6fc0
Content: Group writeback portal operations (preview) in Azure Active Directory - Microsoft Entra
Content Source: articles/active-directory/enterprise-users/groups-write-back-portal.md
Service: active-directory
Sub-service: enterprise-users
GitHub Login: @barclayn
Microsoft Alias: barclayn

@justinmontgomeryCF
Thanks for your feedback! We will investigate and update as appropriate.

@barclayn
could you please review this and update as appropriate.

@justinmontgomeryCF
I've delegated this to @barclayn, a content author, to review and share their valuable insights.

@justinmontgomeryCF thank you for pointing this out. I have created a work item for us to track internally and make updates. #please-close


Marathon Killing Tasks as it is scaling up to 50k instance

With 60 node and 120 node cluster, created 1 app (defined below), scaled to 50,000 instances.   At some point around 25k-30k tasks, marathon will start killing tasks.
This was marathon on marathon with the MoM running on the public node of a DCOS cluster.
This was version 1.4.0-snap30.
Marathon logs attached.
{
      "id": "1",
      "instances":  50000,
      "cmd": "for (( ; ; )); do sleep 100000000; done",
      "cpus": 0.01,
      "mem": 1,
      "disk": 0
    }

2ce85459-a409-408f-9e93-383e429faa3d.zip

Tested again... here are the steps (shorter version)
Created 60 node cluster of dcos ee disabled
launched app with 1 instance (wait for running)
scaled up to 100 (wait for all running)
scaled up to 10000 and had 1 task killed along the way.
agent logs for agent task killed on from point of running to killing
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.170052  2554 slave.cpp:3740] Handling status update TASK_RUNNING (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000 from executor(1)@<IP_ADDRESS>:34829
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.170660  2554 status_update_manager.cpp:323] Received status update TASK_RUNNING (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.170967  2554 status_update_manager.cpp:832] Checkpointing UPDATE for status update TASK_RUNNING (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.171180  2554 slave.cpp:4169] Forwarding the update TASK_RUNNING (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000 to master@<IP_ADDRESS>:5050
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.171341  2554 slave.cpp:4079] Sending acknowledgement for status update TASK_RUNNING (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000 to executor(1)@<IP_ADDRESS>:34829
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.180032  2556 status_update_manager.cpp:395] Received status update acknowledgement (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000
Dec 07 16:00:26 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:26.180078  2556 status_update_manager.cpp:832] Checkpointing ACK for status update TASK_RUNNING (UUID: b9a98526-8d14-4d3c-b1e5-ec9b9c6f0e29) for task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000
Dec 07 16:00:27 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:27.718816  2560 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:29 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:29.525305  2678 metrics_tcp_sender.cpp:252] TCP Throughput (bytes): sent=0, dropped=0, failed=0, pending=0 (state CONNECT_PENDING)
Dec 07 16:00:29 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:29.598461  2557 slave.cpp:5162] Current disk usage 0.14%. Max allowed age: 1.797286268210127days
Dec 07 16:00:29 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:29.725817  2557 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:31 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:31.732964  2558 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:32 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:32.532212  2678 metrics_tcp_sender.cpp:127] Timed out when opening metrics connection to <IP_ADDRESS>:8124. This is expected if no Metrics Collector is running on this agent. (state CONNECT_PENDING)
Dec 07 16:00:32 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:32.532394  2678 metrics_tcp_sender.cpp:112] Attempting to open connection to <IP_ADDRESS>:8124
Dec 07 16:00:32 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:32.532564  2678 metrics_tcp_sender.cpp:140] Got error 'Connection refused'(system:111) when connecting to metrics service at <IP_ADDRESS>:8124. This is expected if no Metrics Collector is running on this agent. (state CONNECT_IN_PROGRESS)
Dec 07 16:00:32 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:32.532622  2678 metrics_tcp_sender.cpp:94] Scheduling reconnect to <IP_ADDRESS>:8124 in 60s...
Dec 07 16:00:33 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:33.739871  2560 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:35 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:35.746815  2558 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:37 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:37.753849  2560 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:39 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:39.760929  2559 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:41 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:41.767781  2554 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:43 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:43.774819  2556 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:45 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:45.781797  2557 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:47 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:47.788861  2557 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:49 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:49.795830  2554 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:51 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:51.803010  2555 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:53 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:53.809912  2556 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:55 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:55.816911  2556 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:57 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:57.823786  2561 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:00:59 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:00:59.830807  2561 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:01 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:01.836884  2554 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:03 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:03.843791  2555 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:05 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:05.850921  2560 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:07 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:07.858847  2560 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:09 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:09.866032  2560 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:11 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:11.872963  2555 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:13 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:13.879914  2555 http.cpp:277] HTTP GET for /slave(1)/state from <IP_ADDRESS>:41325
Dec 07 16:01:13 ip-10-0-3-22.us-west-2.compute.internal mesos-agent[2547]: I1207 16:01:13.922996  2556 slave.cpp:2344] Asked to kill task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000

the master log
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal mesos-master[2481]: I1207 16:01:13.809190  2490 master.cpp:4759] Telling agent f30c4909-0ab9-463f-9740-e3d9054a336a-S58 at slave(1)@<IP_ADDRESS>:5051 (<IP_ADDRESS>) to kill task 1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000 (marathon) at scheduler-0a893564-84c9-4733-bd80-974018b22cc6@<IP_ADDRESS>:36043
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal mesos-master[2481]: I1207 16:01:13.810644  2490 master.cpp:4759] Telling agent f30c4909-0ab9-463f-9740-e3d9054a336a-S18 at slave(1)@<IP_ADDRESS>:5051 (<IP_ADDRESS>) to kill task 1.412ca5ab-bc96-11e6-b0ab-06e85c2bbbf4 of framework f30c4909-0ab9-463f-9740-e3d9054a336a-0000 (marathon) at scheduler-0a893564-84c9-4733-bd80-974018b22cc6@<IP_ADDRESS>:36043
D

marathon logs
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,779] INFO [/1]: scaling op detected for app (oldVersion FullVersionInfo(2016-12-07T16:00:20.334Z,2016-12-07T16:00:20.334Z,2016-12-07T15:59:42.118Z)) (mesosphere.marathon.upgrade.GroupVersioningUtil$:marathon-akka.actor.default-dispatcher-3)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,782] INFO Computed new deployment plan:
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: DeploymentPlan id=3e73827e-80de-4d01-af89-c12a88aeb149,2016-12-07T16:01:13.772Z
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: step 1:
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]:   * Scale(App(/1, cmd="for (( ; ; )); do sleep 100000000; done"List())), instances=100)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]:  (mesosphere.marathon.core.group.impl.GroupManagerActor:marathon-akka.actor.default-dispatcher-3)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,789] INFO Deploy plan with force=false:
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: DeploymentPlan id=3e73827e-80de-4d01-af89-c12a88aeb149,2016-12-07T16:01:13.772Z
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: step 1:
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]:   * Scale(App(/1, cmd="for (( ; ; )); do sleep 100000000; done"List())), instances=100)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]:   (mesosphere.marathon.MarathonSchedulerService$$EnhancerByGuice$$ddf85960:marathon-akka.actor.default-dispatcher-3)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,798] INFO Killing 2 tasks for reason: DeploymentScaling (ids: instance [1.marathon-440ede14-bc96-11e6-b0ab-06e85c2bbbf4],instance [1.marathon-412ca5ab-bc96-11e6-b0ab-06e85c2bbbf4] ...) (mesosphere.marathon.core.task.termination.impl.KillServiceDelegate$:marathon-akka.actor.default-dispatcher-14)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,805] INFO Starting InstanceKillProgressActor398135251 to track kill progress of 2 instances (mesosphere.marathon.core.task.termination.impl.InstanceKillProgressActor:marathon-akka.actor.default-dispatcher-7)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,809] INFO processing 2 kills (mesosphere.marathon.core.task.termination.impl.KillServiceActor:marathon-akka.actor.default-dispatcher-14)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,809] WARN Killing known task [1.440ede14-bc96-11e6-b0ab-06e85c2bbbf4] (mesosphere.marathon.core.task.termination.impl.KillServiceActor:marathon-akka.actor.default-dispatcher-14)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,810] WARN Killing known task [1.412ca5ab-bc96-11e6-b0ab-06e85c2bbbf4] (mesosphere.marathon.core.task.termination.impl.KillServiceActor:marathon-akka.actor.default-dispatcher-14)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,811] INFO Updated groups/apps/pods according to deployment plan 3e73827e-80de-4d01-af89-c12a88aeb149 (mesosphere.marathon.core.group.impl.GroupManagerActor:marathon-akka.actor.default-dispatcher-16)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: [2016-12-07 16:01:13,811] INFO Deployment acknowledged. Waiting to get processed:
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: DeploymentPlan id=3e73827e-80de-4d01-af89-c12a88aeb149,2016-12-07T16:01:13.772Z
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]: step 1:
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]:   * Scale(App(/1, cmd="for (( ; ; )); do sleep 100000000; done"List())), instances=100)
Dec 07 16:01:13 ip-10-0-6-17.us-west-2.compute.internal marathon.sh[3062]:  (mesosphere.marathon.core.group.impl.GroupManagerActor:marathon-akka.actor.default-dispatcher-16)

After review this second failure... this may be different.   In the original tests, there is no changing of scale, just launch with 50k instances.  In this case marathon was scaled to new sizes multiple times.  1 of those times it killed to instances.   This also should NOT have happened since the app was never scaled down.   There should have been no reason to kill these instances.

I'm not seeing this in my scaling tests anymore. Please reopen if its happening in RC3.


localstack failing build Action

Right now the localstack feature is failing its tests (as of the latest commit at time of writing).

Image of the failed Action

The error message that kills the build process is:
AttributeError: module 'distutils.log' has no attribute 'warning'. Did you mean: 'warnings'?

Link to it in the Actions log
The most relevant result from Google seems to be: https://github.com/pypa/setuptools/issues/3707. Here's the PR that supposedly fixes the issue: https://github.com/pypa/setuptools/pull/3709. I don't know what the fix would be. Maybe this is just some issue upstream that will eventually go away?

Thanks for finding this
This seems to be solved in the very recent setuptools 65-6-3  (see changelog https://setuptools.pypa.io/en/latest/history.html#v65-6-3 )
So this might get solved in newly created pipx environment without any changes to the current scripts
However... currently scripts will rely on a preinstalled pipx (if exists ) - thus inheriting any old setuptools already in existence in the pipx shared bin folder
I believe the proper solution for this and many future errors that can occur, is to force latest version for setuptools (and also for pip and wheel for good measure)  even when using a preexisting pipx
working on a PR

Awesome! 👍


anyway to read image from gridfs

Has anyone successfully able to get image streaming from gridfs instead of an actual physical file in the server?
I would appreciate any help here.

Not related with pdfkit.


Feature: Search in 2D sorted array in Java

https://leetcode.com/problems/search-a-2d-matrix/

assign this to me @akgmage

assign this to me please as i solved dsa questions in gfg.

class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m=matrix.length,i=0;
for( i=0;i<m;i++){
for(int j=0;j<matrix[i].length;j++){
if(matrix[i][j]==target)
return true;
}
}
return false;
}
}
please assign this to me .i solved this question.

please  let me contribute this solution to this issue


RFC: Merge NominalArray and OrdinalArray into CategoricalArray

The only reason for having separate NominalArray and OrdinalArray types (as well as their Nullable counterparts) is to return an OrdinalValue from the latter, which supports < and >. This does not sound worth the increased complexity. We could use a single CategoricalArray type, and store whether it's ordered via a Bool field. With branch prediction, < shouldn't be noticeably slower than with different types.
Incidentally, this is what Pandas does as well as MATLAB. Another advantage is that data storage formats generally don't distinguish nominal and ordinal arrays, that distinction must be added after importing data: if we use two different types, moving to ordinal requires changing the type of the array after the fact.
Before doing that change, I'd like to hear what others think of it.

I'm all for it, the decrease in # of types and complexity would be great.
This is also what Feather does, with the advantage that the file metadata indicates whether the CategoricalArray will be ordered or not, so no having to change the array type after the fact.
Happy to help make the change here since I've been around the codebase a bit now. (I have some time today to have a go at it too)

Cool. Go ahead if you have the time to. I'd have loved doing that myself as reducing complexity is quite rewarding, but let's not be too egoistic. ;-)

Hmm, I just bumped again on a comment by @dmbates saying he liked that distinction: https://github.com/JuliaStats/DataFrames.jl/pull/1008#issuecomment-236199622
Douglas, do you think merging these two types would have drawbacks? Wouldn't a single type with a boolean property suit your needs?

I think his thought was more on making sure to keep the distinction between NominalArray and NullableNominalArray as opposed to any kind of distinction between ordered vs. not.

@nalimilan : @quinnj is correct.  I was commenting on the ability to distinguish between what would now be CategoricalArrays and their Nullable counterparts.


Bugfix testing

Several enhancements to resolve issues from user testing

Corrected name of superuserCredentialsSecretName
Validation of Superuser password requirements
Error handling during setup process

One minor comment. LGTM overall

@thomasmckay fixed


Get an Azure AD access token

These directions are awful and once you get to the powershell script sample and make it your own it doesn't do anything. All the other resources lead you down a coding rabbit hole.

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

ID: 93165f41-8dfc-0316-f37a-1df2e8a8fd8c
Version Independent ID: b15947b8-83fe-7bd8-1d76-ebd040c28258
Content: Sign an MSIX package with Device Guard signing - MSIX
Content Source: msix-src/package/signing-package-device-guard-signing.md
Product: msix
GitHub Login: @dianmsft
Microsoft Alias: diahar

Hi @dreeves14 , thanks for the feedback. We are contently updating our docs. We understand that creating the script to obtain the Azure AD access token can be painful. Where you about to successfully create and register your app in the Azure portal?

Possibly… it’s a desktop app that I’m trying to package as an MSIX from an EXE to then distribute via Intune.
For whatever reason when I launch the finished MSIX package it says my CN which pulls in via the Device Guard cert and if I use my Microsoft account for which I am the global admin of the MSFT for Business store I had the right permissions. I do see entries today of items going through but when I launch the app to test it says it’s not verified publisher and won’t install.
-DR
Dalton Reeves
Senior Systems Administrator + Technology
P<PHONE_NUMBER> | F<PHONE_NUMBER>
<EMAIL_ADDRESS>| anderscpa.com
800 Market Street, Suite 500 | St. Louis, MO 63101

ANDERS CPAs + ADVISORS

From: dianmsft<EMAIL_ADDRESS>Sent: Friday, March 6, 2020 1:59 PM
To: MicrosoftDocs/msix-docs<EMAIL_ADDRESS>Cc: Dalton Reeves<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/msix-docs] Get an Azure AD access token (#112)
Hi @dreeves14https://github.com/dreeves14 , thanks for the feedback. We are contently updating our docs. We understand that creating the script to obtain the Azure AD access token can be painful. Where you about to successfully create and register your app in the Azure portal?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/msix-docs/issues/112?email_source=notifications&email_token=ANIHFX3PSQOJMW4JHPVBT3LRGFIXPA5CNFSM4LDGRVA2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOCVO3Y#issuecomment-595941231, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ANIHFX2DB4E27SAAZJU4WT3RGFIXPANCNFSM4LDGRVAQ.

You would need to download and install your organization's root certificate for Device Guard. Do the following:

Sign in to the Microsoft Store for Business.
Select Manage and then select Settings.
View Devices.
View Download your organization's root certificate for use with Device Guard
Click Download

Let us know if the instructions help. Feel free to reopen the issue or create a new one.

I’m sorry was there supposed to be a link there? Im not seeing any directions.
-DR
Dalton Reeves
Senior Systems Administrator + Technology
P<PHONE_NUMBER> | F<PHONE_NUMBER>
<EMAIL_ADDRESS>| anderscpa.com
800 Market Street, Suite 500 | St. Louis, MO 63101

ANDERS CPAs + ADVISORS

From: dianmsft<EMAIL_ADDRESS>Sent: Wednesday, April 1, 2020 4:05 PM
To: MicrosoftDocs/msix-docs<EMAIL_ADDRESS>Cc: Dalton Reeves<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: [EXTERNAL] Re: [MicrosoftDocs/msix-docs] Get an Azure AD access token (#112)
Warning: This email originated from outside of the Anders email system. Do not click links or attachments in this email unless you recognize the sender and know the contents are safe.

Let us know if the instructions help. Feel free to reopen the issue or create a new one.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/msix-docs/issues/112#issuecomment-607489005, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ANIHFX2WCUTYSCW62FVERILRKOT63ANCNFSM4LDGRVAQ.


Set UTF-8 as default?

I'm following best practice advice and set the encoding to UTF-8 wherever I can.
If I don't do
$curl->setOpt(CURLOPT_ENCODING, "UTF-8");
the response is garbled. Interestingly, the PHP documentation (http://php.net/manual/de/function.curl-setopt.php) doesn't list charsets as valid values, but things like "gzip". Nevertheless, it works because it sets the Accept-Encoding header and at least the servers that I am communicating with apparently choose another encoding by default.
So it's worth thinking about an option in the Curl class for CURLOPT_ENCODING or even the Accept-Encoding header directly, which defaults to UTF-8. On the other hand, this might break existing uses of the library, where the default encoding is not UTF-8, but just happened to be the right one.  Also, I'm not sure how many encoding problems that would solve, depends on how many servers respect "Accept-Encoding: UTF-8".

Hi. UTF-8 is not a valid argument for CURLOPT_ENCODING. Try an empty string instead.
$curl->setOpt(CURLOPT_ENCODING, '');


Make compilation enrichers public

Motivation
Allow extensions to reference compilation enrichers for ExecuteBefore
and ExecuteAfter.
Modifications
Make standard compilation enrichers public.
Remove an unused overload that causes extension confusion.

/merge


typo in docker-compose.yml for jellyfin

Hi
I'm trying to make it work with jellyfin but to no avail until now
I noticed a typo in the docker-compose.yml as one of the parameters is spelled JELYFINTOKEN instead of JELLYFINTOKEN (missing L)
This makes me think no one actually tried the jellyfin implementation yet. Has anyone tested successfully that it works?
I've corrected locally the typo. I have a working jellyfin server in one docker, a working subgen docker built with the corrected yml, and logs show that the unicorn server launches and waits for the web hook, but then nothing happens. The dockers both can be reach with their LAN address.
Thanks!

Jellyfin does work, I just don’t use docker-compose right now, so just an
oversight on my part on the type.  If you aren’t seeing any action, enable
debug and try adding/playing files and see if anything pops up.
On Sun, Nov 19, 2023 at 2:20 PM ndx1905-github @.***>
wrote:

Hi
I'm trying to make it work with jellyfin but to no avail until now
I noticed a typo in the docker-compose.yml as one of the parameters is
spelled JELYFINTOKEN instead of JELLYFINTOKEN (missing L)
This makes me think no one actually tried the jellyfin implementation yet.
Has anyone tested successfully that it works?
I've corrected locally the typo. I have a working jellyfin server in one
docker, a working subgen docker built with the corrected yml, and logs show
that the unicorn server launches and waits for the web hook, but then
nothing happens. The dockers both can be reach with their LAN address.
Thanks!
—
Reply to this email directly, view it on GitHub
https://github.com/McCloudS/subgen/issues/30, or unsubscribe
https://github.com/notifications/unsubscribe-auth/APJACQPLZQKETJ6DFXTBTTTYFJZZXAVCNFSM6AAAAAA7SAEGU2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGAYDCMBUGE4TMNQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I guess I’ll caveat it that Jellyfin worked when I implemented it a couple weeks ago.  If they changed any of their API that is used, it could break.

thanks for the quick answer. My guess is I did something wrong, rather than a change of API..
I guess my problem is I have two containers
Jellyfin has an internal docker ip <IP_ADDRESS> + docker gateway <IP_ADDRESS> and a LAN ip/port of <IP_ADDRESS>:8096
Subgen has an internal docker ip <IP_ADDRESS>  + docker gateway <IP_ADDRESS> and a LAN ip/port of <IP_ADDRESS>:8090
Webhook log on jellyfin reports
[2023-11-19 21:33:57.091 +00:00] [WRN] [11] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from "http://<IP_ADDRESS>:8096/Sessions/Capabilities/Full" to "<IP_ADDRESS>" in 0:00:00.510932 with Status Code 204
I'd want that to be sent to <IP_ADDRESS>:8090/jellyfin

Assuming your Jellyfin and subgen can reach each other, that is the correct endpoint to use for subgen.  Have you tried pinging the containers from each other?
To be honest, I have a knowledge gap in networking.  All of my dockers are in the same bridge/subnet, but that should be transparent if the ports are mapped correctly.
does debug on subgen show anything interesting?

Hey so I've done some changes, made sure the containers can ping each other. At some point it probably worked because the whisper model was downloaded. There was an error in the logs and my interpretation was that maybe one container could reach the other but that the opposite was not true.
That's when I decided I would simplify and would copy what you were doing since it worked, so I put both containers in the same bridge/subnet.
Now.. I see the webhooks notifications, subgen is aware of what jellyfin is doing when I play or add a file.. but I don't see the uvicorn start notification in the logs :/ http://<IP_ADDRESS>:8090 is not there
date | stream | content
2023/11/19 23:54:32 | stdout | INFO:     <IP_ADDRESS>:51392 - "POST /jellyfin HTTP/1.1" 200 OK
2023/11/19 23:54:32 | stdout | DEBUG:root:itemid is: ca34ecaf0712615e2022ab3c1aafa078
2023/11/19 23:54:32 | stdout | DEBUG:root:Jellyfin event detected is: PlaybackStart
2023/11/19 23:54:29 | stdout | INFO:     <IP_ADDRESS>:51392 - "POST /jellyfin HTTP/1.1" 200 OK
2023/11/19 23:54:29 | stdout | DEBUG:root:itemid is: ca34ecaf0712615e2022ab3c1aafa078
2023/11/19 23:54:29 | stdout | DEBUG:root:Jellyfin event detected is: PlaybackStart
2023/11/19 23:54:00 | stdout | INFO:     <IP_ADDRESS>:41560 - "GET / HTTP/1.1" 404 Not Found
2023/11/19 23:50:49 | stdout | INFO:     Application startup complete.
2023/11/19 23:50:49 | stdout | INFO:     Waiting for application startup.
2023/11/19 23:50:49 | stdout | INFO:     Started server process [35]
2023/11/19 23:50:49 | stdout | Starting webhook!
2023/11/19 23:50:49 | stdout | Running 2 threads per transcription
2023/11/19 23:50:49 | stdout | Transcriptions are limited to running 2 at a time

Now they both have <IP_ADDRESS> as a docker ip gateway
ip for jellyfin is <IP_ADDRESS>
ip for subgen is <IP_ADDRESS>
jellyfin can still be reach with the LAN address of the docker host at <IP_ADDRESS>:8096 while subgen is still available at <IP_ADDRESS>:8090 too
Any guess ?

What do you have procmediaonplay set to?  Your flow appears to be getting stuck on line 147 to see if it should actually do anything.  It looks like Jellyfin sent the webhook correctly and subgen received it, but subgen didnt query Jellyfin for the file path.
Or you have your Jellyfin up/token setup incorrectly?

okay sorry for the long delay, I've reinstalled everything from the start to make sure there wasn't any change left in the dockers or files.
It... almost worked. I mean your code worked  👍 but two things didn't work.

But then.... I noticed RAM and CPU usage slowed down to an idle state without any error in the logs nor notification.
The process of translation never stopped.
Also during my various attempts I noticed that some files audio were wrongly detected as English instead of French.
Long story short, I'm continuing tweaking and haven't managed to have a successful translation yet.
I'll update more soon

So after 2 reinstalls I can say it works
I had tampered with number of threads and concurrent transcription to have lower number since it's working on a very small cpu with no gpu (Synology ds718) and other services running at the same time.
If I leave it as is it works. It's probably not optimized but It works.
For reference, on a DS718 NAS it takes 3 hours to produce the subtitles of a 1 hour show.
Thanks for the discussion.
+1 for a web interface to decide which jobs to start instead of a webhook


iPad layout formatting incorrect, cutting off top and side.

reported by Perditus#2503 in discord
Need to check out actual iPad device if can't repro locally in mobile mode.

I'm also seeing screens getting cut off at the side on ipad:

A reliable way to repro this on my iPad is to create a market. The issue appears right after selecting the template subcategory, on both portrait and landscape views.

looks fixed. Closing


classical function chosen by group 4

We have chosen the classical function of calculating initial and final kinetic energy of a body and use it for calculation workdone.

Great! Thanks for informing us.


[Tech] Security: plug Vulcan tool

Vulcan can be setted. It parses all the assets (deployed urls, repositories, etc) configured. The result is weekly sent to an email list.
It is not prepared for public repositories. We might clone the repo in our enterprise private gh and sync it daily.
contact if needed: @manuelalejandro.fernandez


Is x-b3-flags mandatory?

https://github.com/openzipkin/zipkin-go-opentracing/blob/6bb822a7f15fdc5800b9822a6ac1bfa0b7d9195d/propagation_ot.go#L29
However for PCF zipkin tracing, it only injects two headers X-B3-TraceId and X-B3-SpanId for the first hop api endpoint.  [https://docs.cloudfoundry.org/concepts/http-routing.html#-http-headers-for-zipkin-tracing]

x-b3-flags is not mandatory so it could be omitted if Debug is false. You're welcome to send a PR.

I have created the PR, can it be approved?

I ran into this issue as well and upon looking at the code found that the extraction code has more general bugs -- I filed #118 to track the general issue and opened the PR #119 to fix it (with tests to verify behavior).


dropbox nvalt concurrent users

I have been using nvAlt across 3 Macs with a common db on dropbox.
According with this post:
http://brettterpstra.com/2013/06/08/nvalt2.2b106/
there is an issue with dropbox and I need to run dropbox on one machine at a time.
I am currently running 2.2v (111). Is this fixed on this version?
Can I use a different cloud service to bypass this problem?
Thanks!

As I understand it, Dropbox is not a great place to put databases that you plan to have open simultaneously on multiple computers, and many applications warn their users not to attempt this, because you might encounter nasty problems with improperly synced items. I don't know if nvALT "can" overcome this inherent limitation.
There are actually not that many consumer applications that handle simultaneous modifications well. Evernote, for example, cannot. Although we take it for granted nowadays, Google Docs is (as I understand it) a pretty amazing feat of engineering. You may need to look for a more robust app if you are planning to collaborate on files in real time. nvALT is brilliant at what it does, but I don't get the sense that this is a use case targeted by the designers.

nvALT's database format is not designed to sync with Dropbox. In general it's often not a great idea to synchronize binary databases with Dropbox, unless the application supports it. With nvALT, I also got issues with disappearing notes with Dropbox sync earlier on. However, I'm now currently again syncing through Dropbox, and it seems to work fairly well. I haven't lost any notes with the current version of nvALT. Note that I'm syncing a "plain text database", which means in addition to that "Notes & Settings" file it syncs plain text files too, which get imported in other nvALT. It's still possible that something strange may happen in some situations with that "Notes & Settings" database being synced as well. I have my notes also in a Git repository, so they are backed up there as well and I  will notice if some notes disappear or change.

If you're not having the issue, don't worry about it. I haven't seen it pop up for over a year. I believe it was a Dropbox issue and that they've resolved it.
This is my iPhone. There are many like it, but this one is mine.

On Jan 12, 2015, at 1:52 AM, sakoula<EMAIL_ADDRESS>wrote:
I have been using nvAlt across 3 Macs with a common db on dropbox.
According with this post:
http://brettterpstra.com/2013/06/08/nvalt2.2b106/
there is an issue with dropbox and I need to run dropbox on one machine at a time.
I am currently running 2.2v (111). Is this fixed on this version?
Can I use a different cloud service to bypass this problem?
Thanks!
—
Reply to this email directly or view it on GitHub.

I will try it. For the time being I always close nvalt when leaving my work computer and go to home and vice versa. I always use plain text notes.  I will move my notes to a git repository as juranta reccomends to keep up with versioning. Sounds like a great idea!

It's a shame that syncing with simperium strips rich text like enbolden. I'll try dropbox.

nvALT strips rich text. It's designed for Markdown, RTF support is
legacy and essentially non-existent.
On 18 Mar 2015, at 13:48, Lloyd Dewolf wrote:

It's a shame that syncing with simperium strips rich text like
enbolden. I'll try dropbox.

Reply to this email directly or view it on GitHub:
https://github.com/ttscoff/nv/issues/321#issuecomment-83118363

@ttscoff oh, interesting. Thanks for the tip.
I did some minimal testing where the rich text was preserved, but I'll take your word and accelerate my own migration to .md.
Is binary db and Plain Text Files for storage both supported well? equally?

Using plain text files actually does both (db backup for speed in
indexing), plus they're easy to sync and use in other apps on mobile.
Highly recommended.
On 18 Mar 2015, at 17:13, Lloyd Dewolf wrote:

@ttscoff oh, interesting. Thanks for the tip.
I did some minimal testing where the rich text was preserved, but I'll
take your word and accelerate my own migration to .md.
Is binary db and Plain Text Files for storage both supported well?
equally?

Reply to this email directly or view it on GitHub:
https://github.com/ttscoff/nv/issues/321#issuecomment-83204737


Implementing an official and stable deprecation system

Description of proposed feature

Our current way of deprecating functions and classes could be improved to be more user and developer friendly. Perhaps we can implement a decorator-based system where the developer can input the following information:

Version since deprecation
Version until deletion
Reason for deprecation

How can the new feature be used?

@deprecated(since="0.5.0". until="0.7.0", message="Use Create instead.")
class ShowCreation(Create):
    ...

class Animation(object):
    @deprecated(since="0.1.0", until="0.3.0", message="Use animation.interpolate() instead.")
    def update(self, alpha):
        ...

Additional comments

We could also implement helper methods and/or CLI commands that can:

List deprecated classes/methods
Sort classes/methods by version since deprecation
Warn developers if there is any deprecated code that has not been deleted at the expected version

i.e. If until="0.6.0" and current version is 0.6.0 or later, a warning will be shown as a reminder to delete the deprecated code

We could deprecate parameters this way as well.

Sounds great to me. Perhaps message would fit more than reason

I think reason would make more sense semantically as it would prompt developers to give a reason for deprecation, rather than a potentially vague message.

That is a valid point, but if I were reading the decorator as an outsider, I would be confused as to why the message it prints to users is called "reason"

That is a valid point, but if I were reading the decorator as an outsider, I would be confused as to why the message it prints to users is called "reason"

Good point. Deprecation and code removal are simple enough tasks to be considered good first issues. We can go with message and explain in documentation that it should explain the reason for deprecation and/or state the alternative class/method/parameter to use.

I am working on an implementation :)

tl;dr Until today I didn't know I love annotations... Now I do
I expanded this Idea a bit, to make the common use cases as simple as possible:
@deprecated can be used with or without parameters to deprecate functions, methods and classes.
The following examples should give you an idea of what each parameter does:
@deprecated
@deprecated(since="0.2")
@deprecated(until="0.5")
@deprecated(since="0.2", until="0.5")
@deprecated(replacement="bar", message="It's better.")
def foo():
    pass

calling foo() results in the following logger warnings:
foo()
#Logger warnings:
#  The function foo is deprecated and may be deleted soon.
#  The function foo is deprecated since 0.2 and may be deleted soon.
#  The function foo is deprecated and will be deleted after 0.5.
#  The function foo is deprecated since 0.2 and will be deleted after 0.5.
#  The function foo is deprecated and may be deleted soon. Use bar instead. It's better.

Name and type of the callable are automatically added to the message:
@deprecated
class Foo:
    @deprecated
    def bar(self):
        pass

a = Foo()
#  The class Foo is deprecated and may be deleted soon.

a.bar()
#  The method Foo.bar is deprecated and may be deleted soon.

I also implemented deprecated_params.
@deprecated_params(params="useless_param, other_useless_param", until="0.5", message="It really was useless.")
#Equivalent options:
#  @deprecated_params(params="useless_param other_useless_param", ...)
#  @deprecated_params(params=["useless_pram", "other_useless_param"], ...)
def foo(useless_pram=None, other_useless_param=None):
    pass

foo()
# No warning

foo(useless_param=2)
#  The parameter useless_param of function foo is deprecated and will be deleted after 0.5. It really was useless.

foo(useless_param=2, other_useless_param=0)
#  The parameters useless_param and other_useless_param of function foo are deprecated and will be deleted after 0.5. It really was useless.

However, I think in most cases where we would want to deprecate parameters is because we renamed / grouped / restructured them. Therefor deprecated_params has one additional parameter: redirections. This can be used to automatically redirect parameter values given in an old format, so that the logic to handle those old parameters can already be removed from inside the function. In the end actually deleting the old parameter comes down to just deleting the parameter. Have a look:
@deprecated_params(redirections=[
        ("n_rows", "rows"),
        lambda n_cols: {"cols": n_cols}, # equivalent to ("n_cols", "cols"),
        lambda buff_x=0.1, buff_y=0.1: {"buff": (buff_x, buff_y)}
])
def baz(rows=None, cols=None, buff=None):
    print(f"rows={rows}, cols={cols}, buff={buff}")

baz(n_rows=2)
#  The parameter n_rows of function baz is deprecated and may be deleted soon.
#  rows=2, cols=None, buff=None

baz(n_cols=2, n_rows=4)
#  The parameters n_rows and n_cols of function baz are deprecated and may be deleted soon.
#  rows=4, cols=2, buff=None

baz(buff_x=1)
#  The parameter buff_x of function baz is deprecated and may be deleted soon.
#  rows=None, cols=None, buff=(1, 0.1)

baz(buff_x=1, buff_y=2)
#  The parameters buff_x and buff_y of function baz are deprecated and may be deleted soon.
#  rows=None, cols=None, buff=(1, 2)

@deprecated_params(redirections=[
        lambda buff: {"buff_x": buff[0], "buff_y": buff[1]} if isinstance(buff, tuple)
                else {"buff_x": buff, "buff_y": buff}
])
def zab(buff_x, buff_y):
    print(f"buff_x={buff_x}, buff_y={buff_y}")

zab(buff=1)
#  The parameter buff of function zab is deprecated and may be deleted soon.
#  buff_x=1, buff_y=1

zab(buff=(2,3))
#  The parameter buff of function zab is deprecated and may be deleted soon.
#  buff_x=2, buff_y=3

Notice that you don't have to specify params if you are using redirect. Every redirected parameter is automatically added to the list of deprecated parameters. For redirectors with multiple parameters you should always give default values, since they get called if at least one of the redirected parameters is defined.
Let me know what you think about this. Are the any other useful features the deprecation system should have? Or are there other decorators manim could make good use of? :upside_down_face:

@AntonBallmaier This is pretty neat! I must say your idea is much more fleshed out and exceeds expectations.

Thanks :) However, I just noticed a problem: Decorating a class will change its type to a function. This doesn't change how it behaves in code, but it will no longer show up in the module classes overview page of the documentation... Hopefully I can fix this tomorrow :sleeping:

...now that I think about it: It wouldn't even be that bad if deprecated classes wouldn't be shown in the docs :laughing:

Just double checked: This doesn't cause problems when deprecating methods or functions.

Ideally, developers should be able to deprecate code they're currently writing a replacement for, even if implementation isn't complete. Plus, developers can update the until parameter, depending on their progress, to help users gauge the approximate version the deprecated code will be fully removed. Users with large projects can benefit from this.

Ideally, developers should be able to deprecate code they're currently writing a replacement for, even if implementation isn't complete. Plus, developers can update the until parameter, depending on their progress, to help users gauge the approximate version the deprecated code will be fully removed. Users with large projects can benefit from this.

Ok, both of these things are possible with the current state of the deprecation system. I think I will create a PR soon :)

I'm late to the party, but this looks neat. Seeing how complete it will be, it should even be a pip package, since this is not really manim.

I solved the problem with the docs and even found out, that I can change the docs using the decorator:
@deprecated(replacement="Create")
class ShowCreation(Create):
    """Old doc-string."""
    pass

I'm late to the party, but this looks neat. Seeing how complete it will be, it should even be a pip package, since this is not really manim.

I have never created a pip package, but feel free to do so once my code is merged :)

Should I add something to the documentation for deprecating parameters?

Should I add something to the documentation for deprecating parameters?

Yeah, that would be helpful.

However, I think in most cases where we would want to deprecate parameters is because we renamed / grouped / restructured them. Therefore deprecated_params has one additional parameter: redirections. This can be used to automatically redirect parameter values given in an old format, so that the logic to handle those old parameters can already be removed from inside the function. In the end actually deleting the old parameter comes down to just deleting the parameter.

I'm late to the party, but this looks neat. Seeing how complete it will be, it should even be a pip package, since this is not really manim.

I agree. I also think this is a good opportunity to experiment with how well we can make the deprecation system work with manim and our workflow. Perhaps we can try it out as an internal feature, get user and developer feedback, then separate it into its own package in the future?


stm32: add driver to use SPI as slave

This is a rough initial implementation of using the STM32 as an SPI slave device to think about possible APIs.
The non-DMA methods taking buffers don't make a ton of sense at the moment. The internal FIFO buffer of the SPI peripheral is 32 bits, which means these methods will never be able to read or write large buffers. The master device I'm testing with is a Raspberry Pi which doesn't clock lower than a few kilohertz, so it's difficult to see exactly what the behavior is e.g. when starting to read late in a transfer. Perhaps these methods should work on single words, allowing also to implement embedded_hal_nb::serial::Read and Write (though these traits don't include a bidirectional transfer).
The asynchronous version is implemented using DMA backed by ring buffers. This will allow implementing some embedded-io-async traits. On the chip I'm testing with (STM32WB55RGVx on a development board) the DMA-backed communication works up to somewhere between 2.5 and 3.0 MHz continously before overruns start happening. This seems a bit slow: the reference manual indicates this chip should be able to reach 24 Mbit/s.
This chip is SPIv2, I haven't tested the other versions.
This further needs some additional constructors configuring rx-only, tx-only, etc.
Closes https://github.com/embassy-rs/embassy/issues/623

I've changed the non-DMA methods to operate on single words with a non-blocking signature using nb, similar to e.g. Uart::nb_read.

I sucessfully tested this branch with an STM32F0R8 device, works very well so far :+1:

I guess I'll test it on a L0. I can report how it went :blush:

I've pulled in the changes from the main branch, but still need to update the API to match some of the changes (such as be087e5d43326178878878bebae96f3b51a3b184). I've also not tested on a board yet.

I've tested this on a stm32h563zi with minor modification to allow for RX only operation, but I don't seem to receive any data though.
--- a/embassy-stm32/src/spi/slave.rs
+++ b/embassy-stm32/src/spi/slave.rs
@@ -115,6 +115,22 @@ impl<'d, T: Instance> SpiSlave<'d, T> {
         )
     }

+    /// Create a new SPI Slave driver, in RX only mode (only MOSI, no MISO)
+    pub fn new_rxonly(
+        peri: impl Peripheral<P = T> + 'd,
+        sck: impl Peripheral<P = impl SckPin<T>> + 'd,
+        mosi: impl Peripheral<P = impl MosiPin<T>> + 'd,
+        config: Config,
+    ) -> Self
+    {
+        into_ref!(peri, sck, mosi);
+
+        sck.set_as_af(sck.af_num(), AfType::input(Pull::None));
+        mosi.set_as_af(mosi.af_num(), AfType::input(Pull::None));
+
+        Self::new_inner(peri, Some(sck.map_into()), Some(mosi.map_into()), None, None, config)
+    }
+
     fn new_inner(

(my changes are here: https://github.com/Luctins/embassy/tree/stm32-spi-device)
Does this addition make sense, or should are more extensive changes required?

I've experimented a bit with making the API match that of the SPI master more closely. The SPI master has the following signature
https://github.com/embassy-rs/embassy/blob/53708386a87d77db9e3fda6d234789ca79cdad41/embassy-stm32/src/spi/mod.rs#L111
In principle this is possible for the SpiSlave as well. There are two aspects to consider.
First, the async mode SPI slave has to read and write in the background with hardware support, requiring the use of ring buffers. The blocking version of the SPI slave does not use ring buffers as it does not use hardware support.
Ideally the blocking SPI slave struct does not contain the ring buffer fields at all, otherwise it has unnecessary padding.
Second, the ring buffers for async mode are generic over word size, which may be desirable to expose in the API.
There are some options:

Use SpiSlave<'d, M: Mode>, abstracting away the word size by setting it to u8.
Use SpiSlave<'d, M: Mode, W: Word> with the word size being meaningless for blocking mode.
Use SpiSlaveBlocking<'d> and SpiSlaveAsync<'d, W: Word>.
Don't support blocking SPI slaves, providing SpiSlave<'d, W: Word> with only async reading and writing. The usefulness of blocking mode is debatable: the throughput it can support is limited and there are difficulties for the programmer as the slave does not control the SPI clock.

Options 1 and 2 are possible without runtime overhead or unnecessarily padding blocking mode's struct size by adding a private trait with a generic associated type. Note it does add a second private bound on the Mode trait that shows up in the docs.
pub(crate) trait SpiSlaveModeData {
    type Data<'d, W: Word>;
}

pub(crate) struct SpiSlaveAsync<'d, W: Word> {
    tx_ring_buffer: WritableRingBuffer<'d, W>,
    rx_ring_buffer: ReadableRingBuffer<'d, W>,
}

impl SpiSlaveModeData for Async {
    type Data<'d, W: Word> = SpiSlaveAsync<'d, W>;
}

impl SpiSlaveModeData for Blocking {
    type Data<'d, W: Word> = ();
}

and setting
-    pub trait Mode: SealedMode {}
+    pub trait Mode: SealedMode + crate::spi::SpiSlaveModeData {}

This then allows
pub struct SpiSlave<'d, M: Mode, W: Word> {
    inner: SpiSlave_<'d>,
    mode_data: <M as SpiSlaveModeData>::Data<'d, W>,
}

@Luctins I've not tested this, but you may need to include the chip select pin, e.g.:
https://github.com/embassy-rs/embassy/blob/d7f51529c45c94fd18c118ae124ab23db2c088c1/embassy-stm32/src/spi/slave.rs#L106

The thing is, the intended application for this does not use the CS pin.
I've tested this layout using ST's official drivers and it works, so my bet is misconfiguration. I'll update here if I find anything.

I might be off base here, but as far as I can tell this approach might have a few issues:

TX DMA is enabled immediately, causing the TX FIFO to get filled immediately upon dma_ringbuffered being called.
Related to the above, there is no handling of buffer underruns. Garbage data from the ring buffer gets written even if it has never been written/it goes ahead of the write position.

I would expect an underrun to bubble up to the user code somehow?

I might be off base here, but as far as I can tell this approach might have a few issues:

There is no handling of TX buffer underruns. Garbage data from the ring buffer gets written even if it has never been written/it goes ahead of the write position.

I would expect an underrun to bubble up to the user code somehow?

TX DMA is enabled immediately, causing the TX FIFO to get filled immediately upon dma_ringbuffered being called.

This could be argued to be working as intended, but it definitely causes issues because of the point above.
@hansihe

From my tests, it seems like setting the comm register to vals::Comm::RECEIVER disables the tx part of the spi, because trying to do symmetric operations always stopped after 16 bytes (the TX buffer got full, so tx_ready never returned true).
My (a little crude) implementation is here.

@Luctins Thank you. I also need to dive into the reference manual to ensure all configuration registers are according to spec, the current version of this PR is still rough. I've added you as a contributor to the fork, but perhaps an API should be decided on before adding your changes to the PR.

@hansihe Underrun errors bubble up on the next call to one of SpiSlaveRingBuffered::{write, write_exact, transfer_exact} but the errors are called overrun in the code (assuming my understanding of how WritableRingBuffer::{write,write_exact} bubble up the errors is correct, I should have some time soon to test the behavior).
You're right that we should allow the user to prefill the buffer before DMA is started, the DMA ring buffer allows this through WritableRingBuffer::write_immediate. Comparing with other APIs in this repo, the ring buffers provide a start method, the SAI driver also provides a start method, so I think it makes sense to mirror this and add a start method (and write_immediate method) to the SPI driver as well.

@tomcur I see your point, and you're probably right.
My main concern would now be supporting other spi versions, because AFAIK my changes are only compatible with spiv3/v4/v5 and I only have access to stm32h5 boards for testing.
I would suggest feature gating those versions for now (not allowing for creation of unidirectional devices) for spiv1/v2 and leaving for someone to implement it in the future if they feel inclined and have the hardware to test it.

@tomcur From testing on a STM32G491 that does not seem to be the case. I can double check later today to be 100% sure

Tested this on stm32f072rb and always getting "transfer error: Overrun"

Tested this on an STM32G473 and it works perfectly. Is there a timeline on merging this? Pretty important feature IMO.

Hi all. I'm very interested in moving this PR forward to get SPI slave support on STM32 chips, I agree with Levine that this is an important feature.
I see some issues with this PR (many of which have already been pointed out in this thread, but I'd like to place them in one post):

DMA/async functions are not the defaults when new is called, which is the opposite model from the SPI master driver. I don't think any other peripheral in the crate follows this (please correct me if I'm wrong). Additionally the dma_ringbuffered() method to return a different peripheral object is also unlike the other peripherals in the crate. I think the overhead of extra space in the struct to unify the API is worthwhile.
There are other minor API differences with the master driver (for example the read and write buffers are swapped in transfer as compared with the master driver). Another example is a lack of a transfer_in_place function.
As far as I can tell, it is not possible to share the DMA SPI slave peripheral between tasks. The DMA buffers in the struct are mutable slices, which cannot be safely given static lifetimes in Rust.
There is no mechanism to enable & disable TX when writing into the DMA buffer, which makes it impossible to synchronize (or even control) writes. Lets say you need to send a message of 100 bytes to the master, if you attempt to use the current write or write_exact functions, the DMA will chew through and send the entire allocated write buffer.

My proposal is to change this module to match the SPI master interface as closely as possible. This would involve removing the usage of ReadableRingBuffer and calling set_txdmaen & finish_dma on every write (I need to verify that this would still allow for the DMA reads to continue uninterrupted).
I can volunteer myself to lead this effort, but I'm unsure if @tomcur and/or @Luctins are still interested in carrying this forward? I can also open a different PR if that is more convenient. I am also unsure which maintainer would be able to help us get this merged/work through the API decisions, I see that @Dirbaio has most of the git blame in the SPI master so maybe that's a good place to start?
I can test these changes on an STM32L476RG (spiv2), an STM32G071RB (spiv2), and a STM32H563ZI (spiv4). I'm also willing to purchase some more Nucleo boards if no one is available to test spivf1, spiv1 and spiv5.

I'd be happy to continue collaboration on this. The last state is that some API decisions were pending, as @Namr also pointed out.

This would involve removing the usage of ReadableRingBuffer and calling set_txdmaen & finish_dma on every write (I need to verify that this would still allow for the DMA reads to continue uninterrupted).

I'm not sure this is going to be possible. In this mode, the board has no control over the SPI clock. It needs the hardware support to be able to read in the background.

@Namr I also would like for this to be eventually merged, but I'm currently not sure how much time I'll have to dedicate to this in the near future. I can help with testing at least (I have a STM32H563ZI/spiv4nucleo board and one of my current projects use this cpu extensively).
I also support  having a similar API for the master and the slave mode to ease development.

It needs the hardware support to be able to read in the background.
@tomcur Can't DMA do this? So the slave device starts 'listening' and storing bytes in a DMA (ring) buffer and processing them when possible (if data is not read for a while overruns may occur). My main point on this would be at least having a similar api without using the nb crate (and preferrably implementing embedded-io traits).

Thanks Tom and Lucas for jumping back in! I want to clarify what I meant by point number 4 on the list above. My hope was that a user would be able to do
bus.write(&buffer).await;

Which would yield the task until the master sends enough clock edges to flush out the contents of buffer. Additionally I was hoping that if no call to write was pending, the bus would always show 0 on the MISO line.
After reading further into the reference sheet (at least for spiv2), I'm realizing this behavior is not exactly encouraged by ST and may not be possible to do generically. ST seems to expect that a slave device using DMA will always have TX data written into the DMA buffer any time a clock comes in from the master. From the reference manual:

It is recommended to enable the SPI slave before the master sends the clock. If not,
undesired data transmission might occur. The data register of the slave must already
contain data to be sent before starting communication with the master (either on the first
edge of the communication clock, or before the end of the ongoing communication if the
clock signal is continuous).

On top of this, as fbeutel mentioned earlier in the thread, you won't even receive an interrupt from the DMA subsystem when your data has been written, but rather only when the buffer is half-way empty.
So the behavior I was hoping for doesn't seem to be achievable. Of course you can build this kind of API if your design/protocol has other synchronization primitives (e.g software controlled NSS, a call and response fixed-length protocol, a busy or IRQ line, etc) but I don't think any of that is appropriate for a driver.
On a separate note though, I don't see a reason why we couldn't use the TxDma trait defined on line 1319 of embassy-stm32/src/spi/mod.rs  instead of the ringbuffers to make the type signatures more similar. I will give that a try along with the other API changes and report back so we can all see if its preferable.


es-next/compiler.js fails to resolve module after typescript successfully resolves and compiles it

What is your Scenario?
I want to:

use typescript
use tsconfig::compilerOptions::paths (and tsconfig::extends, but not related to this issue)
use testcafe

What is the Current behavior?
Internally, the typescript compiler compiles page.test.ts fine. A downstream es-next compiler cannot resolve a module that the typescript compiler resolved.
What is the Expected behavior?
Either not use the es-next compiler, or extend es-next compiler module resolution with paths as used from the typescript compiler.
What is your public website URL? (or attach your complete example)
tiny, minimal reproduction posted here: https://github.com/cdaringe/testcafe-path-resolution-typescript
What is your TestCafe test code?
// test/page.test.ts
import { foo } from "foo";
import { ClientFunction } from "testcafe";

fixture`foo`.page("http://localhost:3333");

const log = ClientFunction(() => console.log("sup"));

test("bar", async (t) => {
  foo();
  await log();
  await t.debug();
});

// src/foo.ts
export const foo = () => "bar";

Your complete configuration file
none, cli only.
DEBUG=testcafe* testcafe --compiler-options='typescript.configPath=tsconfig.json' chrome test/
Your complete test report
n/a
Screenshots
Error: Cannot find module 'foo'
Require stack:
- /demo/test/page.test.ts
-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>
Steps to Reproduce
run the reproduction
TestCafe version
2.2.0-rc.1
Node.js version
18.4.0
Command-line arguments
testcafe --compiler-options='typescript.configPath=tsconfig.json' chrome test/
Browser name(s) and version(s)
chrome
Platform(s) and version(s)
macos 12.6.1
Other
n/a

Hi @cdaringe,
You cannot override the target compiler option in the TypeScript configuration file. However, there is PR that supports native ESM. You can use it once it is merged and published.

hey @Aleksey28 , thx for the reply. i've dropped target from the demo so as to keep this bug report focused on the resolution issue. indeed, i don't need that target, i just used a bunch of the defaults from tsc --init, but i appreciate the tip/ref regardless!

Hi @cdaringe,
You're welcome. I'll close the issue. Feel free to contact us if you have further questions.

@Aleksey28  forgive me—the issue should not be closed. The issue should remain open. My above remark was politely stating that your suggestion is not relevant to this specific problem

Ok. In this case, please update your example so that I can run it and reproduce this error.

@Aleksey28, the example is updated and runnable, with instructions in the repo. thanks!

I managed to reproduce the issue. We will update this thread once we have any news.

Thanks for providing a minimal example; I've already spent hours on debugging that in our project. Are there any known workarounds or versions where this bug is not present in?

@hendriku https://github.com/DevExpress/testcafe/issues/4144


[Backend] Use ProblemResolver to install older packages

This commit uses ProblemResolver to install older packages.
ONE-vscode-DCO-1.0-Signed-off-by: Jiyoung Yun<EMAIL_ADDRESS>

The TRIV toolchain releases their package using different channels. One is for the official channel and the other is for the nightly channel. Nightly channel is released every day, but official channel is released at a certain time, so packages that are dependent on the official version are not the latest packages. The apt system does not allow to install older package, so installation of official release is failed.
In this case, aptitude can resolve this issue by using ProblemResolver::SolutionCost.
The ProblemResolver::SolutionCost describes how to determine the cost of a solution.
The default cost, sorting solutions by their safety cost, then by their apt pin priority.
In this PR, it changes the cost like below:
Aptitude::ProblemResolver::SolutionCost='100*canceled-actions,200*removals'

It means:

by increasing canceled-actions counter, it does not keep packages at their current version.
by increasing removals counter, it does not delete packages that we want to keep.

ref: https://www.debian.org/doc/manuals/aptitude/ch02s03s04.en.html
Several projects use the same approach to install a particular version.
https://www.intel.com/content/www/us/en/developer/articles/guide/installing-intel-parallel-studio-xe-runtime-2020-using-apt-repository.html
https://www.npmjs.com/package/moncoin-crypto

That's a great solution. I have a question. Why are they 100 and 200? Is it a kind of heuristics? or a kind of threshold?

That's a great solution. I have a question. Why are they 100 and 200? Is it a kind of heuristics? or a kind of threshold?

Actually I don't know about this much. Several projects that need to support to install old version packages use this approach. However there is not much information the details about the counter value of removals and canceled-actions.
My estimate is that this solution allows to downgrade by prioritizing the canceled-actions package and then removals package. Here, the values of 100 and 200 are estimated to be specific values arbitrarily determined by the user rather than threshold values.

1 approval?


Add default_vote_weight default

@GabrielInTheWorld This should fix https://github.com/OpenSlides/openslides-backend/issues/523

I think this has to be 1.000000, right? So we stay consistent with our decimal schema.

Can the backend handle a "1" or does it need to have 6 decimals?

It should be able to, but I still prefer to have the default values match the schema of the field.

Ok, done in #5962


Add New Video Renderers - MadVR

It would be nice to try out new Renderers, particularly MadVR which is giving good results with Kodi in Windows.  Currently we seem to just have the fixed list.
MadVR is here:
http://forum.doom9.org/showthread.php?t=146228
EVR works okay, but I tend to lose the last few seconds of imported videos, and MadVR has far more tweaking options.  Obviously this isn't an urgent request...  Thanks.

Adding new video renderers isn't all that trivial. The main reason is integration with the 3D rendering system so you can do UI overlays on top of video. If MadVR has the same interfaces used by EVR or VMR9; then it would be much easier to integrate. Does Kodi support blending of UI on top of video when using the MadVR renderer?

Transparent UI overlays do work in Kodi using MadVR (this is using the DSPlayer variant of Kodi).  I've no idea on interfaces I'm afraid, I'm just a user.  I'm seeing far better results using MadVR with LAVFilters in Kodi (fewer drops, lower CPU etc.).  It would be nice to try with Sage, but I'm sure there are more important things.

If anybody wants to dig into this...feel free to ping me as always; I'm
more than happy to be a consultant on any SageTV work that gets down and
dirty with the SageTV internals. :)
On Thu, Mar 24, 2016 at 11:02 AM, rickgillyon<EMAIL_ADDRESS>wrote:

Transparent UI overlays do work in Kodi using MadVR (this is using the
DSPlayer variant of Kodi). I've no idea on interfaces I'm afraid, I'm just
a user. I'm seeing far better results using MadVR with LAVFilters in Kodi
(fewer drops, lower CPU etc.). It would be nice to try with Sage, but I'm
sure there are more important things.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/google/sagetv/issues/107#issuecomment-200951711

--
Jeffrey Kardatzke
<EMAIL_ADDRESS>Google, Inc.


Added exceptions for missing model and missing s3 env vars

Hey Chris,
let's just go ahead and merge this in.


[2.4.1] Fix helm display issue

Signed-off-by: Maggie Chen<EMAIL_ADDRESS>https://github.com/open-cluster-management/backlog/issues/17642

/cc @KevinFCormier @fxiang1