How to check integrity of downloaded video at post processor stage ?

Checklist

[X] I'm asking a question and not reporting a bug/feature request
[X] I've looked through the README
[X] I've read the guidelines for opening an issue
[X] I've searched the bugtracker for similar questions including closed ones

Question
All my downloaded files are automated with API. Very rarely I have found video that freeze some seconds and after re-download it is obvious that some fragments were skipped.
when using CLI sometimes but rarely (and then I have no log) we can see errors on downloading stage.
...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 102 (attempt 9 of 10)...
[download] Got server HTTP error: HTTP Error 404: Not Found. Retrying fragment 102 (attempt 10 of 10)...
[download] Skipping fragment 102...
....

If it is not the first fragment, the process continue to the end. I believe.
I can certainly take action at post processor stage to retry if that stage is informed of downloading problem.
But may be, I'm taking the wrong way....

This may work:
ffmpeg -v error -xerror -i out.mp4 -f null -

Interesting, thank you @nyuszika7h
Unfortunately, I have for now no video that is for sure missing some fragment. I will read online and if this command is not too resource intensive, I will launch it on all my videos.

if no error, ffmpeg is completely silent.
Here is the find command to check all my already downloaded videos (must be run with mp4 too) and I can see the progress.
find /youtube/ -name \*.webm -printf '%p\n' -exec ffmpeg -v error -xerror -i {} -f null - 2>ffmpeg-error.log \;

Thank you @nyuszika7h.
Will I find some missing fragments ?

You can also use --abort-on-unavailable-fragment to ensure the download doesn't proceed if there are missing fragments in the first place

thank you @pukkandan, but I prefer partial then nothing. I just want to known if it need a retry.
Access to [download] console information from post process would be great. Can I find a solution by looking at progress_hooks ?

If you are using API, You can have access to the console message in logger. Another trick is to replace FragmentFD.report_skip_fragment with your custom hook. Something like this:
from yt_dlp.downloader.fragment import FragmentFD

def skip_fragment_hook(self, frag_index, err=None):
    # do stuff
    ...

FragmentFD.report_skip_fragment = skip_fragment_hook

Thank you @pukkandan, this look like very useful.

Checking at post processor stage the presence of a file with .ytdl extension is enough to schedule a retry.
But this file seem to exist only if download is broken. I have only 3 on my disk and all are broken at fragment 0 which is fatal even with --abort-on-unavailable-fragment: False
My strategy:

keeping all fragments
if a fragment is skipping, create a file with ext. .part.ytdl (maybe with list of missing fragments).
at post processor stage check the presence of this file.
if exist: schedule retry and delete this file and if not, delete all fragments.

Questions:

I don't know how to use --keep-fragments with API  lol
I don't know where to put FragmentFD.report_skip_fragment = skip_fragment_hook

all are broken at fragment 0 which is fatal even with --abort-on-unavailable-fragment: False

Media will be unplayable without the first fragment. Hence why it is considered fatal.

if a fragment is skipping, create a file with ext. .part.ytdl (maybe with list of missing fragments).

Use some other extension (or even better, just use a variable in ur program). .ytdl files are used for resuming downloads. Manually writing such files may case unexpected behavior

I don't know how to use --keep-fragments with API lol

keep_fragments

I don't know where to put FragmentFD.report_skip_fragment = skip_fragment_hook

anywhere before running YoutubeDL(...).download

I have though about keep_fragments but it didn't work. No fragments are kept.
Now I thing that dash format is not so frequent within my selection of formats.

from yt_dlp.downloader.fragment import FragmentFD

def skip_fragment_hook(self, frag_index, err=None):
    # do stuff
    ...

FragmentFD.report_skip_fragment = skip_fragment_hook

If I understand, with this hook mechanism, I can hack almost all yt-dlp :+1:

Now I thing that dash format is not so frequent within my selection of formats.

Moreover I misunderstand what is dash. I'm sure that I already sew number of fragments before downloading, and today, nothing.

Unless you show your code and verbose log, how would I know?

OK option was working... [dashsegments] Total fragments: 10 and fragments are kept.
But for that, I must choose a format with dash protocol. As we can see below, m4a_dash does not mean that this format is send with dash protocol, and is using fragments.
ID       EXT  RESOLUTION FPS │  FILESIZE    TBR PROTO │ VCODEC        VBR ACODEC     ABR  ASR    MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
139-dash m4a  audio only     │  420.10KiB  50k  dash  │                   mp4a.40.5  50k 22050Hz DASH audio, m4a_dash
140-dash m4a  audio only     │  1.09MiB   130k  dash  │                   mp4a.40.2 130k 44100Hz DASH audio, m4a_dash
251-dash webm audio only     │  1.03MiB   136k  dash  │                   opus      136k 48000Hz DASH audio, webm_dash
139      m4a  audio only     │  420.10KiB  48k  https │                   mp4a.40.5  48k 22050Hz low, m4a_dash
140      m4a  audio only     │  1.09MiB   129k  https │                   mp4a.40.2 129k 44100Hz medium, m4a_dash
251      webm audio only     │  1.03MiB   122k  https │                   opus      122k 48000Hz medium, webm_dash

As we can see too, the very same file (some differences but file size is the same) is sent in dash and in https protocol. My actual selection is https. But which one is the best for our job ? and why ?

Youtube is known to provide incorrect bitrate information for DASH. The two sets of formats are actually the exact same (except for delivery method). I would recommend downloading without dash whenever possible


memory leak

Today I opened the app and there was a memory leak, which took up 98% of the memory. How can I provide the log file

@yaelmhoffman can provide info. Sorry about the late response.

not related to the app, fixed in go-sm


Small fixup on nn::Result

Although bit fields often work nicely, the bit fields in nn::Result had the order of accessed bits swapped, compiler's target endianness affects the order of what bits are accessed in struct bitfields.
It was proper for little endian targets, but not big endian.
Using bit shifts instead, to also allow general portability.

Nice catch!


islec panic: Should have been caught by typechecking

I found a program that crashes islec. Details:
$ git rev-parse HEAD

43022c862a1d497f4b8c7c2fce47148775503add

$ cat test.isle

(type bool (primitive bool))
(type i8 (primitive i8))
(type Map extern (enum))

(decl simplify (Map) Map)

(decl pure ne (i8 i8) bool)
(extern extractor ne ne)

(decl Empty () Map)
(extern extractor Empty extr_empty)
(extern constructor Empty constr_empty)

(decl Insert (i8 i8 Map) Map)
(extern extractor Insert extr_insert)
(extern constructor Insert constr_insert)

(decl Remove (i8 Map) Map)
(extern extractor Remove extr_remove)

(rule 0
  (simplify (Insert k v (Empty)))
  (Insert k v (Empty)))

(rule 1
  (simplify (Insert k v (Remove k m)))
  (simplify (Insert k v m)))

(rule 2
  (simplify (Insert k v1 (Insert k v2 m)))
  (simplify (Insert k v1 m)))

(rule 3
  (simplify (Insert k1 v1 (Insert k2 v2 m)))
  (if (ne k1 k2))
  (Insert k1 v1 (Insert k2 v2 (simplify m))))

(rule
  (Remove k (Empty))
  (Empty))

$ cargo run -- test.isle

    Finished dev [unoptimized + debuginfo] target(s) in 0.09s
     Running `/home/langston/code/wasmtime/target/debug/islec test.isle`
thread 'main' panicked at 'Should have been caught by typechecking', cranelift/isle/isle/src/sema.rs:783:26
stack backtrace:
   0:     0x5588d0fc0850 - std::backtrace_rs::backtrace::libunwind::trace::h32eb3e08e874dd27
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x5588d0fc0850 - std::backtrace_rs::backtrace::trace_unsynchronized::haa3f451d27bc11a5
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x5588d0fc0850 - std::sys_common::backtrace::_print_fmt::h5b94a01bb4289bb5
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x5588d0fc0850 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hb070b7fa7e3175df
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x5588d0fdda7e - core::fmt::write::hd5207aebbb9a86e9ISLE
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/fmt/mod.rs:1202:17
   5:     0x5588d0fbdcd5 - std::io::Write::write_fmt::h3bd699bbd129ab8a
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/io/mod.rs:1679:15
   6:     0x5588d0fc1ed3 - std::sys_common::backtrace::_print::h7a21be552fdf58da
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x5588d0fc1ed3 - std::sys_common::backtrace::print::ha85c41fe4dd80b13
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x5588d0fc1ed3 - std::panicking::default_hook::{{closure}}::h04cca40023d0eeca
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:295:22
   9:     0x5588d0fc1bbf - std::panicking::default_hook::haa3ca8c310ed5402
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:314:9
  10:     0x5588d0fc257a - std::panicking::rust_panic_with_hook::h7b190ce1a948faac
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:698:17
  11:     0x5588d0fc2431 - std::panicking::begin_panic_handler::{{closure}}::hbafbfdc3e1b97f68
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:586:13
  12:     0x5588d0fc0cfc - std::sys_common::backtrace::__rust_end_short_backtrace::hda93e5fef243b4c0
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:138:18
  13:     0x5588d0fc2192 - rust_begin_unwind
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:584:5
  14:     0x5588d0b0b113 - core::panicking::panic_fmt::h8d17ca1073d9a733
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:142:14
  15:     0x5588d0d282a6 - cranelift_isle::sema::Expr::visit::h78e17866d60d927d
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:783:26
  16:     0x5588d0d284ec - cranelift_isle::sema::Expr::visit_in_rule::{{closure}}::hde0977027dc130f4
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:801:20
  17:     0x5588d0d421f7 - <cranelift_isle::trie_again::RuleSetBuilder as cranelift_isle::sema::RuleVisitor>::add_expr::hed65b425a5a91bad
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/trie_again.rs:665:9
  18:     0x5588d0d283d6 - cranelift_isle::sema::Expr::visit_in_rule::h5e39eb43e84c3c96
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:799:9
  19:     0x5588d0d28932 - cranelift_isle::sema::Rule::visit::h893bc3c075cbe6d9
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/sema.rs:876:27
  20:     0x5588d0dc40f7 - cranelift_isle::trie_again::RuleSetBuilder::add_rule::hce133ad78b5f9338
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/trie_again.rs:385:36
  21:     0x5588d0dc3407 - cranelift_isle::trie_again::build::h2d99db94c20d37b4
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/trie_again.rs:216:9
  22:     0x5588d0dcacae - cranelift_isle::overlap::check::h3c7602f0aefa0221
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/overlap.rs:16:31
  23:     0x5588d0d3da54 - cranelift_isle::compile::compile::h80ee996e2ab2b494
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/compile.rs:12:17
  24:     0x5588d0b133ef - cranelift_isle::compile::from_files::h531abe844c59cf17
                               at /home/langston/code/wasmtime/cranelift/isle/isle/src/compile.rs:23:5
  25:     0x5588d0b0eb35 - islec::main::h204180e4f764a747
                               at /home/langston/code/wasmtime/cranelift/isle/islec/src/main.rs:27:16
  26:     0x5588d0b10122 - core::ops::function::FnOnce::call_once::haeba8a3e3015b018
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:248:5
  27:     0x5588d0b0c795 - std::sys_common::backtrace::__rust_begin_short_backtrace::he495da2ee4c5c6c7
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:122:18
  28:     0x5588d0b150e6 - std::rt::lang_start::{{closure}}::h62a6b89bd67457e9
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:166:18
  29:     0x5588d0fb927f - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hb69be6e0857c6cfb
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:283:13
  30:     0x5588d0fb927f - std::panicking::try::do_call::h39|6dfc441ee9c786
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
  31:     0x5588d0fb927f - std::panicking::try::h6cdda972d28b3a4f
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
  32:     0x5588d0fb927f - std::panic::catch_unwind::h376039ec264e8ef9
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
  33:     0x5588d0fb927f - std::rt::lang_start_internal::{{closure}}::hc94720ca3d4cb727
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:48
  34:     0x5588d0fb927f - std::panicking::try::do_call::h2422fb95933fa2d5
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
  35:     0x5588d0fb927f - std::panicking::try::h488286b5ec8333ff
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
  36:     0x5588d0fb927f - std::panic::catch_unwind::h81636549836d2a25
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
  37:     0x5588d0fb927f - std::rt::lang_start_internal::h6ba1bb743c1e9df9
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:20
  38:     0x5588d0b150ba - std::rt::lang_start::h858f0a28ab63a77d
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:165:17
  39:     0x5588d0b0fe61 - main
  40:     0x7fc5de7f3237 - __libc_start_call_main
  41:     0x7fc5de7f32f5 - __libc_start_main_impl
  42:     0x5588d0b0b3e1 - _start
                               at /build/glibc-2.34/csu/../sysdeps/x86_64/start.S:116
  43:                0x0 - <unknown>

Not sure if this is related or separate, but this slight variation gives an assertion failure:
(type bool (primitive u8))
(type i8 (primitive i8))
(type Map extern (enum))

(decl simplify (Map) Map)

(decl pure ne (i8 i8) bool)
(extern constructor ne ne)

(decl Empty () Map)
(extern extractor Empty extr_empty)
(extern constructor Empty constr_empty)

(decl Insert (i8 i8 Map) Map)
(extern extractor Insert extr_insert)
(extern constructor Insert constr_insert)

(decl Remove (i8 Map) Map)
(extern extractor Remove extr_remove)

(rule 0
  (simplify (Insert k v (Empty)))
  (Insert k v (Empty)))

(rule 1
  (simplify (Insert k v (Remove k m)))
  (simplify (Insert k v m)))

(rule 2
  (simplify (Insert k v1 (Insert k v2 m)))
  (simplify (Insert k v1 m)))

(rule 3
  (simplify (Insert k1 v1 (Insert k2 v2 m)))
  (if (ne k1 k2))
  (Insert k1 v1 (Insert k2 v2 (simplify m))))

(rule
  (Remove k (Empty))
  (Empty))

thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `0`', cranelift/isle/isle/src/codegen.rs:433:17

cc @jameysharp for the codegen assert, and we can take a look at the typechecking hole as well (probably on Monday), but one quick note as I see something:

(decl pure ne (i8 i8) bool)
(if (ne k1 k2))

We actually ran into this footgun elsewhere recently, and it is subtle: the (if (ne ...)) form is testing whether the ne constructor matches, not whether it returns true. We'll probably rename if (to if-matches or similar?) to make this clearer -- see this thread on #5676.
So you'll probably want something like (if-let $true (ne k1 k2)). We could potentially add some sugar for that form too if it becomes annoying enough.

Chris' suggestion to change the (if (ne ...)) to (if-let $true ...) fixes the codegen assertion failure. The proximate cause of the assertion failure was that of the two rules matching (Insert ... (Insert ...)), the higher-priority one matched first in all the cases where the lower-priority one could possibly match. If the assert were removed, ISLE would have emitted Rust with a return statement for the higher-priority rule, immediately followed by an unreachable if statement to check the equality constraint on the lower-priority rule. Then the Rust compiler would have refused to compile the generated code.
Ideally, overlap/subset checking would have noticed that the rule with priority 2 could never match because the rule with priority 3 would always match first. However, there's an equality constraint in the former rule, and currently that check gives up and decides everything's fine if a rule has any equality constraints, because they're harder to reason about.
I thought this assert was impossible if overlap checking passed, so I didn't think hard about good error messages. But I didn't think about the impact of this hole in overlap checking's completeness.
By the way, a better way to write this pair of rules is to swap their priority and remove the (if ...) entirely. Because the rule which requires equality will match first, we'll only check the other rule when the map keys are not equal.
(rule 3
  (simplify (Insert k v1 (Insert k v2 m)))
  (simplify (Insert k v1 m)))

(rule 2
  (simplify (Insert k1 v1 (Insert k2 v2 m)))
  (Insert k1 v1 (Insert k2 v2 (simplify m))))

And I'm not sure why the error that "should have been caught by typechecking", er, wasn't. But I can tell you the problem is that in the first version, the ne term was declared without a constructor, but used in expression context (in an if). You fixed that in the second version by changing it from an extractor to a constructor.

The proximate cause of the assertion failure was that of the two rules matching (Insert ... (Insert ...)), the higher-priority one matched first in all the cases where the lower-priority one could possibly match.

I see, thanks! Changing the rules to not cover one another did indeed fix this.
Thanks to both of you for the ISLE programming tips! I'm excited to use this tool - it's very neat!

Glad we could help! I'd love to hear what you're using ISLE for.
Let's leave this issue open even though your immediate issues are resolved, because we really should make sure typechecking actually catches this case instead of hitting a later panic.


fix:extension/v1beta1 to apps/v1 for DaemonSet

Signed-off-by: yulng<EMAIL_ADDRESS>Fix extension/v1beta1 to apps/v1 for DaemonSet
According to the following document:
https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/

@caseydavenport
:)

/sem-approve


Comparison against empty string converted to 'NULL' string

Trying to use an empty string for a comparison causes the query builder to replace it with a string of NULL.
Example:
$builder = new \NilPortugues\Sql\QueryBuilder\Builder\GenericBuilder;

$select = $builder->select('SomeTable');
$select->where()->equals('someField', '');

$sql = $builder->writeFormatted($select);
$parameters = $builder->getValues();

var_dump($sql, $parameters);

string(80) "SELECT
    SomeTable.*
FROM
    SomeTable
WHERE
    (SomeTable.someField = :v1)
"
array(1) {
  [":v1"]=>
  string(4) "NULL"
}

This is caused by NilPortugues\Sql\QueryBuilder\Builder\Syntax\PlaceholderWriter@writeNullSqlString where an empty string is converted to NULL (presumably to be the sql keyword, however its treated as a string value). Given values as passed via paramter binding, the correct behaviour here would be to not convert the value at all (leaving null as null). This issue appears to hail back from the initial implementation.


Windows Compatibility?

Does this work on Windows?

No lmao, it's a Swift application, only works on Mac. You can't even get Xcode on Windows.


[FLINK-34687][cdc][docs] Build the home page of Flink CDC documentation

This PR build a new home page  of Flink CDC documentation to help user know this project easily .

👍


Fix parser fail on certificate verification.

Due to a change in Python's cryptography version 35.0.0 certificate
parser, and a difference in the ASN.1 certificate spec interpretation,
the certificates generated by certmonger fail to be validated.
This patch forces the version for the 'cryptography' package installed
to ignore the affected version, and should allow the tests for this
role to be executed.
certmonger already has a fix for the issue, but it might not be
available for every release supported by certificate role.

[citest]


 I had been learning Go the last few months and kept trying out different UI packages and so far this one definitely seems to be the way to go. I was working on building my application which runs as a taskbar background application and then uses flutter as a config window. I got to the point where I was ready to connect up some of my backend logic with the front end when I realized that I have yet to find an example of how to actually do that? I assume that data binding is probably needed or similar, but how do I go about doing that?
Specifically what I was trying to do at the moment was, my background Go code, upon opening the app reads data from a config file and stores it in a struct and then I was going to use list view to display data within the various sections of the config on the main page of my flutter app. All I have seen so far in the way of actual Go code being involved was simply starting the application and setting a few options.  Does anyone have any links to any similar examples or info?
Thanks!
-MH

Thanks for your interest in go-flutter:+1:!
go-flutter supports plugin (flutter <-> golang binding) wiki how to make a plugin.
Some plugins are already implemented checkout: go-flutter/plugins.

Thanks for the links. I want to make sure I am understanding this properly, it looks like the code in the plugin wiki is it's own separate complete project/app then? It is not something you code directly within your current project? I would have to create a whole new directory outside of my project, create desktop folder with new go code in it and then lib/dart files, and then reference that new separate project back from within my main project in order to just display some values?
Or is it possible to just implement the MethodChannel and async call directly in my project I have already been working on? While the ability to create plugins is great, I can't help but feel all of that is a bit overkill to just display some data.

If you want to pass data from Go to the flutter front end plugins are the way to go!
But, If I understand your needs correctly you 'only' need to use flutter to display a config list. Thus the flutter app is only launched occasionally. If that's the case, a plugin is overkill.
Flutter/Dart can read your file directly, https://flutter.dev/docs/cookbook/persistence/reading-writing-files. There is no need to pass data from Go to the flutter front end, I am understanding your issue correctly?

For the most part, yes. The flutter side of things will only be displayed occasionally, such as when first configuring the application.  I say "simply display the data", but in reality it is more complicated than that on the Go side, as I am using this package https://github.com/Unknwon/goconfig to open the file and parse the data in a specific way, but then later on the data will be used in other ways as I create more of the application. Displaying it was just the first step. Most things will be handled on the Go side, flutter would mostly be a way to take in text values and display some output or lists.
Essentially, I figured it would be a good learning experience to try to make a Rclone front end using this.
(This is just what I have thrown together so far yesterday and last night)

So far I just populated the list with hard coded values, but I really want to populate it with values I get from this:
(This was some of my initial test code that is working as I intended which reads/parses the rclone.conf file)
func Gclone() {
	config := struct {
		Section struct {
			Name string
		}
	}{}

	_ = confg.ReadFileInto(&config, ConfigPath)

	LoadConfig()
	cfg, sections := GetRemotes()
	for k, v := range sections {
		RMData[v] = &RemoteDataConfig{Name: v}
		secData, _ := cfg.GetSection(v)

		switch secData["type"] {
		case "drive":
			RMData[v] = SetupDrive(v, secData)
		}
		clientid, _ := cfg.GetValue(RMData[sections[k]].Name, "client_id")
		clientsecret, _ := cfg.GetValue(RMData[sections[k]].Name, "client_secret")
		fmt.Printf("Client_Id: %s : %s \n", clientid, clientsecret)
	}
}

func SetupDrive(name string, secData map[string]string) *RemoteDataConfig {
	return &RemoteDataConfig{
		Name: name,
		Type: secData["type"],
		Scope: secData["scope"],
		Token: secData["token"],
		ClientId: secData["client_id"],
		ClientSecret: secData["client_secret"]}
}

So all said and done, for the time being, my plan was to try and get the data within RemoteDataConfig from SetupDrive() in the code above, and make it available to flutter so the list that is in the pic could be populated by the Name: from the RemoteDataConfig struct. So technically Flutter would just simply be displaying the name, but as you can see, it is a bit more complicated than that. So I guess I am just trying to figure out the best way to go about doing what I need to go for that.
On the flip side, the Flutter portion will have inputs on a config screen to take in text which Go will then save back to the config file, but I figured one step at a time.

There is 2 applications:
A rsync daemon.
A UI.
The rsync daemon should work independently from the UI.
The UI need to retrieve information from the rsync daemon.
Flutter plugin is a way of gaining access to platform specific feature. (And bundle those feature in the same exec).
Your rsync daemon should not contain any UI, flutter pluing shouldn't be use in the rsync daemon. The daemon should only expose a interface (through a TCP socket for example) on which any kind of UI could connect onto.
The TCP socket can be read from native dart code, no need for go-flutter plugins.

You could also bundle everything into a Flutter application. If so, flutter plugins is a better way to go.
It really comes down to architectural preferences.

I don't have a response for your question.
You can use go-flutter plugins.. or.. not!
It's up to you to make your choice.

I understand what you are saying. I am doing this as a personal learning project. I certainly know there are other ways to go about things, but that is not what I am after. The primary reason I am making this and running my Go application as a taskbar background application is to provide a scheduler/task runner to Rclone. My application will just run in the background and then issue commands to Rclone when it needs to.
I appreciate the information you have given. I will just have to experiment and see what I can come up with.
Thanks,
-MH

I hope I gave you the information you were looking for. If you have any questions/issues about the go-flutter package, fell free to ask them in gitter or on github!

Just in case anyone searches this in the future. I found this tutorial, you just have to translate the page, but it shows a good example of having a value on the Go side and then getting that value to display in your flutter app.
https://www.kikt.top/posts/flutter/desktop/go-desktop-engine/flutter-go-desktop-1/

Sorry to dig this back up again. I had a relevant question though on usage.
I implemented what I found in that tutorial and I was able to get a value from my Go code into the Flutter UI, but it is super... inconvenient? Is there a way to make this a bit more reusable?
Following the tutorial, it has you create a get_version_plugin.dart which contains:
import 'package:flutter/services.dart';

class GetVersionPlugin {
  static const _channel = const MethodChannel("top.kikt/go/version");

  static Future<String> get version async =>
      _channel.invokeMethod("getVersion");
}

Then to actually display it, I did similar to how they did it and created a new file (I had taken https://github.com/X-Wei/flutter_catalog and made it so it was a go-flutter application so I could see how things looked / worked on the desktop, so I reused some of its code, hence below having MyRoute and buildMyRouteContent. It works as you see it though and displays the value I have set in my Go code)
import 'package:flutter/material.dart';
import '../get_version.dart';
import '../route.dart';

class JobStatus extends MyRoute {
  const JobStatus([String sourceFile = 'lib/routes/tabs.dart'])
      : super(sourceFile);

  @override
  get title => 'Job Status';

  @override
  get links =>
      {'Doc': 'https://docs.flutter.io/flutter/material/TabBar-class.html'};

  @override
  Widget buildMyRouteContent(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: FutureBuilder<String>(
        future: GetVersionPlugin.version,
        builder: (c, snapshot) {
          if (!snapshot.hasData) {
            return Container();
          }
          return Text(snapshot.data);
        },
      ),
    );
  }
}

So all said and done, it takes that entire route/FutureBuilder to just display "v0.0.2". In the image I posted above, the list is created via this:
  static final _items = <String>[
    'Google Drive' + GetVersionPlugin.version.toString(),
    'Google Cloud',
    'External USB Drive',

  ].map((item) => _ListItem(item, false)).toList();

Just to test, I tried what you see above, which though gave me "Instance of Future", so I assume it would not be as easy as calling the "GetVersion".
To use my prior code as the example, if in my Go code I wanted to use the plugin in a similar manner but I wanted to instead get the data from this function:
func SetupDrive(name string, secData map[string]string) *RemoteDataConfig {
	return &RemoteDataConfig{
		Name: name,
		Type: secData["type"],
		Scope: secData["scope"],
		Token: secData["token"],
		ClientId: secData["client_id"],
		ClientSecret: secData["client_secret"]}
}

so that in my Flutter UI I could use it to display the contents of RemoteDataConfig, how would I have to change the FutureBuilder so that I can more readily access the data within it in other parts of the application and not just within this one particular page/route? As it stands, having to have a dedicated page for displaying the value isn't super useful, lol.

I implemented what I found in that tutorial and I was able to get a value from my Go code into the Flutter UI, but it is super... inconvenient? Is there a way to make this a bit more reusable?

Well, platform plugins are about implementing native platform code 1-2-3-4 times on multiples native language (Java, Objective-C, CPP, Golang, ...). The platform code talks to a dart interface, _channel.invokeMethod for example, using different codec StandardMessageCodec for example. Writing plugin isn't the most funnier exercise, but it fills a purpose that hybrid project like flutter/react-native/cordova cannot solves directly, because they cannot directly access native code.
Yes, plugin are inconvenient, and they are slow due to the serialization/deserialization/serialization overhead. But I don't agree with them not being reusable, the dart code is written once and can talk to a variety of native languages (We can found codec for: Java, Kotlin, Objective-C, Swift, CPP, Golang, Rust). Once the plugin is written, the user only sees a Future<Something> regardless of the platform. The Future<Something> looks exactly like a API call, it's consistent :+1:. To me, the plugin architecture of flutter is well designed (Coming from a Cordova background, it's refreshing to see a solution that dosn't feel like a hack).
If your question is about good Dart practices for handling API calls, I'm afraid I cannot answer that question since I'm a very bad Dart developer xD :face_with_head_bandage:

So all said and done, it takes that entire route/FutureBuilder to just display "v0.0.2".

 If you don't want to use that entire route/FutureBuilder to just display "v0.0.2" than change the UI  :stuck_out_tongue:. (again, how you handle the display of the strings is out of the scope of go-flutter).

how would I have to change the FutureBuilder so that I can more readily access the data within it in other parts of the application and not just within this one particular page/route? As it stands, having to have a dedicated page for displaying the value isn't super useful, lol.

Well again I'm not a dart/flutter developer, go-flutter provides you a bridge between Golang and dart, the question is more about API handling.
go-flutter point:
If you want to send a RemoteDataConfig{} into Dart, look at StandardMessageCodec, you can return a map[interface{}]interface{} which will be converted to Dart Map

I appreciate the thorough reply. I do confess since Dart/Flutter in general is new to me, I suppose it was a bit difficult for me to differentiate what would be a go-flutter question and what would be a plain dart/flutter question. That is probably my biggest issue to overcome. Once I figure that out, it will probably help me to better locate more repos with code samples which are closer to what I am hoping to achieve. I tried to just use keywords from the tutorial to see if anything came up, but I suppose they were not related in the way I was expecting them to be.
Such as, I tried to look up "go-flutter" and "MethodChannel" since those were both things I used from the tutorial, hoping to see other people who have implemented it and what they were doing and how, but unfortunately that only yielded 7 results, and they were all from this repo, lol. Now I see that MethodChannel isn't / wasn't used along with anything go-flutter specific to begin with.
I will definitely look into the StandardMessageCodec, as being able to return a map[] is exactly what I need. If I am able to have a map, then I can use that to fill out the data in my list. So that at least gets me pointed in the right direction.
Thanks again for your time, and especially your patience with all my questions. I have been all over the place language wise this year. I started with C# and Unity, then learning Python, then HCL for Terraform, Go, Node/JS, and now this. Things are just kind of mentally mushing together syntactically.
Anyways, you have been most helpful, I will leave you be now and continue researching and seeing what I can break, lol.
Thanks,
-MH


Particles disappears when looked at from a specific direction.

Hi, do you know why my particles disappears when I move my camera in these specific ways (see video below) ? This happens in both the scene view and the game view from the camera. Also some kind of LOD banding effect seems to be obstructing the particles when looking from afar. Thanks alot !
https://drive.google.com/file/d/1VWsVgMt_cKWp13tWjQ0j_z3IlZOzMJ7t/view?usp=sharing
Mathieu.

Are you using VFX Graph? It seems that the VFX system is culled. You can extend the bounds to void being culled.

I'm closing this issue now. Please reopen it for further problems.


fix(css-load): fix useCssLoadPatch determination when encountering unknown UA + platforms

Requires rebuild post-merge.
Fixes #416

Wondering if you had chance to take a look at this @ocombe

any thoughts, @ocombe ? we're seeing this fail fairly frequently with the code that's in master.

@booleanbetrayal Did you build and test this? I'm having a similar issue, but I have no idea what tool is used to build this.

I haven't tried to build this but I could. Is that something I should do @ocombe ?

Added dist builds to this branch @daerogami via 0b785e6

Awesome! It will be a week or so before I can get around to testing this on the project I'm using it on. Thanks @booleanbetrayal!


Inaccuracies in the Virtual Schema API Documentation

I found a few inaccuracies in the Virtual Schema API Documentation while using it.

Missing literal_interval json example here: https://github.com/exasol/virtual-schemas/tree/master/doc#literal

I discovered that "type": "predicate_equals" doesn't really work in our implementation, but "type": "predicate_equal" works fine. We need to fix the documentation or the implementation. You can find it here: https://github.com/exasol/virtual-schemas/tree/master/doc#predicates

The same for "predicate_notequals".

The same for "predicate_lessequals".

Missing predicate_is_null and predicate_is_not_null here: https://github.com/exasol/virtual-schemas/tree/master/doc#predicates

Moved to #191


Update the ScanDependencies/clang-target.swift to work on both x86 and arm64

And create arch-specific inputs for it.

@swift-ci test Apple Silicon

@swift-ci test


Add a Make file

Description
Add a make file for a quick project setup.
It should install the gems and run pod install

Make file added on 2nd March 2017.  Closing issue.


[Firefox] double back when using pushState: true

Framework7 version: [e.g. 3.0.7]
Platform and Target: [Firefox 61]
Live Link or JSFiddle: https://jsfiddle.net/o2ejupu1/252/

Describe the bug
With pushState: true occurs double back when clicking in back button (or calling router.back)
The second back is triggered in response to a popstate event (utils/history.js). The check if stateUrl !== router.url evaluates to false and a back action is queued
Interestingly, this issue does not occurs in Chrome. At the popstate event stateUrl === router.url evaluates to true and no back action is queued
To Reproduce
Steps to reproduce the behavior:

Enable pushState
Navigate to two pages. Click back button

In this fiddle:  https://jsfiddle.net/o2ejupu1/252/ go to page 2 or 3 and click back button
Expected behavior
Should go only one page back
Actual Behavior
Go to two pages back in history

Interestingly, this issue does not occurs in Chrome. At the popstate event stateUrl === router.url evaluates to true and no back action is queued

I found that the call to History.back() inside backward (router/back.js) triggers the popstate immediately in Firefox but not on chrome, so at this time router.url still points to the previous url
I see that there's a check postponing the History.back for ie or edge. This would fix firefox but unfortunately, Device does not has a Firefox field

Pushed fix, can you check it and confirm it is workin?

Pushed better tweak. As from my tests, having same for Safari/Chrome will also break it

It works with Firefox desktop, android and in ipad. Also on chrome
Many thanks


Typo "NuGet.config"→"NuGet.Config"

https://docs.microsoft.com/en-us/appcenter/build/custom/dependencies/
#PingMSFTDocs

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks @hyoshioka0128
#sign-off


Infinite recursion due to pandas(?) when operating on a categorical obs column

Please make sure these conditions are met

[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest version of anndata.
[ ] (optional) I have confirmed this bug exists on the master branch of anndata.

Report
I am getting an infinite recursion due most likely to this pandas bug: https://github.com/pandas-dev/pandas/issues/52927. The bug, which appeared a few days ago (probably the latest pandas release), is triggered by a code that I use to populate old categories that gets dropped after data subsetting (to have a workaround on this: https://github.com/scverse/anndata/issues/890).
The latest main from pandas is supposed to fix the problem, but it looks like it doesn't. Maybe I should report the bug to pandas, I will try to reproduce it via pandas code only now.
Code:
##
from anndata import AnnData
import pandas as pd

def _inplace_fix_subset_categorical_obs(subset_adata: AnnData, original_adata: AnnData) -> None:
    """
    Fix categorical obs columns of subset_adata to match the categories of original_adata.

    Parameters
    ----------
    subset_adata
        The subset AnnData object
    original_adata
        The original AnnData object

    Notes
    -----
    See discussion here: https://github.com/scverse/anndata/issues/997
    """
    obs = subset_adata.obs
    for column in obs.columns:
        is_categorical = pd.api.types.is_categorical_dtype(obs[column])
        if is_categorical:
            c = obs[column].cat.set_categories(original_adata.obs[column].cat.categories)
            obs[column] = c

anndata = AnnData(obs=pd.DataFrame({"a": pd.Categorical(["a", "b", "c"])}))
subset = anndata[anndata.obs["a"] == "a"]
assert subset.obs['a'].cat.categories.tolist() == ["a"]
_inplace_fix_subset_categorical_obs(subset, anndata)

Traceback:
_inplace_fix_subset_categorical_obs(subset, anndata)
<ipython-input-2-91050d1e96e1>:21: FutureWarning: is_categorical_dtype is deprecated and will be removed in a future version. Use isinstance(dtype, pd.CategoricalDtype) instead
  is_categorical = pd.api.types.is_categorical_dtype(obs[column])
<ipython-input-2-91050d1e96e1>:24: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  obs[column] = c
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
...
...
...
...
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py:79: ImplicitModificationWarning: Trying to modify attribute `.obs` of view, initializing view as actual.
  container[idx] = value
Traceback (most recent call last):
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3526, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-7-191c4157c214>", line 1, in <module>
    _inplace_fix_subset_categorical_obs(subset, anndata)
  File "<ipython-input-2-91050d1e96e1>", line 24, in _inplace_fix_subset_categorical_obs
    obs[column] = c
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py", line 79, in __setitem__
    container[idx] = value
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py", line 79, in __setitem__
    container[idx] = value
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py", line 79, in __setitem__
    container[idx] = value
  [Previous line repeated 2961 more times]
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py", line 78, in __setitem__
    with view_update(*self._view_args) as container:
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/contextlib.py", line 135, in __enter__
    return next(self.gen)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/views.py", line 52, in view_update
    new = adata_view.copy()
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/anndata.py", line 1586, in copy
    return self._mutated_copy()
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/anndata.py", line 1527, in _mutated_copy
    return AnnData(**new)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/anndata.py", line 362, in __init__
    self._init_as_actual(
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/anndata.py", line 548, in _init_as_actual
    self._var = _gen_dataframe(
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/functools.py", line 889, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/anndata/_core/anndata.py", line 186, in _gen_dataframe_df
    anno.columns = anno.columns.astype(str)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/pandas/core/indexes/base.py", line 1073, in astype
    result = Index(new_values, name=self.name, dtype=new_values.dtype, copy=False)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/pandas/core/indexes/base.py", line 482, in __new__
    name = maybe_extract_name(name, data, cls)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/pandas/core/indexes/base.py", line 7579, in maybe_extract_name
    if name is None and isinstance(obj, (Index, ABCSeries)):
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/pandas/core/dtypes/generic.py", line 44, in _instancecheck
    return _check(inst) and not isinstance(inst, type)
  File "/Users/macbook/miniconda3/envs/ome/lib/python3.10/site-packages/pandas/core/dtypes/generic.py", line 38, in _check
    return getattr(inst, attr, "_typ") in comp
RecursionError: maximum recursion depth exceeded while calling a Python object

Versions
-----
anndata             0.10.2
session_info        1.0.0
-----
asciitree           NA
cloudpickle         3.0.0
cython_runtime      NA
cytoolz             0.12.2
dask                2023.10.1
dateutil            2.8.2
exceptiongroup      1.1.3
fasteners           0.17.3
gmpy2               2.1.2
h5py                3.9.0
importlib_metadata  NA
jinja2              3.1.2
markupsafe          2.1.3
mpmath              1.3.0
msgpack             1.0.6
natsort             8.4.0
numcodecs           0.12.1
numpy               1.24.4
packaging           23.2
pandas              2.2.0.dev0+471.g984d75543
psutil              5.9.5
pyarrow             13.0.0
pytz                2023.3.post1
scipy               1.11.3
six                 1.16.0
sphinxcontrib       NA
sympy               1.12
tblib               2.0.0
tlz                 0.12.2
toolz               0.12.0
torch               2.1.0
torchgen            NA
tqdm                4.66.1
typing_extensions   NA
yaml                6.0.1
zarr                2.16.1
zipp                NA
zoneinfo            NA
-----
Python 3.10.13 | packaged by conda-forge | (main, Oct 26 2023, 18:09:17) [Clang 16.0.6 ]
macOS-13.4.1-arm64-arm-64bit
-----
Session information updated at 2023-10-28 17:20

The bug seems to be in anndata, it is triggered by obs[column] = c. The type of obs[column] is a anndata._core.views.DataFrameView, I am trying to get around this, maybe avoiding assigning the column to the view can help fix the problem.

I managed to fix by changing obs = subset_adata.obs to obs = pd.DataFrame(subset_adata.obs).

Update: in spatialdata the bug appears also in other places.
For instance I have an AnnData object containing a categorical column in obs:
matched_table.obs
Out[14]:
           region  instance_id  numerical_in_obs
0  values_circles            0          0.321869
1  values_circles            1          0.594300
2  values_circles            2          0.337911
3  values_circles            3          0.391619
4  values_circles            4          0.890274
5  values_circles            5          0.227158
6  values_circles            6          0.623187
7  values_circles            7          0.084015

such that
type(matched_table.obs)
Out[11]: anndata._core.views.DataFrameView

Now, the following operation leads to the same recursion exception:
matched_table[:, value_key_values].obs

but if I delete the categorical column, then the problem disappears.
In my case I'll patch the bug by making an explicit instantiation of matched_table.obs, but I think this bug should be fixed here in AnnData.

Found another piece of code affected: table = table[table.obs[region_key].isin(coordinate_system)].copy(), I'll patch also this for the time being.

Well, DataFrameView is there for a reason. AnnData’s views are lightweight objects that represent slices of other AnnData objects. They’re copy on write, so setting an attribute on them like you do in your workaround makes them into non-views.
So I’m pretty sure that what you’re actually doing in your workaround isn’t just setting obs to a dataframe, it’s just adata = adata.copy(), triggered by setting a field on the AnnData object.
A real fix would probably be to change DataFrameView to not trigger recursive behavior. Do you have an idea how that could be done?

I see, the bugfix for https://github.com/pandas-dev/pandas/issues/52927 hasn’t made it into a release yet, so the best workaround is to just set a pandas dependency specifier pandas !=2.1.2.

@flying-sheep, using the pandas nightly wheel does not solve this issue, so I don't think a new release of pandas will fix this.
So I think we still either need to do:

A real fix would probably be to change DataFrameView to not trigger recursive behavior. Do you have an idea how that could be done?

Or fix it upstream

I also get this behavior for setting any column of a dataframe, not just categorical ones. E.g.:
import anndata as ad, pandas as pd, numpy as np

adata = ad.AnnData(
    obs=pd.DataFrame(
        {"b": [1, 2, 3]},
        index=list("abc")
    )
)
v = adata[[0], :]

v.obs["b"] = 3

Also triggers the recursion error.

This looks relevant: https://github.com/pandas-dev/pandas/issues/55120

Thanks for the info. @flying-sheep I am quite sure I tried also adata = andata.copy() but it didn't work, that's why I am doing the conversion on the obs.

Very weird! If the class is still a view, it should try updating its parent AnnData object.
Well, I hope we can come up with a good fix, let’s see if the .copy() one is enough.

#1223 shows a comorbidity of the same upstream bug.

I am also noticing something strange with anndata 0.10.3 vs anndata 0.10.1 and pandas 2.0.3
File ~/.conda/envs/organoids/lib/python3.11/site-packages/anndata/compat/__init__.py:400, in _map_cat_to_str(cat)
    397 def _map_cat_to_str(cat: pd.Categorical) -> pd.Categorical:
    398     if _parse_version(pd.__version__) >= _parse_version("2.0"):
    399         # Argument added in pandas 2.0
--> 400         return cat.map(str, na_action="ignore")
    401     else:
    402         return cat.map(str)

TypeError: Categorical.map() got an unexpected keyword argument 'na_action'

PR to fix, which is slated for the next pandas bug fix release: https://github.com/pandas-dev/pandas/pull/55764. We can close if if/ when the PR to pandas merges

Merged!


Unable to install

npm ERR! code EBADPLATFORM
npm ERR! notsup Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"win32","arch":"ia32,x64"} (current: {"os":"darwin","arch":"x64"})
npm ERR! notsup Valid OS:    win32
npm ERR! notsup Valid Arch:  ia32,x64
npm ERR! notsup Actual OS:   darwin
npm ERR! notsup Actual Arch: x64

Only Windows is supported


Remove deprecated files

Add gas calc docs for current version. These will be replaced by IdealGases.jl

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


json-c: update to 0.14

Autotools are effectively removed as of 0.14 as json-c fully switches to CMake.

Missing depends on cmake?

Whoops. Force-pushed.


parameters now can have multiple values of a kind

This PR closes #122 .

will re-open with a correct branch name


class_loader: 0.4.1-0 in 'melodic/distribution.yaml' [bloom]

Increasing version of package(s) in repository class_loader to 0.4.1-0:

upstream repository: https://github.com/ros/class_loader
release repository: https://github.com/ros-gbp/class_loader-release.git
distro file: melodic/distribution.yaml
bloom version: 0.6.4
previous version for package: 0.4.0-1

class_loader
* Provide std::shared_ptr interface (#95 <https://github.com/ros/class_loader/issues/95>)
* Windows compat and style fixups (#90 <https://github.com/ros/class_loader/issues/90>)
  * add visibility macros to public functions
  * rename private namespace 'class_loader_private' to 'impl' to match ros2 branch
* use new headers to build library (#93 <https://github.com/ros/class_loader/issues/93>)
* Contributors: Mikael Arguedas

holding to sync with other ros_base package's releases


Add --host switch to mount command

It would allow the user to access/browse snapshots of other hosts than the current one.
This is for example useful for hosts that are no longer alive or available.
The switch is possible useful for other commands too?

Related: #793

Hey, thanks for opening this issue. I do not yet understand what an option --host to the mount command should do. Could you elaborate a bit please?
At the moment restic allows browsing all snapshots from all hosts in the repository via fuse.
The parameter to the backup command was only added to manually specify a different hostname than the one restic automatically detects when a backup is made.

It would be just to filter, I guess. Currently, you have to mount, then list the snapshots, grep for the hostname, and then use the list in a second terminal to browse through the matching dates under the mount.

This was fixed in PR #866

Indeed, thanks for the reminder!


feat: add canister management methods to ic management library

Motivation
Create a common JavaScript interface for interacting with the IC's management canister. This is something that I think will be particularly useful in tests or automation scripts.
Changes
I've extended the library that @peterpeterparker added with additional functions from the IC management canister interface.
Tests
I've added unit tests for each additional function.

@nathanosdev I have released a next version if you want to use it before we release an "official" version.
npm i @dfinity/utils@next @dfinity/ic-management@next


transform fail case

blaze.transform does not like the following situation.
Scenario: Try to calculate the relative sizes of each team to the total number of people and append this to the table.  Compute output should be ((1, 3, .6), (2, 2, .4)) so that the table looks similar to:

team
size
new_col

1
3
.6

2
2
.4

# the dataset
testdata = blaze.Data([(1, 'Alice', 100),
                       (2, 'Bob', -200),
                       (1, 'Charlie', 300),
                       (2, 'Denis', 400),
                       (1, 'Edith', -500)], fields=['team', 'name', 'balance'])
t1 = blaze.by(testdata.team, size=testdata.team.count())

# This succeeds
t2 = blaze.transform(t1, new_col=testdata.size/5)
blaze.compute(t2, testdata)

# This fails
nr = testdata.nrows    # == 5
t2 = blaze.transform(t1, new_col=testdata.size/nr)
blaze.compute(t2, testdata)
Traceback (most recent call last):
  File "<ipython-input-32-b27996d8fb1e>", line 1, in <module>
    list(blaze.compute(t2, testdata))
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/multipledispatch/dispatcher.py", line 163, in __call__
    return func(*args, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 70, in compute
    return compute(expr, {first(ts): o}, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/multipledispatch/dispatcher.py", line 163, in __call__
    return func(*args, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 470, in compute
    result = top_then_bottom_then_top_again_etc(expr3, d4, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 177, in top_then_bottom_then_top_again_etc
    expr3 = optimize_(expr2, *[scope3[leaf] for leaf in expr2._leaves()])
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 177, in <listcomp>
    expr3 = optimize_(expr2, *[scope3[leaf] for leaf in expr2._leaves()])
KeyError: _2

We can also see the following when trying to add a constant column.
# This fails
nr = testdata.nrows    # == 5
t2 = blaze.transform(t1, new_col=nr)
blaze.compute(t2, testdata)
Traceback (most recent call last):
  File "<ipython-input-46-89970307d08b>", line 1, in <module>
    blaze.compute(t2, testdata)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/multipledispatch/dispatcher.py", line 163, in __call__
    return func(*args, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 70, in compute
    return compute(expr, {first(ts): o}, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/multipledispatch/dispatcher.py", line 163, in __call__
    return func(*args, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 470, in compute
    result = top_then_bottom_then_top_again_etc(expr3, d4, **kwargs)
  File "/Users/xxxxx/miniconda/envs/py3k/lib/python3.4/site-packages/blaze/compute/core.py", line 191, in top_then_bottom_then_top_again_etc
    "data: %s" % (expr3, scope4))
NotImplementedError: Don't know how to compute:
expr: Merge(_child=_2, children=(by(_2.team, size=count(_2.team)), label(nelements(_2), 'new_col')))
data: {_2: [(1, 'Alice', 100), (2, 'Bob', -200), (1, 'Charlie', 300), (2, 'Denis', 400), (1, 'Edith', -500)]}

I'm guessing that blaze does not know how to evaluate nr.  This is something I would expect blaze to be able to do.

This works:
In [1]: testdata = blaze.Data([(1, 'Alice', 100),
                       (2, 'Bob', -200),
                       (1, 'Charlie', 300),
                       (2, 'Denis', 400),
                       (1, 'Edith', -500)], fields=['team', 'name', 'balance'])

In [2]: t1 = blaze.by(testdata.team, size=testdata.team.count())

In [3]: nr = int(testdata.nrows) # or nr = blaze.compute(testdata.nrows)

In [4]: t2 = blaze.transform(t1, new_col=t1.size/nr)

In [5]: t2
Out[5]:
   team  size  new_col
0     1     3      0.6
1     2     2      0.4

The problem is that nr is not an int, is a custom blaze number of elements representation, which blaze knows how to print. If you want to evaluate it and transform it to a type that you can operate on, then you have call int or  compute on it nr = int(testdata.nrows) or nr = compute(testdata.nrows).
In [1]: nr = testdata.nrows

In [2]: nr
Out[2]: 5

In [3]: type(_)
Out[3]: blaze.expr.reductions.nelements

In [36]: blaze.compute(nr)
Out[36]: 5

In [37]: type(_)
Out[37]: int

Fascinating.  I just assumed that nr was an int because it looked like an int and acted like an int.  Maybe clarification of return types in the documentation would help (like numpy)?
Does .shape not take into account missing data?

shape could be multiple dimensions, nrows is roughly shape[0]. sometimes we may have var as one of our dimensions (this comes up with tables whose row count can't be computed from the expression alone) and nrows will actually trigger the computation where as shape[0] will be var.
@groutr can you make a documentation issue about clarifying this? thanks for reporting!

Another idea would be to return the __repr__ of the blaze expression something like
<blaze.expr.reductions.nelements: 5>

The main issue here is blaze needs to know to pass over the data twice: once to compute nr and another to compute the final result involving the computed nr. This has come up a few times. I'll look into fixing it for the next release (0.8.2)


ActionView::Template::Error (Symbol or String expected, nilClass given.)

Greetings, I have come upon a similar issue with similar code as a former closed issue you had before:
module BlogsHelper
	def gravatar_helper user
		image_tag "https://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(user.email)}", width: 60
	end

	class CodeRayify < Redcarpet::Render::HTML
		def block_code(code, language)
			CodeRay.scan(code, language).div
		end
	end

	def markdown(text)
		coderayify = CodeRayify.new(filter_html: true, hard_wrap: true)

		options = {
			fenced_code_blocks: true,
			no_intra_emphasis: true,
			autolink: true,
			lax_html_blocks: true,
		}

		markdown_to_html = Redcarpet::Markdown.new(coderayify, options)
		markdown_to_html.render(text).html_safe
	end

	def blog_status_color blog
		'color: red;' if blog.draft?
	end
end

The difference is my error in the logs say:
ActionView::Template::Error (Symbol or String expected, but NilClass given.):
2017-11-21T19:04:10.635079+00:00 app[web.1]: F, [2017-11-21T19:04:10.635014 #4] FATAL -- : [9091d983-bc39-4f64-b86e-c388e3893072]     4:
2017-11-21T19:04:10.635081+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072]     5:     <%= render partial: 'blogs/admin_actions', locals: {blog: blog} %>
2017-11-21T19:04:10.635082+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072]     6:
2017-11-21T19:04:10.635083+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072]     7:
<%= markdown blog.body %>

2017-11-21T19:04:10.635083+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072]     8:
2017-11-21T19:04:10.635084+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072]     9:

2017-11-21T19:04:10.635166+00:00 app[web.1]: F, [2017-11-21T19:04:10.635106 #4] FATAL -- : [9091d983-bc39-4f64-b86e-c388e3893072]
2017-11-21T19:04:10.635268+00:00 app[web.1]: F, [2017-11-21T19:04:10.635198 #4] FATAL -- : [9091d983-bc39-4f64-b86e-c388e3893072] app/helpers/blogs_helper.rb:8:in `block_code'
2017-11-21T19:04:10.635270+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072] app/helpers/blogs_helper.rb:23:in `render'
2017-11-21T19:04:10.635271+00:00 app[web.1]: [9091d983-bc39-4f64-b86e-c388e3893072] app/helpers/blogs_helper.rb:23:in `markdown'

Any guidance on what is going on here is appreciated.

Hello @ldco2016,
Actually, this is a problem with CodeRay, not with Redcarpet. You didn't provide any Markdown but I guess you didn't specify the language using a fenced code block and language ends up being nil when block_code is called. You should certainly rather define a default language to pass to CodeRay in case you didn't specify it in your Markdown or use the plain-old indented code blocks:
CodeRay.scan(code, language || :text).div

I'm giving this a close ; thanks for reporting anyway !


important: coloring in tabbed code cells is messed up

... in my browser at least.
Here for example: https://coderefinery.org/testing/motivation/#testing-in-a-nutshell
This is what it looks like for me:

yep, problem only with dark theme enabled

It is not a problem in sphinx-tabs upstream: https://sphinx-tabs.readthedocs.io/en/latest/
... so I wonder what we do.  Could it be a sphinx_rtd_theme version issue?  I will investigate some

https://github.com/executablebooks/sphinx-tabs/issues/152
sphinx-tabs 3.3.1 (released 10 days ago) fixes it.  My hypothesis is that the cache action is storing the old version 3.3.0.  Investigating.

Github Pages doesn't seem to be deploying.  I guess we wait some and either rebuild or naturally send some PRs and see if it works.

On Firefox it looks good now using dark theme or light theme, as well as when using default theme.

yes, problem solved now!

Can we close?

Things look good now. We can close.


Add BBS2Leer domain

Website is https://bbs2leer.de although https://bbs2leer.net also works.
Example of a school email<EMAIL_ADDRESS>

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


Cannot assign to read only property of datasource

Hi, it seems deepExtend is failing to assign correctly on my data source. I can't figure out why.
onSaveConfirm(event) {
    console.log(this.source)
    if (window.confirm('Are you sure you want to save?')) {
      event.confirm.resolve(event.newData);
    } else {
      event.confirm.reject();
    }
  }

My data is coming from an apollo query
ngOnInit() {
    this.apollo.watchQuery<QueryResponse>({
      query: skills
    }).subscribe(({data}) => {
      this.source = new LocalDataSource(data.skills)
  });
}

trace
Uncaught (in promise): TypeError: Cannot assign to read only property 'name' of object '[object Object]'
TypeError: Cannot assign to read only property 'name' of object '[object Object]'
    at helpers.js:43
    at Array.forEach (<anonymous>)
    at helpers.js:31
    at Array.forEach (<anonymous>)
    at deepExtend (helpers.js:26)
    at local.data-source.js:58
    at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:391)
    at Object.onInvoke (core.es5.js:3933)
    at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:390)
    at Zone.webpackJsonp../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:141)
    at helpers.js:43
    at Array.forEach (<anonymous>)
    at helpers.js:31
    at Array.forEach (<anonymous>)
    at deepExtend (helpers.js:26)
    at local.data-source.js:58
    at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:391)
    at Object.onInvoke (core.es5.js:3933)
    at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:390)
    at Zone.webpackJsonp../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:141)
    at resolvePromise (zone.js:770)
    at resolvePromise (zone.js:741)
    at zone.js:818
    at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424)
    at Object.onInvokeTask (core.es5.js:3924)
    at ZoneDelegate.webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Zone.webpackJsonp../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:191)
    at drainMicroTaskQueue (zone.js:584)
    at HTMLAnchorElement.ZoneTask.invoke (zone.js:490)
defaultErrorLogger @ core.es5.js:1020
webpackJsonp../node_modules/<EMAIL_ADDRESS>@ core.es5.js:1080
next @ core.es5.js:4562
schedulerFn @ core.es5.js:3635
webpackJsonp../node_modules/rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub @ Subscriber.js:238
webpackJsonp../node_modules/rxjs/Subscriber.js.SafeSubscriber.next @ Subscriber.js:185
webpackJsonp../node_modules/rxjs/Subscriber.js.Subscriber._next @ Subscriber.js:125
webpackJsonp../node_modules/rxjs/Subscriber.js.Subscriber.next @ Subscriber.js:89
webpackJsonp../node_modules/rxjs/Subject.js.Subject.next @ Subject.js:55
webpackJsonp../node_modules/<EMAIL_ADDRESS>@ core.es5.js:3621
webpackJsonp../node_modules/<EMAIL_ADDRESS>@ core.es5.js:3993
onHandleError @ core.es5.js:3954
webpackJsonp../node_modules/zone.js/dist/zone.js.ZoneDelegate.handleError @ zone.js:395
webpackJsonp../node_modules/zone.js/dist/zone.js.Zone.runGuarded @ zone.js:157
_loop_1 @ zone.js:653
api.microtaskDrainDone @ zone.js:662
drainMicroTaskQueue @ zone.js:592
ZoneTask.invoke @ zone.js:490

ah, it seems like "name" is a reserved field. Pain,
https://stackoverflow.com/questions/34644169/cannot-assign-to-read-only-property-typescript-babel

Unfortunately this did not work for me. It was complaining about the readonly property of id in one of my objects so I renamed it to shipmentid, still the exact same error.

I had this same issue, i think it is because apollo add some Symbols type fields to the retrieved data. I solved this issue by mapping all the objects from apollo to a new Object before loading to DataSource.
Create New Object Manually, do not use the following methods Object.assign..., spread syntax.
ngOnInit() {
    this.apollo.watchQuery<QueryResponse>({
      query: skills
    }).subscribe(({data}) => {
      const mapped = data.skills.map(v => {
         const { field1, field2, field3 } = v;
         return { field1, field2, field3 };
      });
      this.source = new LocalDataSource(mapped)
  });
}

I do this only for tables i intend on mutating their data.

this is not working for me


fix reset values on upgrade

Closes https://github.com/dapr/cli/issues/664.
Reference: https://medium.com/@kcatstack/understand-helm-upgrade-flags-reset-values-reuse-values-6e58ac8f127e

@mukundansundar can you advise on the failing test here?

@mukundansundar can you advise on the failing test here?

@yaron2 The Failing test is not related to this PR. I am looking into it and seeing if it can be fixed. The issue is that for the Launch Daemon file location source in the command that is being run for Docker in Mac, the file is not available in the location. That file is needed for further Docker Desktop instal in Mac.

@yaron2 Based on the doc https://medium.com/@kcatstack/understand-helm-upgrade-flags-reset-values-reuse-values-6e58ac8f127e
If RestValues flag is not set, it will not apply the new values in the new chart during upgrade command run. But isn't that what we want?
Additionally, if the command is run with a --set flag in dapr, which is passed onto Helm, it seems that reset-values is automatically true. Which would end up resetting MTLS value to the the default true in the chart.
My question is should Dapr upgrade command emulate what is happening with Helm upgrade command, if so shouldn't reset-values be set to true ?
@artursouza @pkedy Thoughts?

If RestValues flag is not set, it will not apply the new values in the new chart during upgrade command run. But isn't that what we want?

In this PR, the ResetValues flag is set to true, meaning it will applies new values in the chart, which is what we want.

I pushed the missing ReuseValues=true commit.
I tested the following scenarios:

Install without mTLS, without --set
Install without mTLS, with --set

Then did upgrade for both, with and without --set. The original values were kept while changes with --set were updated.

I pushed the missing ReuseValues=true commit.
I tested the following scenarios:

Install without mTLS, without --set
Install without mTLS, with --set
Install with mTLS (default)

Then did upgrade for both, with and without --set. The original values were kept while changes with --set were updated.

@yaron2 with the reuse values change the upgrade e2e is failing on the upgrade step and follow up status check.

I pushed the missing ReuseValues=true commit.
I tested the following scenarios:

Install without mTLS, without --set
Install without mTLS, with --set
Install with mTLS (default)

Then did upgrade for both, with and without --set. The original values were kept while changes with --set were updated.

@yaron2 with the reuse values change the upgrade e2e is failing on the upgrade step and follow up status check.

So I looked into the Helm code to see what it does: the pods will restart even though no values have changed, and indeed the old control plane version will be used and not the one in the target chart. That's misleading.. and in any case the result is not correct.
I returned the ResetValues=true behavior with a --set command to disable mTLS if it wasn't previously used.


Feature request : ProgBarLogger updates one every X batches

Satisfying the feature request for a parameter "every" that spaces out the printing of the epochs in ProgBarLogger.
https://github.com/keras-team/keras/issues/10343

Thanks for the PR.
What's the intended use case for this? Do you have a code snippet?

When working with batch of size 1, printing at every batch makes it hard to read. And time consuming I guess.

When working with batch of size 1, printing at every batch makes it hard to read. And time consuming I guess.

This PR is for introducing intervals in between printing "Epoch N..." messages.
The progbar does not print at every minibatch, it prints at most every 50ms. We could make it slower though. See: https://github.com/Wheelspawn/keras/blob/8149e26605bdad969dd52d3f03706d3751a915b8/keras/utils/generic_utils.py#L300

Quote by LeCun

This is highly debatable. There have recent successes in training state-of-the-art networks in record times by using very large batch sizes.

This PR is for introducing intervals in between printing "Epoch N..." messages.

Just checked the commits, indeed it is not the feature I thought about.
Then would it be possible to change Progbar.interval from the __init__ ? https://github.com/keras-team/keras/blob/52e3f9835c1a25a8b895773f64524e27a5ae10c0/keras/utils/generic_utils.py#L300
We can't even temper with the attributes from outside of the class, because the progbar is instanciated at every epoch start.
https://github.com/keras-team/keras/pull/10344/files#diff-ca6be3eb60c04bc5fcd73355b7f99d0dR308

@GuillaumeDesforges you can instantiate your own progbar and pass it to your model as a callback (with verbose=0 so you don't get the base progbar).
If there is an argument that a different value than 0.05 for the print interval would be preferable, then we can make this change. I think adding the ability to customize it would be too much API surface.
Closing PR since I don't believe this implements what it intends to do. Please open a PR to change interval default value (and add a fact-based argument as to why the new value preferable).


How to debug a custom resolver? All logs and errors are swallowed

I'm trying to write a custom resolver, and when I run eslint ., it seems to hide any console.log coming from my resolver, and it quietly swallows any errors thrown by it. So all I can see is "Unable to resolve path to module..." errors.
How am I supposed to debug my resolver?

@callumlocke Check out this PR: https://github.com/benmosher/eslint-plugin-import/pull/599 it will print stack traces for actual errors so you can track them down.

The plugin itself uses debug:
const log = require('debug')('eslint-plugin-import:resolver:node');

exports.interfaceVersion = 2;
exports.resolve = function (source, file, config) {
  log('Resolving:', source, 'from:', file);
  //...
}

https://github.com/benmosher/eslint-plugin-import/blob/master/resolvers/node/index.js
But for me console.log works just fine.
I've landed on this issue because I couldn't see console.log, but then I realised this was because my eslint config was incorrect (I've copied/pasted the settings block into the existing settings block).
I think this issue can be closed.


Update tutorial in docs

Coverage decreased (-0.61%) to 35.88% when pulling a2654b3c7f35a54037974bf4ff1a20edc753dcb6 on AlexMathew:docs into 16d9d79ea77228a6579444a6ce4ea469a6a02179 on scrappleapp:master.


Change value dynamically after the initial render

Can I change value dynamically after the initial render i.e. not using the initial property.
I need to change value of switch selector depending on the state.
I tried setting value property to a state variable but it doesn't work. Any ideas?

Second this. Component won't dynamically update when state value changes.
Only way I could get it to update was to force a re-render via Component key change, but this is not a good solution.

You can do this with ref:
const switchRef = useRef(null);
<SwitchSelector
                ref={switchRef}
                initial={0}
                options={[
                  { label: '+', value: 1 },
                  { label: '-', value: 0 },
                ]}
              />

switchRef.current?.toggleItem(0);

It's working for me. Thanks!

Thanks @allandiego,I hadn't thought of using ref to change switch!

I wish that I was better at gitHub!   I would propose that this solution, which worked perfectly is in the documentation!  Can anyone update this?


Docs: Sentry is not open source any more

Sentry is still referenced as Open Source in the error handling documentation. The new license (Business Source License) is not an open source license (1, 2).

On Tue, Sep 15, 2020 at 09:20:27AM -0700, David Lord wrote:

Merged #3758 into master.

Thanks, appreciated!


(FACT-1339) Prevents OpenBSD swap warnings

Addressing https://tickets.puppetlabs.com/browse/FACT-1339
Fixes swap fact on swap-less OpenBSD.

Now regarding unit tests, I might need help.
I can see where it fails ('memory facts on OpenBSD ...'), which is definitely my doing.
Something around line 176, in spec/unit/memory_spec.rb
Not sure to understand how redirecting stderr could be related to these errors.

Line 182 of that test file has an expectation that Facter::Execution.exec('swapctl -s') is called. This matches parameters exactly, so you need to update that to include the stderr redirection that you added. The other failing expectations are almost certainly because it bails early as soon as it gets a call with unexpected parameters.
Could you also please update your commit message to include the ticket number? See the example commit message in contributing.md

Indeed, thanks.

:+1: on the test change, looks fine to me.
Would you mind squashing these commits down to one? Having a commit with broken tests makes git bisect super hard to use.
Once it's squashed I'll hit the big green button.

 It looks like this PR needs to be rebased and then the commits need to be squashed so we just have one or two (all with correctly formatted commit messages).
Do you need some help or guidance on how to do this?

@faust64 Thanks again for the contribution.  I am closing this PR in favor of #1287, which contains your fix, just squashed and rebased.

Sorry I missed the last reply.
Indeed, I'm not familiar with the squashing process. I though I had it fixed... Thanks for your follow-up!


Animation bar + tilemap bar bug

Godot version
3.3.2
System information
Windows 10, gles3, intel core 2 duo cpu 2.13ghz, 4gb ram, x64
Issue description
First i click to animation player node then tilemap node. And this bug happened. Godot slided to right. So i cant use things like transform, modulate etc. in editor now.

Steps to reproduce
Pls fix the "scaling gray things" or something else i really dont know how godot works behind the scenes i just want to make my game.
Minimal reproduction project
For some reason i cant send files in android so i drop a link to here
https://drive.google.com/file/d/1avFdyFH1PJkBs0UpQu3jWRZAInB_72rb/view?usp=drivesdk

Happens because with AnimationPlayer's and TileMap's items active in the toolbar the total min width for the editor controls exceeds screen width. In action on 1280x1024 monitor:

As a workaround in Editor Settings you can change Display Scale to some smaller value:

Wow thanks for quick answer this solved my problem

Also thanks pybouch for tags
(i dont know how can i use tags lol)

So its time to close this repo

Let's not close it just yet, we can look into what makes the animation editor too wide. We generally should support 800 pixels wide screens with normal scale.

Hmm yes you are right

Also 0.9 display scale ia really annoying

Duplicate of #31133.

Also 0.9 display scale ia really annoying

Try decreasing the main font size to 12 instead.

Its still same

So its still an issue and not solved

Also why i cant reopen the issue? Lol

https://photos.app.goo.gl/CpFs6z5H9D1gRZmB9

This is a duplicate of another issue, which is open. We don't keep duplicates open as one issue is enough to keep track of a given problem.

Which one is it?

Can you leave a link here?

Can you leave it's link here?

It's https://github.com/godotengine/godot/issues/31133.
Also, please use the Edit button (hidden behind the … button next to your posts) instead of multi-posting.


[ANNOUNCEMENT] Old Bugs, New Bugs

If you have opened an issue in the last couple of years, you may notice that it was either closed or commented on. This is not because I have not been working on the program. Rather, so much has changed that these old issues may just no longer be valid or replaced with new issues. The entire codebase has been ripped apart and reassembled multiple times since the last stable release.
Given this discrepancy, please consider testing with the latest version of the rolling build and report any new issues that arise based on your use-cases.

I am basically the only person who develops and maintains this code, so with my focus being on the structure, modernization, and integration with some of my other projects, it has led to a lot of things looking abandoned. I apologize for anyone who feels their feedback was not heard or taken, I assure you that this is not the case.


Real Time Compile and Error reporting not working

Issue Type: Bug
It seems that since I have introduced solution files (.sln) into my projects, the red squiggles that show errors as you're coding has stopped altogether.  I have multiple projects in which this is occurring.  It had been working, but seems to have stopped since I put existing projects in solutions.  I had created an ASP.NET Core Web API project and wanted to add a Unit Test project to it - thus the need for a solution file.  However, that seems to be when this issue started.  I have not yet tried uninstalling and reinstalling Visual Studio Code because I wanted to report the issue and have it be replicated so that a fix can be made.
VS Code version: Code 1.27.2 (f46c4c469d6e6d8c46f268d1553c5dc4b475840f, 2018-09-12T16:17:45.060Z)
OS version: Windows_NT x64 10.0.15063

System Info

Item
Value

CPUs
Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz (2 x 2600)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: disabled_offnative_gpu_memory_buffers: disabled_softwarerasterization: unavailable_softwarevideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
8.00GB (3.99GB free)

Process Argv
C:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\Code.exe

Screen Reader
no

VM
100%

Extensions (2)

Extension
Author (truncated)
Version

vscode-nuget-package-manager
jmr
1.1.6

csharp
ms-
1.16.1

Additional details - in the Problems window, I can see the errors and when I double click on them, it opens the same file in a new editor tab (now the same file is opened twice) and shows the red underline under the code in question.

@motor75 In the Problems panel, what's listed as the source of the errors? The csharp extension?

@RMacfarlane  - I restarted VS Code and all is working now...but eventually this will start happening again and I'll let you know....but when it was happening earlier (from my previous post), it showed the same file as the source separately - as if it was seeing two copies of it when only one exists.  Very strange.  I thought maybe I have some circular logic in the solution file or in my unit test project file - but this is not the case.  I have two projects; the solution has each of them only once and the unit test project references the web api project only once.

@RMacfarlane - it took a day but I'm back to nothing showing compile errors.  See attached screen shot...

Here's my Problems window....no problems showing...

Also it seems debugging via XUnit no longer works in this state...

There is this error in the Log window which is most likely the reason that this is occurring...and I see a bunch of these in the last 3 or 4 minutes in the same window (they're all the same error repeated over and over):
[2018-10-04 11:27:12.412] [renderer1] [error] Pending request cancelled: /codecheck: Error: Pending request cancelled: /codecheck
at RequestQueue.cancelRequest (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\requestQueue.js:45:29)
at RequestQueueCollection.cancelRequest (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\requestQueue.js:115:15)
at token.onCancellationRequested (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:394:40)
at e.fire (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:99:917)
at e.cancel (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:106:130)
at e.cancel (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:106:854)
at DiagnosticsProvider._validateProject (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\features\diagnosticsProvider.js:188:37)
at DiagnosticsProvider._onDocumentAddOrChange (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\features\diagnosticsProvider.js:137:18)
at DiagnosticsProvider._onDidChangeActiveTextEditor (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\features\diagnosticsProvider.js:131:18)
at DiagnosticsProvider.vscode.window.onDidChangeActiveTextEditor.event (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\features\diagnosticsProvider.js:112:74)
at e.fire (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:99:937)
at c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:786:954
at e.fire (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:99:917)
at e.$acceptDocumentsAndEditorsDelta (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:785:159)
at e._doInvokeHandler (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:681:309)
at e._invokeHandler (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:681:27)
at e._receiveRequest (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:679:802)
at e._receiveOneMessage (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:678:993)
at c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:677:791
at c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:98:597
at e.fire (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:99:917)
at a (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:164:787)
at Socket._socketDataListener (c:\Users\moserk\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\workbench\node\extensionHostProcess.js:164:1006)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at Pipe.onread (net.js:594:20)

It appears that this all started with this error (which is different from what I put in my previous post):
[2018-10-04 11:19:06.920] [renderer1] [error] This socket is closed: Error: This socket is closed
at Socket._writeGeneric (net.js:726:18)
at Socket._write (net.js:786:8)
at doWrite (_stream_writable.js:387:12)
at writeOrBuffer (_stream_writable.js:373:5)
at Socket.Writable.write (_stream_writable.js:290:11)
at Socket.write (net.js:704:40)
at OmniSharpServer._makeRequest (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:507:35)
at RequestQueue.OmniSharpServer._requestQueue.requestQueue_1.RequestQueueCollection.request [as _makeRequest] (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:92:109)
at RequestQueue.processPending (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\requestQueue.js:73:29)
at RequestQueueCollection.drain (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\requestQueue.js:137:33)
at RequestQueueCollection.enqueue (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\requestQueue.js:107:14)
at Promise (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:390:36)
at new Promise ()
at OmniSharpServer. (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:382:27)
at Generator.next ()
at C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:11:71
at new Promise ()
at __awaiter (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:7:12)
at OmniSharpServer.makeRequest (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\server.js:376:16)
at Object. (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\utils.js:174:23)
at Generator.next ()
at C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\utils.js:11:71
at new Promise ()
at __awaiter (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\utils.js:7:12)
at Object.debugTestStop (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\omnisharp\utils.js:173:12)
at DebugEventListener.onDebuggingStopped (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\features\dotnetTest.js:429:21)
at Socket.socket.on (C:\Users\moserk.vscode\extensions\ms-vscode.csharp-1.16.1\out\src\features\dotnetTest.js:364:34)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at Pipe.onread (net.js:594:20)

@motor75 Since the issues seems to be the behavior of the C# extension and not VSCode itself, I moved it over to the extension repo

Awesome; thanks for your help.


Configure Spark by default not to be noisy

Spark by default spits out a lot of INFO messages. I rarely find them helpful. I wonder if the typical person does.
I think Flintrock should configure Spark by default not to spit out these messages. This can be done by setting the root logging level to WARN via a Flintrock template.

I'll work on this once #122 gets merged.

@nchammas Should we make the log level customizable?
Because, for example, in spark.ml's cross validator the best parameters are logged at info level.

Hmm, after thinking about this for a bit, I wonder if it's worth adding a new option just for logging level. And if INFO logging is sometimes useful, then perhaps we should just leave things as-is.

Fine by me.