Caffeine JCache

[x] switch to Caffeine JCache
[x] provides feature jcache instead of cache (also updated ehcache), so that JCache-based modules can depend on it
[ ] be consistent with ehcache: do not depent on "simple" cache and provide a specific configuration class (or depend on a new jcache module as it was done in the past but too heavy)

This PR makes the caffeine module compatible with PR #4269.
If we don't want that, we could also say that Caffeine is not an option for Hibernate 2nd-level caching.

fullapp fails because of a conflict: caffeine and ehcache shouldn't be enabled together
may I update the fullapp test to choose ehcache instead of caffeine?

@pblanchardie : yes just choose ehcache and use caffeine in other build

I disagree, we should be able to use caffeine and ehcache together, this is a perfectly logic and valid setup!

In this case, we need to improve the support to not impact each option:

the one who maintains ehcache, shouldn't care about the one who maintains caffeine

Otherwise, it should be a merged option: ehcache + caffeine

The current integration have no impact between the 2 caches :-)

I agree it can be a valid setup to have both (weird scenario, isn't it?), but the current cache approach does not permit it.
If you prefer that we allow multiple cache implementations rather than restricting to one, the user must selects the one used by Hibernate as the second level cache. A property will also be needed to tell Spring which one to use.

The current integration have no impact between the 2 caches :-)

If we switch Caffeine to JCache, it breaks.
If we keep the current implementation, it silently fails: there is a conflict on the configuration (which one overwrites the other? looks random) so it looks like it works, but in fact they are exclusive. And caffeine cannot be used as Hibernate 2nd level cache.
So anyway, we have to either make them exclusive or allow multiple options by modifying destinations, amongst other non trivial modifications.

For me a valid scenario is to use ehcache as shared cache and caffeine as local cache. Also, I personally don't want to use hibernate level 2 cache so I don't want it to be enabled just because I add a cache support.
I'dd prefer to allow to have both caches but, if this turns out to be painfull to do, we must put all caches in a cache feature so they are exclusive in the landscape.
What I don't get is that you say caffeine is not supported as hibernate second level cache so I don't really get the point here... Hibernate second level cache activation should be a dedicated module (I personally really don't want that, too much side effects and, when working on a business centric application I don't need it)

For me a valid scenario is to use ehcache as shared cache and caffeine as local cache.

Got it. So you use both with Spring and need a MultipleCacheManagerConfig (see baeldung sample)? User would choose which cache manager is the default one (@Primary) during generation? A bit heavy.

Also, I personally don't want to use hibernate level 2 cache so I don't want it to be enabled just because I add a cache support.

As long as hibernate-jcache is not in the classpath, it won't be enabled.
To be explicit, we could add the hibernate.cache.use_second_level_cache property and set it to false (revert #4163).
Then #4269 would set it to true, as I suggested in reply to Pascal.

I'dd prefer to allow to have both caches but, if this turns out to be painfull to do, we must put all caches in a cache feature so they are exclusive in the landscape.

I was making them exclusive with the jcache (and cache) feature because at first sight it will be painful and there is a risk on UX, with too many options if we add other implementations (infinispan, etc.).
IMHO, there are tons of edge cases we may want to support, but I'm not sure this one will be useful - if one wants to configure multiple cache managers, I guess he will manage that without the help of JHipster.

What I don't get is that you say caffeine is not supported as hibernate second level cache so I don't really get the point here...

Hibernate supports JCache, so this PR is about using the JCache abstraction layer with Caffeine so Hibernate can use it as a second-level cache.
Other option is to have 2 modules: caffeine and caffeine-jcache. One providing jcache, the other not...
Last option is to keep Caffeine as-is, not an option for Hib2ndLevCach.

Hibernate second level cache activation should be a dedicated module

Absolutely, that's the idea behind #4269

(I personally really don't want that, too much side effects and, when working on a business centric application I don't need it)

Recommending not to rely on Hibernate second-level caching in business centric (espacialy hexagonal) applications is another debate and I get the point, but still, it's a widespread, robust and very performant feature that we shouldn't "forget".

closing this as this PR was opened for too long
we can open a ticket and discuss if needed


Can't run python demo on raspberry pi 3 model B

Expected behavior
Python demo on Raspberry pi 3 Model B should run as in demo video.
Actual behavior
Upon trying to run python demo on Raspberry pi 3 Model B, am getting this error:
python demo/python/porcupine_demo.py --keyword_file_paths ./resources/keyword_files/blueberry_raspberry-pi.ppn --library_path ./lib/raspberry-pi/cortex-a53/libpv_porcupine.so
listening for:
- blueberry (sensitivity: 0.500000)
Traceback (most recent call last):
  File "demo/python/porcupine_demo.py", line 222, in <module>
    input_device_index=args.input_audio_device_index).run()
  File "demo/python/porcupine_demo.py", line 100, in run
    sensitivities=self._sensitivities)
  File "demo/python/../../binding/python/porcupine.py", line 88, in __init__
    raise IOError("Could not find keyword file at '%s'" % x)
IOError: Could not find keyword file at './resources/keyword_files/blueberry_raspberry-pi.ppn'

Steps to reproduce the behavior

cd into Porcupine directory
run python demo/python/porcupine_demo.py --keyword_file_paths /resources/keyword_files/blueberry_raspberry-pi.ppn --library_path ./lib/raspberry-pi/cortex-a53/libpv_porcupine.so

Tried using cortex-a7 and arm11 instead just in case, and for each, also tried the ibpv_porcupine.a files. Got the same errors for all of the .so files, and got the following output for the .a files:

listening for:
- blueberry (sensitivity: 0.500000)
Traceback (most recent call last):
  File "demo/python/porcupine_demo.py", line 222, in <module>
    input_device_index=args.input_audio_device_index).run()
  File "demo/python/porcupine_demo.py", line 100, in run
    sensitivities=self._sensitivities)
  File "demo/python/../../binding/python/porcupine.py", line 69, in __init__
    library = cdll.LoadLibrary(library_path)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 440, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: ./lib/raspberry-pi/cortex-a53/libpv_porcupine.a: invalid ELF header

you have a typo. Change blueberry_raspberry-pi.ppn to blueberry_raspberrypi.ppn
there is no "-" in file name.

Hi, I had tried with blueberry_raspberrypi.ppn as well, but receive the same errors:

 python demo/python/porcupine_demo.py --keyword_file_paths /resources/keyword_files/blueberry_raspberrypi.ppn --library_path ./lib/raspberry-pi/cortex-a53/libpv_porcupine.so
listening for:
- blueberry (sensitivity: 0.500000)
Traceback (most recent call last):
  File "demo/python/porcupine_demo.py", line 222, in <module>
    input_device_index=args.input_audio_device_index).run()
  File "demo/python/porcupine_demo.py", line 100, in run
    sensitivities=self._sensitivities)
  File "demo/python/../../binding/python/porcupine.py", line 88, in __init__
    raise IOError("Could not find keyword file at '%s'" % x)
IOError: Could not find keyword file at '/resources/keyword_files/blueberry_raspberrypi.ppn'

```

Which mic did you find to use?  Not finding a good obvious answer - most appear to be locked at 41kHz. Thanks!

use can set in alsa that the mic should use 16khz no matter what mic it is

Thanks!  I actually was able use the more flexible software sink.  It took care of it.  I wrote up documentation on how to get started on raspberry PI here:
https://bloggerbrothers.com/2019/02/20/hot-wording-on-a-raspberry-pi-computer-do-my-bidding/
In case you have others trying to get started on raspberry pi 3.


documentation: add configuration option cris.layout.thumbnail.maxsize

The current DSC documentation PDF does not describe the configuration option cris.layout.thumbnail.maxsize. This option has a (rather low) default value of 250 kB. It should included in the PDF documentation of the next DSC release.

Sorry, this issue is DSC spefic and has to be moved to the DSC Github project.

moved to https://github.com/4Science/DSpace/issues/438


isEmpty will be invalid for Set and Map

Bug description
Object.keys is invalid for Set and Map, If a Set object add a value, then use Object.keys will get a empty array, the same to Map.

also this works on functions, which... is that the right way to do things?
isEmpty(() => null) // true

Maybe we should go with a mini library? Check if it's a primitive and if so return true, otherwise proceed onto tests for iterator, length, and then keys?

maybe this repo should contain other specific type check util methods like isMap、isSet and etc.
Then we can ensure val as Map/Set type by invoking (isMap || isSet) methods and check if its size property equal to zero without increasing time complexity.

@haoliangwu we decided against that a long time ago because we want each snippet to be able to be used on their own. This is why this one is kind of monster

I keep forgetting to do this... After a long day at work I often just boot up a game now...

@Chalarangelo after checking the current state I'm going to close this. As it notes it checks for keys length or object property length it should be obvious this would not work on something this is defined empty by a size property. While some may not understand it, it means they aren't looking closely enough at the Map and Set types. Why Map and Set don't have lengths is beyond me... Either add a size to Arrays or keep it consistent TC39...

The current description is still

Returns true if the a value is an empty object, collection, map or set, has no enumerable properties or is any type that is not considered a collection.

The original reason Map and Set use size instead of length is for backwards compatibility, with old libraries that check for length

good catch. Will open PR

Opened PR to update language and remove Map and Set tests


how to show the remote mouse cursor

I used freerdp 1.1.0 on my android device.
now ,i want my client app can show the remote(rdp server) mouse cursor.what should i do?
could you give me some suggestion?
look forward to your reply.

Please ask questions in IRC or on the mailing list.

sorry sir.could you give me some suggestion about this issue?or Rreerdp-- v1.1.0,not support this feature?

@akallabeth
look forward to your reply .

i have already send the question to mailing list , but no feedback . so could you help me ? i can't see any other way round it... @akallabeth


CI - Update fluvio.io when Hub package docs updated

Related: https://github.com/infinyon/fluvio-website/issues/575

[ ] Add labels to PRs when docs are changed
[ ] Create new workflow to update fluvio-website

workflow was created, closing this issue


dim-bots not compressing all PRs

Please ensure:

[X] The bug is caused by Refined GitHub. It doesn't happen if I disable the extension.

Description
The bot PRs are correctly detected and one of them is even compressed, but most of them aren't
Screenshot

Console errors
No response
Example URL
https://github.com/mozilla/dispensary/pulls
Browser(s) used
safari

Looks like a regression in #4383


Multiple change events

I recently updated from 0.13 to 0.14 and noticed this behavior.
watchit.js:
require("watch").createMonitor(".", { interval: 500 }, function(monitor) {
	monitor.on("changed", function(fileName) { console.log(fileName) })
})

Using it:
$ node watchit &
[1] 1259
$ touch watchit.js
watchit.js
watchit.js

I'm using node 0.11.14 on Linux Mint.

I'm noticing a similar behavior. It seems to always generate 2 change events, with identical prev and next stat objects between them

I was having this issue too, hopefully this does the fix: #71

I am still seeing this behavior, using version 0.16.0 on a Mac Pro OS X 10.9.5.

#71 has fixed the issue for me

Still happens in 0.16.0 on Windows 7

And happens in 0.16.0 on OS X for me as well.

This may be related to https://github.com/nodejs/node/issues/3042


Flutter does not receive key up events when cmd key is pressed (macOS)

This has the effect of "sticking" keys in RawKeyboard.instance.keysPressed, which in turn causes the Shortcuts widget to fail.
After a bit of research, it might be worthwhile to send events directly from the NSApplication to the engine. Looks like everything passes through - sendEvent before it is interpreted and delegated to the various the NSResponder methods.
Related to #36001

cc @stuartmorgan

Any thoughts on approach Stuart? I had the thought that subclassing NSApplication might make integration into existing projects more difficult, but that could be outweighed by the value of dealing with the raw event stream.
Also, is the preference to do this work in Objective-C?

Any thoughts on approach Stuart?

No, I haven't spent any time investigating this issue. Labelling an issue isn't an indication that I've spent time investigating it.

Also, is the preference to do this work in Objective-C?

Well, "this work" hasn't been clearly defined; the answer to that question depends on whether the work in in the framework or the template.

And commenting on an issue isn't an indication that I need an answer right away.
I just thought I could help. I'll leave it to you.

Just a quick update here. We managed to get around this with my suggestion above. I'm not sure if it's the best way to go about it, but might be useful when you choose to implement.
@objc(MyApplication)
class MyApplication : NSApplication {
  override func sendEvent(_ event: NSEvent) {
    if event.type == .keyUp && event.modifierFlags.intersection(.command).rawValue != 0 {
      self.keyWindow?.sendEvent(event)
    } else {
      super.sendEvent(event)
    }
  }
}

Before going down this path, we first tried hooking into ExampleWindow's sendEvent (which seems less intrusive), but the keyUp never arrives.

I'm experiencing a similar issue of "sticky" keys in RawKeyboard.instance.keysPressed
when I have a key down for shift+X but then let go of the shift before releasing x i'll have a stick X which never disappears and hence the Shortcuts widget & co won't work at all.
Should I open a separate issue for this? Imho the sticky key problem seems very related, especially i'm not sure how this could work in a desktop environment where it's not unusual to switch apps or otherwise lose focus before receiving a matching keyup event?
    RawKeyboard.instance.addListener(_debugEvent);

  void _debugEvent(RawKeyEvent ev) {
    final keys = RawKeyboard.instance.keysPressed.map((k) => '${k.keyId} (${k.keyLabel})');
    _logger.fine('Got key event. $keys');
  }

Got key event. (65 (A))           //// keep shift + A pressed
Got key event. (65 (A))
Got key event. (65 (A), 97 (a))   /// released shift
Got key event. (65 (A), 97 (a))
Got key event. (65 (A))           /// released A

Hi @hpoul,
This narrows down some problems we've been seeing, so thanks. That said, definitely a separate issue.

/cc @franciscojma86
This is a result of macOS engine not monitoring the flagsChanged message.  We'll need to keep track of the modifier state and send additional key events when modifiers are pressed and released, similar to this example for CapsLock: https://developer.apple.com/library/archive/qa/qa1519/_index.html

Landed, @shyndman LMK if you see any issues, thanks for filing!


Does it currently support distributed multi card training ？

Will it be supported in the future ？ current single card training cost too much time

How do I run models on multiple GPUs?

@nakatomo8899 I wrote my own Distributed Data Parallel (DDP) pipeline for this. I used a combination of Lei Maos cookbook, PyTorch's tutorial, and well documented repos such as Swin in order to do this.


No checkbox at welcome screen

I've noticed that when I switch to translated layout, check box at welcome screen is missing. Check box is used to disable welcome screen on startup. Screen attached.

Hello @nolt, this is a bug of atom-i18n.
To manually disable the welcome screen for all languages, append:
welcome:
    showOnStartup: false
...to ~/.atom/config.cson.

Yes I know, but still it's a manual resolve. Someone who will run Atom first time can disable it on default translation so bug is not visible anymore but still exist.

Hello @nolt, I agree: I do not like manual solutions in GUI apps, too.
Since @liuderchi inserted the 'help wanted' tag I've just written and submitted a little patch (patch #158) to resolve the bug. ;-)

Hi @LorenzoAncora thanks for the quick fix :)

@nolt @LorenzoAncora Thanks for your great help. 💯
Will release a patch for bug fixes recently.

@nolt merging was a bit cumbersome due to the various GitHub branches, but now the bugfix has been inserted directly into the main branch. Wait for the update (recommended) or clone the sources.
If you find other problems do not hesitate to report them.
@nolt @liuderchi see you next time. :-)


Issue 17

This is just a working proposal for #17. I believe the code could be better (I'm not a NodeJS developer) so feel free to improve it or use it as inspiration.

It helps me a lot!
I will take care of it soon.

I also implemented it locally, so I compare local with this and merge it.
please wait a little.


Factory detector factory

@swenger

How about dependency injection?

Nice work, but let's be careful about submitting such fundamental code without a proper preceding (and documented!) design process. A few hours of writing design docs now could save us many minutes of refactoring in the future.

Thanks for documenting the design process here. It will be so extensible that no one will never be able to refactor it ever again


Feature request for better automatic handling of file-relative #include

It is not uncommon for #include directives to use paths relative to the current file. However, as glsllint provides input source code to glslangValidator via stdin and sets cwd to vscode.workspace.rootPath, file-relative includes do not work.
It is possible to work around the issue by using project-specific glsllint.glslangValidatorArgs with -I<rootPath-relative-directory> flag, however this does not work in larger projects with multiple directories that may contain shader files.
It would be very welcome if #include "<relative-path>" worked out-of-the-box with this extension. Perhaps as an opt-in via settings, off by default.

Good thing. What do you think about enabling the current path of the file to lint as an include path. Maybe as an opt-in setting?

Adding the current file path to include path list will likely do the trick, though I don't know how exactly glslangValidator searches for includes. Worth a try.

I will try to implement it will it be possible to attach some example shader files with includes?

Sure. Trivial example: https://gist.github.com/kayru/f619234dc40fedb077f2f60730961c48

Next version (0.0.13) will have 2 new options, both are enabled by default:

glsllint.linkShader: Link all input files together to form a single module ('-l' option for glslangValidator, used for includes)
glsllint.useIncludeDirOfFile: Add -I[DIR_OF_FILE] to the glslangValidator command


Query filter for component value rather than component existence

What problem does this solve or what need does it fill?
I'm working on a game that uses a lot of different 'status effects'. These status effects are presently implemented on each character as an inserted/removed component, but I am interested in exploring these with always-inserted bool fields instead (akin to Visibility). The main issue I have is that I won't be able to filter out entities as easily as I can presently (like finding all poisoned entities by using With<Poisoned>).
What solution would you like?
UPDATE: Working proof of concept: https://crates.io/crates/bevy_mod_check_filter
A Query Filter pair akin to With/Without, that instead of checking for component existence, checks for component value. Given we don't have full const generics yet, this should probably be limited to true/false for simplicity. Alternatively, the current value could be compared to the Default value.
The name for these filters? Unsure. Maybe Truthy/Falsey or Enabled/Disabled?
Illustration
Today:
#[derive(Component)]
struct Poisoned;
fn all_poisoned(entities: Query<&Name, With<Poisoned>>) {
    // ...
}

New query filter (see how we don't lose the ergonomics of marker components?):
#[derive(Component)]
struct Poisoned(bool);
// We will need some machinery like Deref or Into to extract the current value, but I'll leave that for discussion.
fn all_poisoned(entities: Query<&Name, Enabled<Poisoned>>) {
}

What alternative(s) have you considered?
Filtering the way that the Visibility struct does presently. It's not the best ergonomics, though.
Additional context
Related to the discussion found in #3796.

This is a special case of https://github.com/bevyengine/bevy/issues/4513 with nice syntax. https://github.com/rust-lang/rfcs/pull/2593 or similar would allow us to encode this information directly in the type system, but doesn't seem likely to ever land in Rust.
We may be able to use const generics to avoid special-casing true/false style enums and create a special Variant query filter.

This is a special case of #4513 with nice syntax.

Ah, I hadn't considered indexes as an alternative! Regardless, I think the idea proposed here is worth looking into as a stopgap, given it likely requires much less work.

We may be able to use const generics to avoid special-casing true/false style enums and create a special Variant query filter.

I put together a rough sketch of what this could look like:
// Query Filter
pub struct Equals<C: Component, Pred: PartialEq<C> + Default> {
    _c: PhantomData<*const C>,
    _pred: PhantomData<*const Pred>,
}

unsafe impl<C: Component, Pred: PartialEq<C> + Default> WorldQuery for Equals<C, Pred> {
    // All the icky internals that I don't know how to write :(
}

// Const-generics predicate for the query filter
#[derive(Default)]
pub struct Is<const VALUE: bool>;

impl<C, const VALUE: bool> PartialEq<C> for Is<VALUE>
where
    C: Component + Deref<Target = bool>,
{
    fn eq(&self, other: &C) -> bool {
        VALUE == **other
    }
}

// User Component
#[derive(Component, Deref)]
pub struct Poisoned(bool);

// We could reduce the type system word salad with some aliases:
pub type True = Is<true>;
pub type False = Is<false>;

// Example in a query
pub fn all_poisoned(entities: Query<&Name, Equals<Poisoned, Is<true>>>) {
    // ...
 So far at least. 🙂

Before we get const generics for everything, this could still work for 'simple' enums.
For example member-less enums can have their discriminant's compared without much fanfare (https://doc.rust-lang.org/stable/std/mem/fn.discriminant.html is const-stable since 1.75!)
Another option is to use hashing to turn a const value into an integer, and then use that to query/filter stuff.
Since macros have been allowed in type level for some time, this could work! (Even if only as a community crate for now)
So for example Query<&Player, WithValue![Status::Stunned]> would be a possibility. It then expands to Query<&Player, WithValue<V = { const_hash(Status::Stunned) }>. Where const_hash is some form of constant hashing (either https://github.com/rust-lang/rust/issues/104061 gets solved, or one uses something like https://docs.rs/const-fnv1a-hash/latest/const_fnv1a_hash/).
I don't know though if bevy has a good way to query stuff by value internally? Or if one would have to do that ad-hoc. Although I don't know at all actually how Query works under the hood haha


Improve message on collection.get empty embeddings

Problem
I have successfully defined my embedding function, and added documents.
And yet when calling Collection.get(), the default behaviour is to show None for embeddings in the output:
>>> collection.get("doc1")
{'ids': [['doc1']],
 'embeddings': None,  # <---- Why?
 'documents': [['Louis XIV lived for tens of years']],
 'metadatas': [[{'source': 'my_source'}]],
}

Seeing None is rather counter intuitive*, as it gives the impression that embeddings were not computed. They are! But you need to explicitly pass include=["embeddings"] to discover that:
>>> collection.get("doc1", include=["embeddings", "metadatas"])
{'ids': [['doc1']],
 'embeddings': [[0.2352, 2324.... ]],
 'documents': [['Louis XIV lived for tens of years']],
 'metadatas': [[{'source': 'my_source'}]],
}

*Saw a couple of persons having the same issue on Discord
Proposals (additive)

Have Collection.get only show "id" + keys passed through include. Avoid the counter intuitive None!
Have "embeddings" part of the default values for include with a pretty printer, to avoid cluttering the output.

New behaviours:
>>> collection.get("doc1")
{'ids': [['doc1']],
 'embeddings': [[0.2352, 2324.... ]],
 'documents': [['Louis XIV lived for tens of years']],
 'metadatas': [[{'source': 'my_source'}]],
}

>>> collection.get("doc1", include=["documents", "metadatas"])
{'ids': [['doc1']],
 'documents': [['Louis XIV lived for tens of years']],
 'metadatas': [[{'source': 'my_source'}]],
}

Settings
Chroma version: 0.3.21
Python version: 3.8.12

Happy to work on a PR should you find this a good idea.

@arnaudmiribel hi there!
Originally .get and .query did return the embedding itself. However this, as a default, led to very poor performance, especially over the current REST API. The rest api was not chosen for its performance (we will likely switch to ArrowFlight or other down the road), but because it's ease of integration. The serialization of the large arrays led to a huge amount of latency. We prioritized developers have a good getting started experience with chroma being fast to return a query, as most developers don't use the returned embeddings. This is strictly necessary for .query, and we implemented it into .get to be consistent.
We could do a few things

improve the docs
append a notes object in the return that specifies "to get embeddings, please do X" (though this feels messy)
make .get return embeddings by default, even if .query doesnt

I think improving the docs is an obvious thing to do.
Thoughts?

Thanks for reaching out!
I agree that improving the docs is certainly a low hanging fruit! But I still think it is misleading if not wrong to show "embeddings": None, when embeddings were actually computed and not included in the include= parameter.
What about:

(Straightforward) Not show anything about "embeddings" if "embeddings" is not in the "include" keyword.
Have the API return a prettyprinted / lazy version of the embeddings? Not the actual embeddings. Something like "embeddings": Embeddings(shape=[x, y]),. So you can still surface that embeddings were computed, but without compromise on latency.

these are both great ideas! thanks for brainstorming this :)

That's great, finally solved my puzzle, thanks!

Update: added a section on the new troubleshooting page about this - https://docs.trychroma.com/troubleshooting

Options

drop the field entirely if the user does not include it
include the field, but just include some high level metadata about it, eg Embeddings(shape=[x, y])
include the field as None, but also include another key-value something like included_fields: ['distances', 'ids']
include the field with literally a note about how to include it embeddings: "add include=['embeddings'] get to them back too"
....

@tazarov would love your thoughts on this long-outstanding issue as well

return?
"embeddings": "how to include object"

@jeffchuber I like the idea of always including embeddings in the response, but instead of actual embeddings, have a proxy object for lazy-loading. The proxy object is "invisible" to the end user, where each Embedding object will hold the underlying embedding ID to lazy fetch this.
There are two aspects to this; although most users don't realize it when operating with a persistent client it mostly doesn't make a difference, so for SegmentAPI we can always return the embeddings. For HttpClient, things look different, if our embedding proxy is too fine-grained e.g. fetching from the server on a per-vector basis, which can have even worse performance impacts than always returning the vectors in the original query. Therefore, I suggest we use Embeddings to do our proxying so that whenever access to any vector in the set is requested, we fetch the full batch.
Here is a dumbed-down version to illustrate:

class Embedding(List[Union[float, int]]):
    def __init__(self, eid: str, vector: List[Union[float, int]] = None):
        super().__init__(vector if vector else [])
        self._eid:str = eid #this is the embedding id to be lazy loaded

    @property
    def eid(self) -> str:
        return self._eid

class Embeddings(List[Embedding]):
    def __init__(self, fetch: Callable, embeddings: List[Embedding]) -> None:
        super().__init__(embeddings if embeddings else [])
        self._loaded = False if embeddings else True
        self._fetch = fetch

    def _ensure_loaded(self) -> None:
        if not self._loaded:
            self._load()

    def __getitem__(self, index: int) -> Embedding:
        self._ensure_loaded()
        return super().__getitem__(index)

    def __len__(self) -> int:
        self._ensure_loaded()
        return super().__len__()

    def _load(self) -> None:
        #TODO: Implement parallel/paginated fetches
        fetched = self._fetch(ids=[e.eid for e in self])
        self.extend([Embedding(eid, vector) for eid, vector in fetched])
        self._loaded = True

So FastAPI API impl will now return GetResult where:
class GetResult(TypedDict):
    ids: List[ID]
    embeddings: Optional[Embeddings]
    documents: Optional[List[Document]]
    metadatas: Optional[List[Metadata]]

To point out that that I have also looked at the other options, but I feel that returning something that is not the embeddings or proxy thereof is not a great developer experience and will lead to more questions/confusion.
Additionally, if we don't return embeddings at all, it'll mismatch the docs. Following the Python Zen, if it's a duck, it should quack.

The lazy fetch idea is good, lets prototype it

If you include, it should get loaded
If you don't include it, it should get a lazy handle it
getitem or similar on the lazy handle should fetch it based on the cached query

There is some wierdness, what if the data was mutated in between?

Hi, struggled for awhile to figure out what was happening here, until I found this issue.
Indeed, we should at least update the docs temporarily, so as to make it clear what is happening here (I'll do it myself if you want -- where can we edit and PR the docs?)
Regarding @jeffchuber's list of options, I'd vote for:

drop the field entirely if the user does not include it

As always, there's pros and cons for all the solutions proposed, but it does seem to me that:
{
  'ids': ['foo', 'apple'],
  'metadatas': [None, None],
  'documents': ['bar', 'crumble'],
}

communicates what's happening better than
{
  'ids': ['foo', 'apple'],
  'embeddings': None,
  'metadatas': [None, None],
  'documents': ['bar', 'crumble'],
  'uris': None,
  'data': None
}

Here, I asked for metadatas (of which there were none) and documents.
The only not-easily-circumventable cons I can think of are if some users depend on the current "fixed-schema" output (which is currently typed by the chromadb.api.types.GetResult TypedDict, in fact).
Hopefully, I would't be instigating a debate on the pros and cons of schemas/types here, but one could even argue here that setting such a schema will make it harder to evolve what the DB responses are in the future.
Another aspect that might count in our choice here: Is there an existing design (and corresponding lingo) we are following here? This "results always include an id", and several other choices chromadb made are reminiscent of mongodb to me. Mongodb's version of include would then be projection, and has made the choice that "only the fields requested are returned" (+ id, unless explicitly requested NOT TO).
Regarding a lazy loading wrapper: I whole heartedly cheer for that effort to, but I think it is more complex than what is immediately needed here, and is probably needed in more places than just here: Personally, I'd want to have such an object available anytime the lazy-load pattern solutions my problems.

@thorwhalen here is the docs repo :) https://github.com/chroma-core/docs
thanks for thinking this through with us!

@jeffchuber. I see where I can submit a PR now.
Looking there, though, raises a bunch more questions about what your contributing rules (style, structure, content) is.
The CONTRIBUTING.md is essentially empty. Do you hold that information elsewhere?
Here are two images showing the Collections.add method's signature and docs:

So I see the google style is to be used, but here are a few immediate questions I have:

I see only a short description, plus args, returns, and raises sections. A quick scan tells me that most of your method follow a similar structure. Where therefore should I put extra information, such as some clarification of the output's content (our current subject) or doctests (do you even do those?).
I see that docs and function contents are misaligned. The docs don't show the images and the uris argument, which the function has, and documents. Sometimes I do this on purpose, because I don't want to document a feature before giving it time to mature -- but in general, I like to automate things when there's multiple sources of truths.

More on this "multiple sources of truths". In the images shared about we can see four sources of what the arguments are (signature and doc text in both code and md files). This means there's six different misalignment pairs. A scary prospect to me. I prefer to generate the documentation from the code's __doc__ strings, and write some "after the fact" diagnosis scripts where I can't. I don't know what the state-of-the-art is on those tools though (I have the bad habit of just doing it myself, but I wouldn't advise that!).

Also, on a side note. I see that some functions have a lot of arguments. Perhaps we can consider putting some of these as keyword-only. Relying on positional arguments becomes risky when there starts to be a lot of arguments (it makes sense, but you can find some prose about that on the internet, if not convinced.)

@arnaudmiribel, this is what I use to get the include to act more like MongoDBs projection field, which has the meaning of "only give me these fields".
Essentially, it's a transform_methods_to_keep_only_include_keys function that will wrap your collection instance so that the get and query act as I want.
This is not a good long term solution: I do believe that the behaviors discussed above would be better.
For now, I use this to depend on that (hopefully future) behavior instead of the current one.
First, the test, so you can see the behavior I'm talking about:

def test_transform_methods_to_keep_only_include_keys():
    from chromadb import Client
    c = Client().get_or_create_collection('test_inclusion_filter')
    if ids := c.get()['ids']:
        c.delete(ids)

    c.add(ids=['apple', 'banana'], documents=['crumble', 'split'])

    assert c.get() == {
        'ids': ['apple', 'banana'],
        'embeddings': None,
        'metadatas': [None, None],
        'documents': ['crumble', 'split'],
        'uris': None,
        'data': None
    }

    cc = transform_methods_to_keep_only_include_keys(c)

    # Now see that there's only 3 fields (the default include value of Collection.get)
    assert cc.get() == {
        'ids': ['apple', 'banana'],
        'metadatas': [None, None],
        'documents': ['crumble', 'split']
    }

    assert cc.get(include=['uris']) == {
        'ids': ['apple', 'banana'],
        'uris': [None, None]
    }

And now the (complete) code:
from inspect import signature
from functools import wraps

def subdict(d, keys):
    return {k: v for k, v in d.items() if k in keys}

def map_arguments(func, args, kwargs):
    """
    Get a `{argname: argval, ...}` dict from the args and kwargs of a function call.

    >>> map_arguments(lambda x, y, z=42: None, [1], {'y': 2})
    {'x': 1, 'y': 2, 'z': 42}
    """
    b = signature(func).bind(*args, **kwargs)
    b.apply_defaults()
    return b.arguments

def argument_value(argname, func, args, kwargs):
    """
    Extract the argument value from a function call, or the default if not given.

    >>> func = lambda x, y, z=42: None
    >>> argument_value('z', func, [1, 2], {})  # z not given, so use default
    42
    >>> argument_value('z', func, [1, 2], {'z': 4})  # z given, so use that
    4
    """
    kwargs = map_arguments(func, args, kwargs)
    return kwargs[argname]

def keep_only_include_keys(method):
    @wraps(method)
    def _wrapped(*args, **kwargs):
        kwargs = map_arguments(method, args, kwargs)
        include = list(kwargs.get('include', []))
        keep_keys = ['ids'] + include
        return subdict(method(*args, **kwargs), keep_keys)
    return _wrapped

# TODO: The pydantic.BaseModel parent class of Collection forbids me to re-assign methods
#  so I need to wrap the whole Collection
class Delegator:
    """Delegates all attributes to the wrapped object"""
    def __init__(self, wrapped_obj):
        self.wrapped_obj = wrapped_obj
    def __getattr__(self, attr):  # delegation: just forward attributes to wrapped_obj
        return getattr(self.wrapped_obj, attr)

def transform_methods_to_keep_only_include_keys(instance):
    """Wraps all methods that contain an `include` argument so they filter their output accordingly"""
    delegated = Delegator(instance)
    for method_name in dir(instance):
        if not method_name.startswith('_'):
            method = getattr(instance, method_name)
            if callable(method) and 'include' in signature(method).parameters:
                setattr(delegated, method_name, keep_only_include_keys(method))
    return delegated

Made this issue to describe a solution which I believe is good non-disruptive step of @jeffchuber's
drop the field entirely if the user does not include it
solution.
Basically, give Collection.get and Collection.query a filter_include argument to say whether this should be done or not.

Also--have the default be False so that we don't change current behavior, and switch to True when it makes sense.
When the switch is done, the user can still get the old behavior by specifying filter_include=False (could be a config).


Qubit Allocation for Mapped Layer using tket

I just stumbled upon this: tket doesn't perform any kind of full ancilla allocation as Qiskit does when mapping quantum circuits to architectures. As a result, the mapped circuits resulting from tket contain quantum registers with varying size; depending on how the circuit was routed. For example, if the largest qubit index being used in the circuit is 32, then the circuit mapped to the 127-qubit ibm_washington architecture will still only have a qreg node[32]; definition.
While this is not urgent, I found this surprising and believe it would be good to resolve this disparity between the files generated by qiskit and the files generated by tket.

see https://github.com/CQCL/tket/issues/770, https://github.com/CQCL/tket/issues/774, and https://cqcl.github.io/tket/pytket/api/circuit_class.html#pytket.circuit.Circuit.add_blank_wires.


flutter run of layers examples does not work on iOS simulatorss

cd flutter/examples/layers
flutter run raw/text.dart
flutter run raw/canvas.dart

The second flutter run will fail on iOS (simulators) with:
Exit code 3 from: /usr/bin/xcrun simctl launch F896CED0-7CB2-4A10-A8C1-7A0014E24CC5 io.flutter.examples.Layers --enable-dart-profiling --flx=/src/flutter/examples/layers/build/app.flx --dart-main=/src/flutter/examples/layers/raw/canvas.dart --packages=/src/flutter/examples/layers/.packages --enable-checked-mode --observatory-port=8100 --diagnostic-port=8101:
An error was encountered processing the command (domain=FBSOpenApplicationServiceErrorDomain, code=3):
The request to open "io.flutter.examples.Layers" failed.
The process did launch, but has since exited or crashed.
Error launching application on iPhone 6s.

Works fine on Android.  @cbracken @chinmaygarde

My understanding is that it's failing to notice that it should rebuild since the passed in .dart file has changed.

Just to clarify, do you kill the app via q in between the two runs as follows:

flutter run raw/text.dart
q to exit hot reload
flutter run raw/canvas.dart
or are you doing to second run without terminating the first one?

I just tried both ways (using Xcode 9.1 beta on an iOS 11 simulator) and both worked as expected for me.

I had this problem too. But I did not change the source code. In fact it was an empty default application.
The next run was fine.
I have to mention that I have an old MacBook with 4gb ram.

This looks stale. Can we close?


[WIKI TYPO] Typo in "Branding the NuGet Gallery"

Hi,
There is a typo in the "Branding the NuGet Gallery" wiki.
In the Clone The Gallery section in point 3 you are missing a "h" in the URL, the URL is https://gitub.com/NuGet/NuGetGallery.git but should be https://github.com/NuGet/NuGetGallery.git
Cheers

Fixed! Thank you!


[Enhancement] Doc

Request description
We should provide doc consistent with the style of ShardingSphere doc.
Environment

your ShardingSphere-Operator Version
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version

The doc website has been published, https://shardingsphere.apache.org/oncloud/current/en/overview/.


Update JSP for assay run deletion confirmation with message about referenced runs

Rationale
The Previous PR incorporate a javascript confirmation alert for deletion. of assay runs, in keeping with the behavior we have for samples and data class objects, but this alert then missed notifying users about runs linked to studies and possible permission restrictions there.  Here, we revert the change to use the javascript alert and pass through data to the JSP page to communicate to users when assay runs cannot be deleted because of object references.
Related Pull Requests
#3589
Changes

Revert change to delete button action in ExperimentRunListView
Update object referencer interface with a method for providing a description of the references

Assay tests are no passing on this branch: https://teamcity.labkey.org/buildConfiguration/LabkeyTrunk_ModuleSuites_LuminexPostgres/1949705


Wizard advances unexpectedly

Select one ...  (check one with "x")
[X] bug
[ ] feature request
[ ] enhancement

Expected behavior
Wizard should only advance when "Next" button is pressed while using conditional steps
Actual behavior
When navigating around the Wizard, sometimes it will advance when interacting with form controls and not the Wizard navigation.
Reproduction of behavior

Include a link to the reproduction scenario you created by forking one of the Clarity Plunker Templates:

https://plnkr.co/edit/QIFHe8GyHhOWjkffBmKB?p=preview

Open the Wizard
Click the "ADD" button
Click "Next"
Click "Back"
Click "CHANGE" button
Click "ADD" button
Click "CHANGE" button

Observe that:

Wizard advances to page two automatically at this point
Page two should be hidden but is not

It looks like this is caused by Wizard.ngDoCheck calling WizardNavigationService.updateNavigation.  The latter finds the first incomplete page via PageCollectionService.findFirstIncompletePageIndex and sets it to the current page.  Perhaps a race condition because the page isn't removed yet before this check?
Environment details

Angular version: 2.0.X

Clarity version: 0.9.X

OS and version: Windows 7

Browser: Tested in Version 59.0.3071.115 (Official Build) (32-bit)

@syndesis
I can't get your plunkr to work. I think there's an issue with unpkg or something happening there. Can you check and verify?

@mathisscott It is working for me.. You may need to disable your ad blocking add-on for that page if you're using one. I think that happened to me as well.

@syndesis
This issue isn't with the wizard. It's with how the form fields all point to controls[requestOperation] call is being used. It gets called for pretty much every input in the form and interestingly enough it can't get out of its own way in state management.
So using it to set the state on whether pageTwo is visible or not doesn't seem to be viable. I would recommend using/setting a flag keyed off the validation that doesn't require repeated calls to the same property. The problem is that your logic depends on the very last property to be set and if you don't reset them ever you'll get weird truthiness and falsiness.
See the console logs here for a dive into the issue...
https://plnkr.co/edit/iRUxObl6lgf7kVSMM4lE?p=preview

@mathisscott I changed it to use a boolean which is set based on changes in the form and I still see errant behavior.  After going to page two and coming BACK, I can click, for example:
CHANGE -> REMOVE -> ADD
or
CHANGE -> REMOVE -> CHANGE
and it still switches back to page two.   Also, I don't know if this is important, but it won't switch to page two unless I go there and then go back.  Did I misunderstand your recommendation?  Plnkr:
https://plnkr.co/edit/seSAvSrv5e3HotO1tGRY?p=preview

@syndesis
One good thing is that you're no longer firing a half-dozen checks everytime a button is clicked.
I'm having an issue with grasping what you want this thing to do, though.
Add and Remove both cause pageTwo to show. That seems like a logic issue to me. And Change causes pageTwo to hide.
Maybe you can walk me though the intended functionality and that will help assess if there are gaps in the logic of the host component?

@mathisscott Sure, no problem.

I would like Page Two to be visible in the navbar when either ADD or REMOVE are selected (that is not a logic issue in my case) and not visible in the navbar when CHANGE is selected.  This currently works fine before the user goes to Page Two and comes back, but not after.
I would like for the form to advance from Page One to Page Two when the Next button is clicked - not when clicking any of the radio group buttons.

What I'm experiencing instead:

After clicking Back on Page Two, selecting the CHANGE button in a pattern (e.g. CHANGE -> REMOVE -> CHANGE) causes page two to both be visible in the navbar and active when it should be neither.
After clicking Back on Page Two, selecting the ADD button in a pattern (e.g. CHANGE -> REMOVE -> ADD) causes Page Two to be visible in the navbar and active when it should only be visible in the navbar- the user should still be on Page One.

Please let me know if this was not helpful.
Thanks

@syndesis
Thanks for the clarification.
For experience no. 1.
There is some sort of logic issue there. I put a console.log in the forEach. The steps I followed were:

Open Wizard
Click 'Add' to make pageTwo show up.
Click 'Next' to go to pageTwo
Click 'Back' to go back to pageTwo.
Click 'Change' to make pageTwo disappear.
Click 'Remove' to make pageTwo show up again.
Click 'Change' to make pageTwo disappear (but instead pageTwo stays visible and the wizard advances)

Something is wrong with the logic on step 7. Given the console.log I added here, I would expect to see Add, Change, Remove, Change.
But I don't ever see that last "Change". Instead it looks like this...

The call to valueChanges.forEach on pageOneForm is never receiving the last request for change. Once you have that figured out we can see if the advancing wizard is an issue.
For experience 2, I'm seeing the same thing. The last 'Add' is not being fired.
My guess is that you are relying on validation and form values and that the way the value is being checked isn't gelling with radio buttons. You seem to be relying on requestOperation not having a value to prevent the form from being submitted (and potentially advancing the wizard). But the problem is that a radio button group would pass validation whenever any of its radios is selected.
Just my SWAG on it.

@mathisscott
When I add the same debugging line to my real application (outside plunkr) I see the forEach being called every time.
When I add a breakpoint to forms.umd.js line 2725 in the plunkr, I also see the console log every time as well which leads me to believe that my original conjecture about a race condition might be correct.

@mathisscott ok, I think I found the root problem.  I believe the forEach issue you found is just a side effect of the actual problem (the wizard advancing) but that's a difficult one to track down.  I can reproduce a similar issue on your demo page as follows:

Go to https://vmware.github.io/clarity/documentation/wizards
Click the "SKIPPING A PAGE IN THE WIZARD" button (side note: this may open the wrong wizard the first time.. you can close it and click the button again to get the right one)
Click "SHOW PAGE 2"
Click NEXT
Click BACK
Click HIDE PAGE 2
Click SHOW PAGE 2

Observe that you are now on page 3 and page 2 was not shown.  Looking at WizardNavigationService.updateNavigation(), we see:
public updateNavigation(): void {
        let toSetCurrent: WizardPage;
        let currentPageRemoved: boolean;

        this.pageCollection.updateCompletedStates();

        currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;
        toSetCurrent = this.pageCollection.findFirstIncompletePage();
        this.currentPage = toSetCurrent;
}

Notice that currentPageRemoved is set but never used.  I believe we should be doing:
    currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;
    if (currentPageRemoved) {
        toSetCurrent = this.pageCollection.findFirstIncompletePage();
        this.currentPage = toSetCurrent;
    }

This seems to fix my issue but my old OS is making it difficult to run the unit tests.

@syndesis
Wow. I think you're correct there. I'll reopen this as a bug.
Thanks for tracking this down!


Add support for ModifyVolume

All the configuration options that can be changed later once created can be added to the VolumeAttributes class. Users will have more control to update these configurations whenever they want instead of using some CLI for modifying these parameters.

Specifically, this is about ControllerModifyVolume.
@Madhu-1, which parameters do you think can be mutable for CephFS, NFS and RBD?

For NFS the parameter to allow only certain IP-addresses to mount the volume could be modified.

Related Kubernetes feature: VolumeAttributesClass

Specifically, this is about ControllerModifyVolume.
@Madhu-1, which parameters do you think can be mutable for CephFS, NFS and RBD?

we need to take all the parameters in the storageclass and see what can be modified at runtime for the volumes, like for rbd imageFeatures etc.


Allow custom logging pattern

Would help simplify the logs, for instance when running the documentation sample.
before
./build/Release/shards docs/samples/run-sample.edn --file shards/Assert/is/2.edn

[error] [2023-02-14 20:31:56.037] [T-23040] [assert.cpp::66] Failed assertion Is, input: 7 expected: 8
[error] [2023-02-14 20:31:56.038] [T-23040] [runtime.cpp::715] Shard activation error, failed shard: Assert.Is, error: Assert failed - Is
[warning] [2023-02-14 20:31:56.039] [T-23040] [flow.hpp::451] Maybe shard Ignored an error: Assert failed - Is

after
LOG_shards_FORMAT=%v ./build/Release/shards docs/samples/run-sample.edn --file shards/Assert/is/2.edn

Failed assertion Is, input: 7 expected: 8
Shard activation error, failed shard: Assert.Is, error: Assert failed - Is
Maybe shard Ignored an error: Assert failed - Is

cc @ChelseaChX

cc @ChelseaChX

Awesome, this would be much better. Would it be possible though to have the name of the Wire that is being run displayed on the left?
For example:
[wire-x] Hello World!


Add "unit" tests. src/test/scala and src/test/resources currently empty

Needs basic tests and example image data.

Fixed in commit e48f8d2ca0096e52491dc5c5d93268604878829e
of GIF git repository.


Error when running the frontend

This is an early attempt at making create-solana-dapp work with Anchor v0.30.0.
This repo is based on the latest create-solana-dapp and I made a few commits to make the anchor library work.
pnpm anchor build and pnpm anchor test work.
However, the frontend does not seem to be happy.

There's a bounty for the person who fixes this.

App1713693601IDL should be of Idl Type.
Working on the fix

Good day, i already made a working update to this,
Kindly click here to check the pull request


Remove metrics/reporter/zabbix

As part of refactor/cleanup, remove the metrics/reporter module.

This depends on https://github.com/Commonjava/o11yphant/pull/7


bigquery/table: add copyFrom()

Fixes #2278
This adds a method on a Table object, copyFrom:
table.copyFrom([
  dataset.table('source-table-1'),
  dataset.table('source-table-2')
], function(err, job) {});

Coverage decreased (-14.7%) to 85.312% when pulling f7dec9246b98d73ec5014a5fa847b640d1ffc51c on stephenplusplus:spp--2278 into<PHONE_NUMBER>2ce0f6fa5fdecc5d4bf8f181b73d3b on GoogleCloudPlatform:master.

Just a thought, would it be better to merge this functionality into import?
table.import([
  sourceTable1,
  sourceTable2
], ...

Just a thought, would it be better to merge this functionality into import?

Personally I like this! We'd definitely want to document very clearly what supplying a string would do for that method though.

For any users familiar with the BQ concepts of copying as opposed to importing, the separation might be appreciated. And like you pointed out, import already has a couple ways of being used, so adding another might add more confusion. For those reasons, let's see if copyFrom is good enough and always keep the door open for refactoring and reconsideration in the future.


Nodes with addresses are formatted incorrectly

https://docs.zephyrproject.org/2.5.0/guides/dts/intro.html#unit-address-examples
The formatter isn't expecting nodes with addresses and is somehow turning
foo@123 {
   bar;
};

into
foo {
  123

  bar;
};

Likely the address is just another named child of the node syntax node and because it's not one of the typical syntax node types I've looked at so far I'm "handling" it by spitting it out un-modified.
It's an unusual case because the editor is only applying formatting to the .keymap file and while there isn't a valid case, I think, to have to reference addresses in the devicetree source in the keymap file, there doesn't seem to be anything restricting its use here instead of the board or shield .dts/.overlay/.dtsi files.
Nonetheless, its happening and this issue actually generates invalid devicetree syntax so it needs to be fixed.

Fixed this the other day. There are more improvements I should make to the formatter pending fixes in the tree-sitter-devicetree grammar.


Packaging on windows failed to incorporate *.yml files at our work.

The main reason was that setuptools does a split on '/', even on Windows.
But pybuilder only replaced os.path.sep with '.' in the include_directory call.
As such, one of these wouldn't work properly.
With the proposed changes, both of them work transparently (tested and confirmed working on Windows).

Coverage decreased (-1.1%) to 80.145% when pulling 3c4a933ebf7417a77ad675d9de00ef3f594439e7 on svaningelgem:packaging_on_windows into d0914fa51b240893437e5b18da101bd1000cd6b4 on pybuilder:master.

@svaningelgem I suspect that normcase/normpath are warranted instead of messing around with sep. I'll take a look, thanks!

This is what we do:
project.include_file('project', 'descriptors/*/*')
project.include_directory(os.path.join('project', 'calendars'), ['*.yml'], package_root='src/main/python')

Directory structure:
src/main/python/project/descriptors/a/b.yml
src/main/python/project/calendars/2018.yml
src/main/python/project/calendars/acc/2018.yml

The b.yml gets included, whereas the 2018's not.
I agree with you that normcase/path would be the better option here. Adjusted as such.

Let me see if we need a deeper cleanup of the paths throughout the distutils and core.

We also definitely need a unit test (or integration test, which would be better).

@svaningelgem just FYI, I will probably not accept this PR simply because I'm going to perform a major cleanup of the Windows-related pathing issues now, but feel free to treat this as a bug report.

No problem :). I am just proposing a solution. As long as the underlying problem is fixed, I don't really care. Although this issue is quite serious for us to be resolved.
When do you think 0.12 will be finally out?

As soon as possible. Believe it or not I need 0.12 as well :smile:

@svaningelgem Question for you:
src/main/python/project/descriptors/a/b.yml
src/main/python/project/calendars/2018.yml
src/main/python/project/calendars/acc/2018.yml

Are there any __init__.py in any of those directories? Because, generally speaking, those directories are not packages at all unless they have __init__.py.
This is not Windows-only problem btw - the inclusion doesn't work on Linux either, which I'm fixing as well.

Here is how it looks like:
src/main/python/project/descriptors/__init__.py
src/main/python/project/descriptors/parser.py
src/main/python/project/descriptors/<lots of dirs>/<lots of yml>.yml

src/main/python/project/calendars/__init__.py
src/main/python/project/calendars/sub/be/2018.yml
src/main/python/project/calendars/sub/be/acc/2018.yml

So in the subdirectories we don't have python files, but in the main "root" we have an init file.

Here's the thing - you HAVE to. It's not PyBuilder at all (apart from paths) and even not bdist_sdist - it's bdist_wheel behavior.
If it doesn't have __init__.py it's not a package (even under PEP420 it would not be a package, it would only be a namespace).

Please review these:
https://github.com/pybuilder/pybuilder/pull/677/files#diff-7136eda00f78062e66f8ce3b5df1e234R59
https://github.com/pybuilder/pybuilder/pull/677/files#diff-7136eda00f78062e66f8ce3b5df1e234R111
https://github.com/pybuilder/pybuilder/pull/677/files#diff-7136eda00f78062e66f8ce3b5df1e234R126

Closed by #677


make Timeline::{get,get_reconstruct_data} aware of context in which they are called

Note to reviewers: start with the block comment in context.rs

Motivation
Layer Eviction Needs Context
Before we start implementing layer eviction, we need to collect some access statistics per layer file or maybe even page. Part of these statistics should be the initiate of a page read request. I.e., was it page_service vs. a background loop, and if the latter, which of them.
Further, it would be nice to learn more about what activity in the pageserver initated an on-demand download of a layer file.
We will use this information to test out layer eviction policies.
Read more about the current plan for layer eviction here: https://github.com/neondatabase/neon/issues/2476#issuecomment-1370822104
task_mgr problems + cancellation + tenant/timeline lifecycle
Apart from layer eviction, we have long-standing problems with task_mgr, tenant / timeline deletion, and generally, a unified cancellation mechanism.
One approach to solve this is to abandon task_mgr in favor of a mechanism similar to Golang's context.Context, albeit extended to support waiting for completion, and specialized to the needs in the pageserver.
Heikki solves all of the above at once in PR
https://github.com/neondatabase/neon/pull/3228 , which is not yet merged at the time of writing.
What Is This Patch About
This patch addresses the immediate needs for layer eviction by introducing a RequestContext structure (name up for debate) that is plumbed through all the way from the entrypoints of the pageserver (page_service, management API, tenant background loops) all the way down to Timeline::{get,get_reconstruct_data}.
The struct carries a description of the kind of activity that initiated the call (re-using task_mgr::TaskKind here).
Also, it carries the desired on-demand download behavior of the entrypoint. Timeline::get_reconstruct_data can then log the TaskKind that initiated the on-demand download.
I developed this patch by git-checking-out Heikki's big RequestContext PR https://github.com/neondatabase/neon/pull/3228 , then deleting all the functionality that we do not need to address the needs for layer eviction.
This patch is huge, it should be easy to review because almost all of it is plumbing through of the &RequestContext argument.
Also, this patch is low risk because it should not be changing any behavior (apart from DownloadBehavior::Error).
TODO:

Self-review
We could reduce the size a bit by removing the various occurences of fn(..., _ctx: &RequestContext) that I left in place from PR 3228.

Before we start implementing layer eviction, we need to collect some access statistics per layer file or maybe even page. Part of these statistics should be the initiate of a page read request. I.e., was it page_service vs. a background loop, and if the latter, which of them.

Ah, that's why you wanted to do this PR separately. Makes sense!

Addressed review comments in latest push. Now rebasing, then force-pushing. The remaining unresolved conversations still require attention, even after the rebase.

Rebase pushed.
Main conflict in consumption_metrics.rs.
origin/main added a task_mgr::spawn call there.
That tasks calculates the synthetic size.
For that, it calculates logical size, and that needs a ctx as of this PR.
Solved by creating a ctx.detached_child() for the task_mgr task.
What do you think about DownloadBehavior::Download for the synthetic size calculation?
    // spin up background worker that caclulates tenant sizes
    let worker_ctx =
        ctx.detached_child(TaskKind::CalculateSyntheticSize, DownloadBehavior::Download);
    task_mgr::spawn(
        BACKGROUND_RUNTIME.handle(),
        TaskKind::CalculateSyntheticSize,

There are still unresolved conversations that I don't have a great answer to. @hlinnaka , can you take a look?
Also, are you planning to invest more review time or should we merge this?
Also, I've been thinking about reducing risk of misplaced DownloadBehavior::Error. How about, Instead of having Download, Warn, and Error, we just have Download and Error, and add a config knob / env var to turn Error into  what Warn currently does, in production, or, `cfg(not(testing))?

Force push: rebased. Minor conflicts in size.rs

Also, I've been thinking about reducing risk of misplaced DownloadBehavior::Error. How about, Instead of having Download, Warn, and Error, we just have Download and Error, and add a config knob / env var to turn Error into what Warn currently does, in production, or, `cfg(not(testing))?

Works for me.
If you do that, I would prefer a runtime configuration option rather than build time.

Hmm, I wonder if we might want to have a operations in the future , where it's expected that you might access a layer that needs downloading, but you would rather get an error instead of performing the download? For example, imagine an opportunistic compaction operation that reads files if they happen to already be present, and compact them, but you don't want to download anything just to compact them. Or we might want to do that in the logical size calculation for the /timeline_detail API call, so that we don't force downloading layers just to calculate the logical size, but return it if it can be calculated.
We could easily add a new DownloadBehavior for that later too, though. So up to you.

Asked SRE team about best practice for killswitches: https://neondb.slack.com/archives/C039YKBRZB4/p1674556815184939

Force-push: rebased (neglible conflicts) + squashed + improved commit message.
I consider this ready for merge now.

For completeness: I added a killswitch that's configurable via pageserver.toml. Will work with SRE to create a workflow that can flip the kill switch in <10min.

Post-conflict resolution cargo fmt --all required.

Force-push: rebase due to conflict in task_mgr.rs comments (my own PR that merged earlier today)

Force-push: rebase.
Minor conflict with
https://github.com/neondatabase/neon/commit/572332ab50b2d87fa15b11b2c8c1f9e1313c915b
Enabling auto-merge now


https://docs.silverstripe.org/en/4/changelogs/ links to old release google group

Affected Version
Current website.
Description
The page header says:
Keep up to date with new releases by subscribing to the SilverStripe Release Announcements group, or read our blog posts about releases.
The linkde release announcement groups looks like it was deprecated in 2018.

Thanks for reporting that! The updated documentation will get deployed soon.


Unable to install cli v0.1.0 on macOS (included errors from cargo output)

What I did:

brew install rust
cargo install --git=https://github.com/antonWetzel/typst-languagetool cli

Error report:
I'm sorry I can't be of much help dissecting this as I'm not familiar with rust.
warning: unused import: `backends::*`
 --> src/lib.rs:6:9
  |
6 | pub use backends::*;
  |         ^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error[E0004]: non-exhaustive patterns: type `&mut LanguageTool` is non-empty
  --> src/lib.rs:66:9
   |
66 |         match self {
   |               ^^^^
   |
note: `LanguageTool` defined here
  --> src/lib.rs:21:10
   |
21 | pub enum LanguageTool {
   |          ^^^^^^^^^^^^
   = note: the matched value is of type `&mut LanguageTool`
   = note: references are always considered inhabited
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
   |
66 ~         match self {
67 ~             _ => todo!(),
68 ~         }
   |

error[E0004]: non-exhaustive patterns: type `&mut LanguageTool` is non-empty
  --> src/lib.rs:74:9
   |
74 |         match self {
   |               ^^^^
   |
note: `LanguageTool` defined here
  --> src/lib.rs:21:10
   |
21 | pub enum LanguageTool {
   |          ^^^^^^^^^^^^
   = note: the matched value is of type `&mut LanguageTool`
   = note: references are always considered inhabited
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
   |
74 ~         match self {
75 ~             _ => todo!(),
76 ~         }
   |

error[E0004]: non-exhaustive patterns: type `&mut LanguageTool` is non-empty
  --> src/lib.rs:82:9
   |
82 |         match self {
   |               ^^^^
   |
note: `LanguageTool` defined here
  --> src/lib.rs:21:10
   |
21 | pub enum LanguageTool {
   |          ^^^^^^^^^^^^
   = note: the matched value is of type `&mut LanguageTool`
   = note: references are always considered inhabited
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
   |
82 ~         match self {
83 ~             _ => todo!(),
84 ~         }
   |

For more information about this error, try `rustc --explain E0004`.
warning: `typst-languagetool` (lib) generated 1 warning
error: could not compile `typst-languagetool` (lib) due to 3 previous errors; 1 warning emitted
warning: build failed, waiting for other jobs to finish...
error: failed to compile `cli v0.1.0 (https://github.com/antonWetzel/typst-languagetool#8769930b)`, intermediate artifacts can be found at `/var/folders/x3/cd0296z56pj1pgyw3hkthb8h0000gn/T/cargo-install6MKHUQ`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
make: *** [install-languagetool-cli] Error 101

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

Downloading a seemingly random zip file that has executables is not something I will do, @vineet1401.

Wow. Be careful out there folks...
The deleted profile had posted a comment (now gone) to download a zip and run an executable.


Would you like to add this repository to CAP's official documentation

Hello there,
I saw this place. It can be added to the official CAP document as an extension implemented by the community, so that other people can find it here through the document. If you want, you can submit a PR to modify the docs.
Thanks

Hello there,
I saw this place. It can be added to the official CAP document as an extension implemented by the community, so that other people can find it here through the document. If you want, you can submit a PR to modify the docs.
Thanks

I have modify the docs  and submit a PR , https://github.com/dotnetcore/CAP/pull/661   :smile:

Nice


boardwalk feedback and suggestions

This is my feedback and suggestions FIG.

. . . . Photos can not

I want to crash, I do not understand English

Please close this issue as this is not the place for suggestions. Tweet @zhuowei on twitter, or if you do not have it then tough luck.

Sorry, I actually ready for a day, I was a sentence translated. . . 发自网易邮箱大师 On 2015-07-18 17:34 , RandomAltThing Wrote: Please close this issue as this is not the place for suggestions. Tweet @zhuowei on twitter, or if you do not have it then tough luck. — Reply to this email directly or view it on GitHub.

Feedback Photos On 2015-07-18 17:34 , RandomAltThing Wrote: Please close this issue as this is not the place for suggestions. Tweet @zhuowei on twitter, or if you do not have it then tough luck. — Reply to this email directly or view it on GitHub.


JS Error on Repo when behind proxy

On the latest master, I'm getting the following JS error when navigating basically anywhere on Github itself.
The first error I don't care about, but the second and third are coming from Refined GitHub

I'm not sure where the below error is being thrown from, even with sourcemaps on I get that line number which is minified.
github-29b5a05….js:3 OPTIONS https://api.github.com/_private/browser/stats net::ERR_BLOCKED_BY_CLIENT
I'm not sure why it's coming back ERR_BLOCKED_BY_CLIENT but the page itself returns this value:
{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}

That's not us, it's likely an ad blocker


Rewrite T5 based QG training over HuggingFace trainer

jaydesen created the following on Apr 20:
Current QG training is specifically tied T5 training. We should base it on OneQA.trainer() or HF trainer()
Original issue: https://github.ibm.com/ai-foundation/PrimeQA/issues/135

On May 24, vishk024 commented:
Done


[T3A3][T14-A2] Tan Min Rong Samson

Ready for review.

@samsontmr Exceptional work. You've managed to modify all the required files.
Some comments added. Please close the PR after reading comments.


Fix for markdown equation formatting

I was having similar issues to those reported in https://github.com/quarto-dev/jupyterlab-quarto/issues/7 and https://github.com/quarto-dev/jupyterlab-quarto/issues/3 , and dug in a bit to see what the problem was. I found that the way the MutationObserver architecture was set up for triggering MathJax.typesetPromise did not match the DOM layout I was getting from jupyterlab. I'm not sure why this seems to be different for different users - presumably an underlying jupyterlab reason. I rewrote the architecture so that it should be much less fragile to changes in the document structure, and this seems to resolve the issue.

@dragonstyle or @cscheid Is there any feedback that can be given on this PR? I would really like to use this plugin when editing notebooks for use with quarto, but rendering issues with mathjax is a deal-breaker.

Apologies for not getting to this sooner. If I understand the change correctly, it seems like the biggest change is that the whole document is observed (rather than attempting to observe the cells). This definitely seems like it would be more robust, but will mean that we typeset the math each time any part of the document is mutated - does that also seem correct to you? In your observation does this typesetting cause any latency of have observable downsides in normal / large notebooks?

@dragonstyle no worries, and thank you for taking a look (and all your other work on this project).
The whole document is being observed, but it's only looking through the addedNode list for each mutation for the .quarto-<inline|display>-math elements. In theory this would mean that only those in a cell getting executed (and thus with a newly added output node) would be provided to Mathjax.typesetPromise. In practice, it seems that there's a number of other events causing mutations: scrolling, selecting cells, etc, but it doesn't seem to be egregious.  It's also worth noting that calling typesetPromise should be fairly low overhead for math that is already typeset (though presumably there is some amount of overhead).
I just made a notebook with a couple hundred equations to try with both versions of this plugin. I think performance is actually slightly better with this change, but they're pretty similar so it could easily be due to something else. Both are much slower than in base jupyterlab, but I imagine that's an unrealistic goal post.
For context, (and hopefully I'm remembering this correctly), I had issues with the existing two-tier mutation observer approach since the element containing jp-MarkdownCell was getting recreated each time the cell was executed, and I couldn't find a way to make it work with code cells display markdown output (with IPython.Markdown).

Ok, thank you for your diligence. I think that two tier approach was in part my attempt to thread the needle and avoid all those mutations triggering typesetting, but I also recall having issues with recreated cells and sorting out how to observe those with that approach.


743 fix PartialTCPRespond lint bug

Please link to issue using the PR description, rather than using the PR title (so issue closes when PR is merged).


merkle: temporarily revert #514

We need to temporarily revert #514 in order to cut the v0.16.0 release.

This is the (squashed) commit that we're talking about: https://github.com/informalsystems/tendermint-rs/commit/92956766c3aa3973c274b52e1d458a1accc89bb4
It's made up of three commits that were squashed:

merkle.rs line 24, length == 0 match calls the new empty_hash() function
Test to see that it works
linting (I guess that can stay)


Formatting inconsistencies

There still are differences in formatting in zed vs cli after updating to 0.146.3. I am not sure if this is zed issue or biome issue.
Here's a simple reproduction for this: https://github.com/Marcisbee/zed-biome-reproduction-1
Have I configured something wrong or is there a bug somewhere?

Also can try adding this to index.ts file:
const something
  = 123;

Cli says it's an error, but running formatter from zed, does nothing with this.
 Try removing the whole "lsp" settings and see if it works.
Also you can check in the command panel -> "debug: open language server logs" if the biome lsp is actually running or failed to start.

Indeed, removing config_path now seems to work(ish). There still are some weird cases. I updated reproduction with biome config:
	"formatter": {
		"enabled": true,
		"indentStyle": "space"
	},
	"javascript": {
		"formatter": {
			"quoteStyle": "single"
		}
	},

And this config doesn't seem to be respected when doing formatting from zed. Cli now says there are issues, but zed formatter does leave spacing with tabs and double quotes for this example:
try {
	// Something here
	const a = "test";
} catch (_e) {}

Current settings.json
{
  ...
  "lsp": {
    "biome": {
      "settings": {
        "require_config_file": true
      }
    }
  },
  "formatter": {
    "language_server": {
      "name": "biome"
    }
  },
  "code_actions_on_format": {
    "source.organizeImports.biome": true,
    "source.fixAll.biome": true
  }
}

With this configuration ("require_config_file": false) it seems to be working just fine:
  "lsp": {
    "biome": {
      "settings": {
        "require_config_file": false,
        "config_path": "<path>/biome.json"
      }
    }
  },

But then it also runs in projects where config file is not defined, right?

For the record, the "<path>"  is a placeholder for the path to where the biome.json file is relative to the root, this should no actually be in your settings.json.

But then it also runs in projects where config file is not defined, right?

Correct. Tho there may be a bug with this setting, can you check if  there are any errors logged in your language server logs? :)

It seems like it's working correctly now without config_path and "require_config_file": true.
I just had to restart zed for this to take effect.. 🤦
Seems like this was a user error, tho it would be nice for this extension to detect this config change without reloading workspace.


Allow to specify time windows for when dependabot is allowed to operate

I've been a big fan of dependabot for a while and we are also fairly happy users of it at work :)
As with several other people on here, we have had our issues with the amount of work that comes with handling dependabot PRs. Recently, we tried to allow automerging but sadly, without much benefit.
Concretely, we observed that even with automerging, dependabot doesn't update PRs if they are outdated. We have autorebase turned off because it would cause too much load on CI while we are working.
In the end we want two things from dependabot:

Not be in the way while we are working (i.e. not keep the CI busy when we need it)
Not requiring too much manual interaction

Ideally, we would like to specify time windows when dependabot can operate. For example:
Friday 6pm till Monday 6am. Within that time, dependabot can go wild and rebase as often as it wants to, open PRs etc (unless the max number is reached of course) and merge them if the build passes.
This feature while certainly not ideal would definitely solve all problems that we currently have with dependabot. Also, from reading the other issues around rebasing and automerging, it looks like it would help other people as well!

This is fixed in GitHub-native Dependabot: use the new schedule values to set when Dependabot runs https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#scheduleday


Documentation: DoubleDQN is missing

Page 23 of documentation says "DoubleDQN (class in chainerrl.agents), 9" but there is no DoubleDQN documentation!

Page 23 of documentation

Which page do you mean? Can you give me a link to it?
It is true that DoubleDQN's docstring is scarce. It would be better to state there that it is the same as DQN except target value calculation.

Hi muupan, I am sorry for my late reply.
ChainerRL Documentation
[https://media.readthedocs.org/pdf/chainerrl/latest/chainerrl.pdf]

class chainerrl.agents.DQN is duplicated pages 10 and 11.
class chainerrl.agents.DoubleDQN is at page 10 and not at page 9 as Index says at page 23

Hope these are useful to update your documentation.
Best,
Alex

Sorry for the late response. You are right, the current PDF looks weird. Thank you for pointing it out.


don't update the reduced cv list if it would erase half of the list

Is your enhancement request related to a problem? Please describe.
In some rare cases syncing reduced cv leads to 90% of the games marked as full cv. Then it takes at least 24 hours till the server has updated its database again and the user can get a correct list with all reduced cv games.
Describe the solution you'd like.
#921 already prevents syncing if the database has failed to update but doesn't seem to prevent these rare cases. I would suggest a test that if the new list of reduced cv games is significant smaller e.g. only half the size or less than the old one then don't sync it.

How often does this happen? Because right now it appears that rafaelgssa.com is down.

It's the second time this year. So like I said it's rare. Also I might have been completely wrong (like often in the last time). If rafaelgssa.com is down the bug might be the fallback to the googlesheet because it is pretty outdated? Or how does the sync work if the server is down?

If the server is down it should fall back to the sheet, but maybe there's a bug. I've been receiving some failure notifications from Google but haven't had time to look into them yet.
Sent from ProtonMail mobile
-------- Original Message --------
On Nov 11, 2019, 17:17, at46 wrote:

It's the second time this year. So like I said it's rare. Also I might have been completely wrong (like often in the last time). If rafaelgssa.com is down the bug might be the fallback to the googlesheet because it is pretty outdated? Or how does the sync work if the server is down?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

It was a bug in the Google sheet, it's fixed now.

Thanks for looking into it. I just synced and it's not fixed for me. Will it take another 24 hours?

The sheet is currently updating, it might take a couple hours until it's fully updated.

There are again some reduced cv games listed as full cv since a few days (at least since Friday). I would appreciate if you could improve the game categories somehow.


Live

test PR

Docs Build status updates of commit a6e9f14:
:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


gamesPlayed format

I can guess that gamesPlayed is an array, but it is not described anywhere what is the format of that array, if I want to use it for CS:GO for example, if I use:
   steamUser.gamesPlayed({
      "game_id": "730"
    });

It doesn't work. It gives error:
.CMsgClientGamesPlayed#game_id is not a field: undefined

So far as I know, I'm using:
steamUser.gamesPlayer({
        'games_played':[
                {'game_id':440}
        ]
});

Unfortunately, I somehow have a confusing way of parsing what I'm doing (currently I'm passing an array of ints to this...). Somehow, one of those is working with bot.setGames(['440',[214610,282800]);.
I should probably be figuring out/fixing my own code before advising someone else...

It's an array of game_id key/pair objects:
steamUser.gamesPlayed([{
     "game_id": "730"
}]);

steamUser.gamesPlayed([{
     "game_id": "730"
},{
     "game_id": "731"
}]);

gamesPlayed takes a CMsgClientGamesPlayed object.
The structure of protobuf objects as passed and received by node-steam is described here.

Suggestions on how the docs could be made clearer are welcome.


Replace ce entity with one that applies to MRI and PET data equally well

Currently, MRI uses ce (contrast enhancing agent) to indicate exogenous chemicals used to enhance contrasts, while the PET BEP, which uses tracers, plans to use the acq entity because ce doesn't reflect common terminology for PET users.
I propose that we define a new entity, perhaps called tracer, that would work for both technologies and would replace ce.
The addition of a tracer entity was proposed by @mnoergaard in https://github.com/bids-standard/bids-specification/pull/633#discussion_r563794146. In the hopes of not cluttering up the specification with a new entity in BIDS 1.X, I think it would be best to replace the existing ce in 2.0.

If "tracer" works for both contexts, I would support moving to that. Difficult to shorten to 2-3 characters (trc, maybe?), but perhaps also unlikely to be concatenated with so many other entities that a 6 character entity would lead to unreadable filenames.

If "tracer" works for both contexts, I would support moving to that. Difficult to shorten to 2-3 characters (trc, maybe?), but perhaps also unlikely to be concatenated with so many other entities that a 6 character entity would lead to unreadable filenames.

So from the PET perspective tracer would be good and shortening it to trc would be fine, but not great in terms of readability.  That seems slightly misleading to me.

It would be good to get input from MR folks who use contrast-enhancing agents. I don't know anyone who does though.

This is going to be really hard because, just linquistically, the two core terms are really different.
For MRI injections "contrast agent" is ubiquetous in MRI and implicit with the passive nature of the injection.  In PET, the injection is the very source of the signal... a better analogy is: What is the BIDS language for the chemical species imaged (i.e. the origin of the MRI signal)?

[H-1] - Protons, the default
[He-3] - Hyperpolarized 3He MRI
[C-13] - Hyperpolarized carbon-13 MRI
[F-19] - Fluorine MRI
[Na-23] - Sodium MRI
[P-31] - Phosphorus MRI

(please, someone who knows more about MRI edit the names I've assigned if I've mangled it.)
In short, I don't think we should try to harmonise this.  Contrast agent ce is something that modifies the MRI signal, and BIDS 2.0 for PET should create a new label, e.g. trc, for the origin of the PET signal.  And we should probably have yet a new keyword for chemical species of the MRI sequence.

Since we haven't finished the actual PET BEP review, we can still change the use of acq to trc. Would this then be ok for people that we make this change now?

I think moving to trc is a good call... there isn't a perfect acq analogy, but if we were back in the days of retractable septa, you could imagine acq being used to tag 2D vs 3D acquistions.   As another example, what if you took a single list mode dataset and played it out into sets of 5 min frames, and then did it again with, say, 7 min frames... wouldn't that be a good use for acq?

I would argue that this latter case would imply a new reconstruction, as the acquisition of the data has not changed, but the reconstruction into frames has. Therefore, the data would need a new ´rec´ name (recon), such as ´rec-acdynXX´ (https://bids-specification.readthedocs.io/en/bep-009/04-modality-specific-files/09-positron-emission-tomography.html).
But I agree that ´acq´ could be used for 2D vs. 3D, even though there are only a few sites out there that still use 2D acquisitions.

Thanks to everyone for responding. Apologies for the round trip on this one! I will close this and follow up in the PET BEP.


Added wysiwyg font size options

@leolynn Can you undo the indentation changes, make sure your indent size is set to two spaces

@acrimi updated


Added custom metrics binding credential generation and management in APIServer

Custom Metrics feature related changes[For ServiceBroker and APIServer only].

@paltanmoy ,   Is that possible to break this PR with 2930 insertions into smaller ones , i.e. to handle  credential generation and management only ?  Regardless custom metric,  credential generation is a "valid" topic in service broker and api server ..

LGTM

LGTM


Force copy on make install to avoid Text file busy error

When you attempt to manually install docker on a previous install, copying binaries will fail with Text file busy error if docker is already running.
Add -f to cp will fix this behavior, old binaries will be removed before copying the new ones.
This issue has been encountered on ppc64le arch.

/cc @tianon @vieux @tiborvass

Seems OK to me :+1:


[CONTINT-3328] Fix bug and make better usage of the Sender properties in KSM core check

What does this PR do?
This PR should fix a bug in KSM causing tag corruption when telemetry: true is set.
Moreover, we also sort tags and remove duplicates in various places as it is part of the fix and should improve performances (as the aggregator performs another sort on every metric).
Full investigation notes: https://datadoghq.atlassian.net/wiki/spaces/~63ed3a63bc0f9b3a16fca94b/pages/3218604034/resource+name+tag+added+to+every+ksm+metric.
TL;DR: During the investigation, we noticed that:
Tags set in the check config are already added in CommonConfigure, so we add them twice and remove them in the aggregator.
It is possible k.instance.Tags has a capacity different from its length. As a result, append() can modify the underlying array instead of copying it.
Using append(k.instance.Tags, "my_tag:value") directly in the RawSender can cause a complex data race that adds my_tag:value to k.instance.Tags, thus to every ksm metric.
Making sure that k.globalTags has length==capacity should prevent append() to modify the underlying array and fix this tag corruption.

Motivation
KSM should have correct tags and values.

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Make sure the data race is fixed
Deploy the Agent with helm using:

datadog:
  tags:
    - env:test-env
    - region:test-region
    - perimeter:test-perimeter
  clusterName: YOUR_CLUSTER_NAME
clusterAgent:
  confd:
    kubernetes_state_core.yaml: |-
      init_config:
      instances:
        - collectors:
          - secrets
          - verticalpodautoscalers
          - apiservices
          - customresourcedefinitions
          - nodes
          - pods
          - services
          - resourcequotas
          - replicationcontrollers
          - limitranges
          - persistentvolumeclaims
          - persistentvolumes
          - namespaces
          - endpoints
          - daemonsets
          - deployments
          - replicasets
          - statefulsets
          - cronjobs
          - jobs
          - horizontalpodautoscalers
          - poddisruptionbudgets
          - storageclasses
          - volumeattachments
          - ingresses
          telemetry: true
          tags:
            - cluster_name:YOUR_CLUSTER_NAME
            - kube_cluster_name:YOUR_CLUSTER_NAME

Make sure that resource_name is set only for kubernetes_state.telemetry.metrics.count.

Make sure tagging is still correct
Try adding tags DD_TAGS in the ksm config under tags or add global tags and make sure they are added to every ksm metric.

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

This looks like the kind of a bug that SafeSender was designed to protect from. Would it make sense to just use safe sender instead of a raw sender?

This looks like the kind of a bug that SafeSender was designed to protect from. Would it make sense to just use safe sender instead of a raw sender?

This is an option but then we would need two different senders. By setting the tags specific to the check directly in the sender, we can:

Focus only in the metric specific tags
Reduce the number of allocations
Fix potential errors

As the goal is to add some extra “check custom tags” to the sender, would it work to enrich k.instance.Tags before it is used to populate the sender’s checkTags inside k.CommonConfigure ?

Great idea! I modified my PR accordingly. I tested it as well and it seems to work as expected. I also verified that updating the Tags slice does not affect the output of agent configcheck.


iOS 11.2 Webcam error:  WebRTC issue-! Navigator.mediaDevices not present in your browser

Hello, I just tried it in the example (demo-firefox-release) with a iPhone 6 and I get the error "WebRTC issue-! Navigator.mediaDevices not present in your browser", I'm working with the Chrome browser, I've also tested on an iPhone 6s with safari browser and it works without problems. Both are actualized to iOS 11.2. I leave the error image that is seen in the browser.

Any kind of help would be great, greetings!

The same error in Wechat.
Maybe only safari support webtrc? Or other browsers use old version Navigator.getUserMedia as webrtc API, we should test it~

According to this Google support link Chrome on iOS is using WKWebView which is basically a limited Safari version controlled entirely by Apple.
On iOS 11 Apple implemented the WebRTC protocol for Safari, but they didn't do it for WKWebView.
It's a shame because all non Safari browsers (Chrome, Firefox, etc) has to use WKWevView and even inApp browsers are constrained to this engine (ex: Facebook, WhatApp, etc). The only thing left for us is to press Apple to activate WebRTC in their WKWebView engine. From AR.js's point there's nothing we can do about it.

Dear all
From what I read on Apple's site, there is no plan to integrate shortly WebRTC support in WKWebView.
And I guess this lack of support is the reason why AR.js does not work under WeChat, which is certainly using this component as its browser.
By any chance, is there any alternative of web-based AR framework which does not use WebRTC ? we have a game to develop, but if we ask our customer to put aside all iOS users ... I am not sure they will welcome this information :-/
Thanks if you have any idea ! :-)
CDS

works totally fine if you open safari on ios 11 but not on chrome on ios 11 so use Safari instead which in most cases iphone users use 👍

using iPhone SE with latest update of iOS 11 does not work in Safari nor Chrome

I am a bit confused.
is webrtc not already compatible with most browsers?
or am I looking at the wrong one?
https://caniuse.com/#feat=rtcpeerconnection
https://caniuse.com/#feat=objectrtc

On iOS WebRTC is only available through Safari, is that what you've been
using?
On Thu, Nov 15, 2018 at 4:11 AM Hamun<EMAIL_ADDRESS>wrote:

I am a bit confused.
is webrtc not already compatible with most browsers?
or am I looking at the wrong one?
https://caniuse.com/#feat=rtcpeerconnection
https://caniuse.com/#feat=objectrtc
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/jeromeetienne/AR.js/issues/273#issuecomment-439019412,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFjoTjqyIZZKHYKsbIGCSvYvgdEsgqzEks5uvVnVgaJpZM4Q2d1F
.

@rpalmese Did you find any solution?
I am running it on IPhone XR with iOS 13.x.x and getting the same error.
Ionic-react-app.

same here with iPhone 8 13.3

same issue here


OAuth improvements and new status codes

This PR adds further functionality that's related to the libbi. The main change is to return 'None' as property values when OAuth is required, but no credentials are defined. The HA integration uses these None values to display entities as unavailable if OAuth is missing.
The PR adds a few new libbi status codes.
Also fixed a couple of linting errors.

I also added a "--skip-oauth" flag to the cli, so it doesn't ask for app email/password (for users without libbi)

@CJNE Apologies for the tag, but do you think you could review this PR? The HA integration PR depends on this one. Thanks!


Add ePIC relocations and rewrite rules

Continuing to follow up on the request to decompose the ePIC PR into multiple PRs, this PR adds the ePIC relocations and rewrite rules.

I am happy with the GP-relative relocation part (also used by the FDPIC ABI proposal), but I am afraid I am concerned of R_RISCV_EPIC_* relocations. Commented here https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/343#issuecomment-1926279418

I don't have a good understanding of the use cases for embedded systems that need PIC but not shared libraries. Is there any freely source available example of something that would use this? If it's needed for a commercial RTOS, is there at least a public manual or datasheet?
@MaskRay Was your comment questioning the existence of the use case for ePIC without shared libraries, suggesting that ePIC should be a special case of FDPIC, or something else?
Assuming that the use case is valid, the general approach looks good. Relocation behavior needs to be described in the language of externally observable linker behavior, not implementation details like synthesized non-dynamic relocations. I think we also need an absolute option, at least for weak symbols but it may be useful more generally.

My comment is questioning the existence of the use case for ePIC without shared libraries. I think we should consider FDPIC, which works with MMU-less and MMU systems, supports dynamic libraries. After FDPIC support, we can figure out whether there is still ePIC need. (I kinda suspect no.)


how to prevent quotes from being converted into "

Example:
var sanitizeHtml = require('sanitize-html');

console.log(sanitizeHtml('foo "bar" baz', {
        allowedTags: [],
        allowedAttributes: []
}));

Yields:
foo "bar" baz

How to get the below result instead?
foo "bar" baz

You can provide a filter function option to sanitize-html.
var sanitizeHtml = require("sanitize-html");
sanitizeHtml('foo "bar" baz', {
      textFilter: function(text) {
      return text.replace(/"/g, '\'');
    }
});

Yes, that should work.


Canonical Social Id format

Since we are switching from Auth0, we should explicitly define a canoncial social ID format in the specs. We can simply do:
Github
github | {github_id}
Ethereum
eth | {ethereum_address}
These will uniquely identify a github or ethereum account.

This can be closed since its been implemented by PR 10


Remember last organization when opening dashboard

Description
Opening a fresh browser tab with the polar.sh dashboard should show the most relevant organization if there is more than one.
Current Behavior
Currently it redirects to the first organization in the dropdown list, which is the most recently created one.
Expected Behavior
Redirect to the organization that was most recently manually selected from the dropdown list, or some other metric like revenue, etc.
Screenshots

Environment:

Operating System: [e.g., Windows, macOS, Linux]
Browser (if applicable): [e.g., Chrome, Firefox, Safari]

I am working on this issue 👍

Thanks for shipping this. Happy about this every time I open polar.sh in a new tab 😃