[PLT-7409] Channel Member List: show status icon and sort by user's status

Summary
Show status icon and sort by user's status to the following components:

MemberListChannel
PopoverListMembers (though not specifically mentioned in the ticket)

@jasonblais @esethna You might want to check this out if according to ticket specs. (I'm not really sure about the coverage). Also not sure if this should be for v4.5 as stated in Jira ticket.
Ticket Link
Jira ticket: PLT-7409
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] Ran make check-style to check for style errors (required for all pull requests)
[x] Ran make test to ensure unit and component tests passed
[x] Has UI changes

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-0c5b4f1fcebce566d.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-0c5b4f1fcebce566d

Spinmint test server destroyed

@MusikPolice updated PR per comments. Also added unit tests.

Setup Test Server label detected. Spinmint test server created if build succeeds (checks pass and no conflicts with base branch).

Spinmint test server created at: http://i-08da481b2201666f8.spinmint.com
Test Account 1: Email<EMAIL_ADDRESS>| Password: passwd
Test Account 2: Email<EMAIL_ADDRESS>| Password: passwd
Instance ID: i-08da481b2201666f8

@jwilander @esethna Thanks! I'll address your comments.

@saturninoabril let me know if you have any questions about the items I brought up?


CI problem - can't import dependency

Hi,
First of all - thanks for sharing this! I'm just starting to use nbdev but it looks like an amazing platform for library development.
I'm having trouble setting up CI with nbdev. This is possibly not nbdev-related - in which case, I'd appreciate any pointers you might have regarding where to ask this.
One of the dependencies of my library is rpy2. At first I was thinking that Github's CI would "catch" the dependencies and install them (similarly to find_packages()) but the first build failed because rpy2 wasn't installed. I then manually added pip install rpy2 to main.yaml and got:
Collecting rpy2
18
  Downloading https://files.pythonhosted.org/packages/d9/51/d5c41ac70e0aa3272f24cf836bd35d6246c95b98d8d811f338cec5a8098e/rpy2-3.2.2.tar.gz (162kB)
19
    ERROR: Command errored out with exit status 1:
20
     command: /opt/hostedtoolcache/Python/3.6.9/x64/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-alanql6m/rpy2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-alanql6m/rpy2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-alanql6m/rpy2/pip-egg-info
21
         cwd: /tmp/pip-install-alanql6m/rpy2/
22
    Complete output (1 lines):
23
    There is no R_HOME and the R executable cannot be found.

I wasn't able to solve this, so I tried replacing pip install rpy2 with conda install -c r rpy2 in main.yaml. In this case installation was successful, but in the "Run tests" stage I got ModuleNotFoundError: No module named 'rpy2'. The entire trace is available here.
Any help would be much appreciated, and thanks again!

I don't think this is related to nbdev. You need to have R installed according to the docs of rpy2 so you need to add lines to your main.yaml file to do that (I have no knowledge of R so can't help you there).


Support out-of-band Helm chart upgrades

Currently the only way to update a running instance using NMaaS is to use the upgrade functionality which is only available between patch versions of the chart.
It should be possible to upgrade a chart on the command-line and let NMaaS know what is the new version of the app and the used chart, so that future patch updates to the chart itself can be tracked. This would allow complex upgrades between major versions to be done by the NMaaS team, while also allowing future patch updates to be done from the end-users using the Portal.
It should be possible only for a global administrator to manually edit the app/chart versions.

@llopat , AFAIK this has been tackled by https://github.com/nmaas-platform/nmaas-platform/issues/106. Please verify and close this issue if needed.

@korvoj correct, closing now


uproot4 unable to open ROOT file with colons in the name that uproot3 can

Hi. I've come across an issue where if a ROOT file has a colon in the name of it uproot3 can open the file but uproot4 fails. I can't give you the file, but I can show you a minimal failing example and then a reproducible example with public files.
Minimal Failing Example
$ tree .
.
├── data-tree
│   └──  data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root
├── issue.py
├── requirements.txt

1 directory, 3 files
$ cat requirements.txt
uproot
uproot4
$ docker run --rm -it -v $PWD:/data -w /data python:3.8 /bin/bash
root@510598a7f4e8:/data# python -m pip install --upgrade pip setuptools wheel
root@510598a7f4e8:/data# python -m pip install -r requirements.txt
root@510598a7f4e8:/data# python --version
Python 3.8.5
root@510598a7f4e8:/data# python -m pip list
Package        Version
-------------- -------
awkward        0.13.0
cachetools     4.1.1
numpy          1.19.1
pip            20.2.2
setuptools     49.6.0
uproot         3.12.0
uproot-methods 0.7.4
uproot4        0.0.18
wheel          0.35.1
root@510598a7f4e8:/data# cp data-tree/data16_13TeV\:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root data-tree/renamed.root
root@510598a7f4e8:/data# python
Python 3.8.5 (default, Aug  5 2020, 08:22:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import uproot as uproot3
>>> import uproot4
>>> from pathlib import Path
>>>
>>> uproot3_file = uproot3.open(
...     "data-tree/data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root"
... )
>>> print(f"uproot3 opens file as {uproot3_file}")
uproot3 opens file as <ROOTDirectory b'/home/feickert/workarea/submitDir/data-tree//data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root' at 0x7fce6da5b5e0>
>>>
>>> # uproot4 fails with the ':' in the filename
>>> uproot4.open(
...     "data-tree/data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root"
... )
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/uproot4/source/file.py", line 74, in __init__
    self._file = numpy.memmap(self._file_path, dtype=self._dtype, mode="r")
  File "/usr/local/lib/python3.8/site-packages/numpy/core/memmap.py", line 225, in __new__
    f_ctx = open(os_fspath(filename), ('r' if mode == 'c' else mode)+'b')
FileNotFoundError: [Errno 2] No such file or directory: 'data-tree/data16_13TeV'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/site-packages/uproot4/reading.py", line 78, in open
    file = ReadOnlyFile(
  File "/usr/local/lib/python3.8/site-packages/uproot4/reading.py", line 265, in __init__
    self._source = Source(file_path, **self._options)
  File "/usr/local/lib/python3.8/site-packages/uproot4/source/file.py", line 80, in __init__
    self._fallback = uproot4.source.file.FileSource(file_path, opts)
AttributeError: module 'uproot4.source.file' has no attribute 'FileSource'
>>> # even if that is inside a pathlib object
>>> uproot4.open(
...     Path(
...         "data-tree/data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root"
...     )
... )
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/uproot4/source/file.py", line 74, in __init__
    self._file = numpy.memmap(self._file_path, dtype=self._dtype, mode="r")
  File "/usr/local/lib/python3.8/site-packages/numpy/core/memmap.py", line 225, in __new__
    f_ctx = open(os_fspath(filename), ('r' if mode == 'c' else mode)+'b')
FileNotFoundError: [Errno 2] No such file or directory: 'data-tree/data16_13TeV'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/site-packages/uproot4/reading.py", line 78, in open
    file = ReadOnlyFile(
  File "/usr/local/lib/python3.8/site-packages/uproot4/reading.py", line 265, in __init__
    self._source = Source(file_path, **self._options)
  File "/usr/local/lib/python3.8/site-packages/uproot4/source/file.py", line 80, in __init__
    self._fallback = uproot4.source.file.FileSource(file_path, opts)
AttributeError: module 'uproot4.source.file' has no attribute 'FileSource'
>>> # but the file itself is fine
>>> uproot4.open("data-tree/renamed.root")
<ReadOnlyDirectory '/' at 0x7fce725e7670>

Failing Reproducible Example
# issue.py
import uproot as uproot3
import uproot4
from pathlib import Path

def main():
    # curl -sL https://github.com/scikit-hep/scikit-hep-testdata/raw/master/src/skhep_testdata/data/uproot-HZZ-lz4.root -o uproot-HZZ-lz4.root
    uproot3.open("uproot-HZZ-lz4.root")
    uproot3.open("uproot:HZZ-lz4.root")
    uproot3.open(Path("uproot:HZZ-lz4.root"))

    uproot4.open("uproot-HZZ-lz4.root")
    uproot4.open("uproot:HZZ-lz4.root")

if __name__ == "__main__":
    main()

root@510598a7f4e8:/data# curl -sL https://github.com/scikit-hep/scikit-hep-testdata/raw/master/src/skhep_testdata/data/uproot-HZZ-lz4.root -o uproot-HZZ-lz4.root
root@510598a7f4e8:/data# cp uproot-HZZ-lz4.root uproot:HZZ-lz4.root
root@510598a7f4e8:/data# python issue.py
Traceback (most recent call last):
  File "issue.py", line 17, in <module>
    main()
  File "issue.py", line 9, in main
    uproot3.open("uproot:HZZ-lz4.root")
  File "/usr/local/lib/python3.8/site-packages/uproot/rootio.py", line 63, in open
    raise ValueError("URI scheme not recognized: {0}".format(path))
ValueError: URI scheme not recognized: uproot:HZZ-lz4.root

Comments
I realize that this is probably because uproot4's open's path is
https://github.com/scikit-hep/uproot4/blob/b8828069b9ae52c742fb704f07e1a4e179fe7b30/uproot4/reading.py#L43-L46
and it isn't a good idea to have a file with a colon in it in general. However, there are ATLAS files that do, and it would be nice if uproot3 behavior toward filenames could still be supported. If support for this is firmly out of scope it would be great if there could be some huge warning about this in the docs.

Btw. a minimal working example is also just
>>> import uproot4
>>> uproot4.open("foo:bar.root")

The problem is this line https://github.com/scikit-hep/uproot4/blob/b8828069b9ae52c742fb704f07e1a4e179fe7b30/uproot4/_util.py#L157
This simply assumes that whenever there is a colon, the first part is the protocol (including "file") or a windows drive and the second is the object path. I ran the test suite with the following change (just for testing):
    try:
        file_path, object_path = path.split("://")
    except ValueError:
        return path, None

but many tests fail since the following pattern is used for local files: file:/path/to/file as seen here https://github.com/scikit-hep/uproot4/blob/b8828069b9ae52c742fb704f07e1a4e179fe7b30/tests/test_0016-interpretations.py#L84
This would be another case to cover inside file_object_path_split(). I am not sure if this pattern is used in the wild, but I think restricting it to file:// would probably be the better choice.
Anyways, the file_object_path_split() needs to be tweaked to cover all the cases when accepting : in filenames, which of course is mandatory.

Funnily this tiny change let's quite a few tests pass but it obviously fails when the object path is appended without leading and trailing spaces around the :
    try:
        index = path.rindex(" : ")
    except ValueError:
        return path, None

Unfortunately there is an ambiguity here, unless we assume that every root file ends with .root.

I created a pull request (https://github.com/scikit-hep/uproot4/pull/80) which however comes with a grain of salt, so let's discuss further.

I was going to say that there's an option that simply turns off the colon-splitting, but I look now and I can't find it. I'm sure it was there. Anyway, that was the intention: that a boolean parameter, by default true, would specify whether the filename gets split into filesystem/URL path and in-ROOT party or not.
Also, the splitting character used to be a vertical bar | because this is a very implausible character for a filename, given the amount of trouble it would cause in the shell. The reason I changed it was because it's not a natural separator—nothing about it suggests that this should be the dividing line between paths. By contrast, a colon is used this way (in shell variable lists, such as PATH).
I switched to a colon because it's an illegal character for filenames in MacOS and (if I remember right) URLs. Unix filenames can have almost any character in them, but considering the use of colons in file lists like PATH, that seemed implausible. It also seemed unlikely in Windows due to drive letter confusion.
So the colon had the right guessable meaning and didn't seem like it could be common in real file names. But ATLAS file names have colons in them? That's an important case. Maybe we should switch back to vertical bars?
At the very least, there should be a boolean parameter that just turns off the splitting. The uproot4.open function is already documented, so in principle it's discoverable, and anyone who doesn't discover it can be told pretty quickly, "set split_path_with_bar=False." I'm surprised it's not there because I coulda sworn I added that. It's a two line change (adding the parameter default and the if statement).
On assuming ROOT files always end with ".root", that's a stricter retirement than not including colons. I'd rather not make that assumption.

Ah OK, with that additional option it's a bit better but still may cause confusion. I think switching to | is better since sticking to : and the current implementation means that at least in case of ATLAS files one could not load an object path via open(). Or do you consider adding an additional object_path= parameter?
Btw. : in filenames work on macOS (it was an illegal character on class Mac OS and on the old carbon layer of Mac OS).

Another possibility is to require paths-in-file to start with a slash (because they are absolute, after all), and then the real separator would be ":/", which works for ATLAS.
Or to only split with a colon (a convenience) if the filename ends with ".root", while not requiring filenames to always end with ".root". Sorry if I misunderstood that that was your actual suggestion.
It drop it entirely. This is an elaboration on the idea of deep getitem (in which you can write a single path that selects through the TDirectory and TBranch hierarchy), but maybe it's an overextension? Maybe it's not bad to require those extra quotes and braces. They were intended for quick navigation.

I've been thinking about it all morning. An object_path parameter would defeat the purpose: it's easier to type
uproot4.open("filename.root")["pathname"]

than it is to type
uproot4.open("filename.root", object_path="pathname")

While the file_object["dir1/dir2/branch1/branch2"] feature was requested, the uproot4.open("filename.root:dir1/dir2/branch1/branch2") feature was not requested—it was an extrapolation of that request.
Since there isn't a compelling reason to do otherwise, we should do the simplest thing of not having any colon/vertical bar syntax at all, since that would be the most guessable and wouldn't require reference to the documentation before getting started. Uproot 4 is still in a fluid enough state (no documentation yet) that I can remove something like that.

I fully agree ;) I first thought that the column-syntax has also some special shortcuts to get to the data source even more efficiently but looking at the code it seems to me that it's just an alternative to open()[]... but correct me if I am wrong!

That's right: it's only syntactic sugar. The same is true of file_object["dir1/dir2/branch1/branch2"], but that syntactic sugar was helpful because people were stumbling over file_object["dir1"]["dir2"]["branch1"]["branch2"]. I guess it's okay if the number of square brackets is reduce to one, rather than being reduced to zero.

Now that I'm going in and deleting it, I find that it really is important: interfaces that take TTrees from multiple files need a way to express both succinctly.
lazyarray = uproot4.lazy(["batch1/*.root : treename1", "batch2/*.root : treename2"])

for arrays in uproot4.iterate(["batch1/*.root : treename1", "batch2/*.root : treename2"]):
    ...

Without this, the object path could be a separate parameter (as it was in Uproot3, which was a stumbling block because uproot.iterate("batch1/*.root", "treename1") led people to forget the tree name) but then it can't be different for different files, as above. Allowing it to be different for different files would require 2-tuples or something, if there isn't a syntactic delimiter.
So it is more important than quick and easy typing in the uproot4.open case... I have to think more about it... I'm open to suggestions.

Maybe it's staring me in the face: the colon could be outside of quotation marks if the file name specifier is allowed to be a dict:
lazyarray = uproot4.lazy([{"batch1/*.root": "treename1"}, {"batch2/*.root": "treename2"])

but for the common case of all files having the same name, requiring people to know this weird syntax should be unnecessary:
lazyarray = uproot4.lazy(["batch1/*.root", "batch2/*.root"], "treename")

or maybe pick the only TTree if the file has only one TTree (not counting cycle number).

Also allowing
lazyarray = uproot4.lazy([{"batch1/*.root": "treename1", "batch2/*.root": "treename2"])

The fact that uproot4.open would accept dicts only if they have length 1 would be because uproot4.open is a special case that only opens one file. I'm trying it out and will post a few unit tests here as a suggestion.

I really like the dict approach, I think that's quite transparent.
However, providing more logic is probably too much (like picking the only TTree if there is only one), I think that Python provides enough to make such things easily expressible...?
With a dict approach one could also write a generator style
lazyarray = uproot4.lazy({fname: "treename"} for fname in ["batch1/*.root", "batch2/*.root])

or even simplifying it to a single dict:
lazyarray = uproot4.lazy({fname: "treename" for fname in ["batch1/*.root", "batch2/*.root]})

but notice that this is just one dict in contrast to your list of dicts example, so ordering is obviously not guaranteed for Python 3.5 and less, which might confuse one or the other. Anyways, that's just to throw in another point, the general gain is very low and the number of symbols to type is almost the same as above.

I don't think using the filename as a key in a dict is so great. What about instead a list of dicts with two specific keys: [{"file_path": fname, "object_path": "tree;1"}, ...]

I don't think using the filename as a key in a dict is so great. What about instead a list of dicts with two specific keys: [{"file_path": fname, "object_path": "tree;1"}, ...]

But then you'd have to remember the spellings of those keys: "file_path" and "object_path". They become part of the API that has to be remembered or looked up. If I'm in a LISPy mood, I'd be inclined to expect hyphens, rather than underscores, and maybe the whole second word is unnecessary. What you suggest would be great for a REST API, but it's pretty verbose for Python interaction.
Also, it prevents multiple files in one dict, since there can only be one "file_path" key.

These are tests of the dict method: https://github.com/scikit-hep/uproot4/blob/96e99bc09ac45b1c306b54855e1b36060f23e096/tests/test_0081-dont-parse-colons.py
Examples look like this:
one_file = uproot4.open("filename.root")
one_tree = uproot4.open({"filename.root": "treename"})
many_trees = uproot4.lazy("filenames*.root")                 # if all files have exactly one TTree
many_trees = uproot4.lazy({"filenames*.root": "treename"})   # if they don't
many_trees = uproot4.lazy(["dir1/*.root", "dir2/*.root"])    # if all files have exactly one TTree
many_trees = uproot4.lazy({"dir1/*.root: "treename", "dir2/*.root": treename})       # if they don't
many_trees = uproot4.lazy([{"dir1/*.root: "treename"}, {"dir2/*.root": treename}])   # careful about order

I don't like magical things like guessing which TTree you mean, but it has been requested a user. (Don't ask me to find the reference: it's hard to search for these things.) However, it only guesses which TTree when there is exactly one in the file (in all nested TDirectories), and if two kinds of files are accidentally mixed, it would only be successful if the requested TBranch names also overlap, which would be an even bigger coincidence than having different TTrees with the same name. ("Events" is a very popular name.)
This reminds me that I was also asked (in Uproot 3, in the mists of time) to make iteration skip over any files that are missing the requested TTree. That's a bit more dangerous, but the motivation is to not have to weed out badly written files. (Not what I'd call a careful analysis, but maybe a first look at the data.) Rather than porting that feature into Uproot 4, I've made it optional: allow_missing=False is the default, but if anyone has that problem again, I can point them to this option so they can opt into a more relaxed view.

Since there have been a few differing suggestions about what to do here, I'm not going to merge PR #81 immediately. I'll wait a day or two to let others voice their opinions, to see if there is a majority view. (@henryiii, do you have an idea?)
We don't have a formal voting system, but I'll take your suggestions into account (as I did with a lot of the names in Awkward1, where I personally preferred fewer underscores).

On a quick overview, I like the dict method that's just been merged. If one wanted to provide a colon based CLI interface, it would be easy to write:
# arg might be filename or filename:treename or filename:treename:
if len(x := arg.split(":",1)) > 1:
    arg = {x[0]: x[1]}

(which obviously wouldn't work on filenames with colons, but that would not be inside uproot, either)

But ATLAS file names have colons in them? That's an important case.

Well, I guess I should be more careful with my words so that I don't get anyone blamed for anything. It isn't that ATLAS software explicitly has colons in filepaths. However, one of the most widely used analysis frameworks that people in ATLAS have developed on their own is xAODAnaHelpers and the following xAH_run.py example command
xAH_run.py \
    --config config/config.py \
    --files data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061 \
    --inputRucio \
    --nevents 10000 \
    --force \
    direct

results in an output file directory structure that includes (given the options in the config/config.py) a file at the path of
data-tree/data16_13TeV:data16_13TeV.periodA.physics_Main.PhysCont.DAOD_JETM1.grp16_v01_p4061.root

I'll wait a day or two to let others voice their opinions, to see if there is a majority view.

Thanks. I don't have very strong API views at the moment (but I'll try to actually think on it now). cc the rest of pyhf for this (@lukasheinrich, @kratsg) and also @alexander-held and @masonproffitt.

fwiw, ROOTs TFile::Open seems to be able to handle colon for the paths after the fact pretty well. You could split this up into trying to be smarter about things automatically:

check if file is valid path before splitting
check if colon split from the right is a valid path

then loudly complain you can't find the file. At least you handle both cases this way... but I'm still not really sure how many people use the :/path/to/obj functionality (it does exist in ROOT, but it doesn't seem like a common feature...)

I'm still not really sure how many people use the :/path/to/obj functionality (it does exist in ROOT, but it doesn't seem like a common feature...)

Really? I had no idea! I guess that strengthens the case that colon is a natural character to use—more easily guessable—if it was independently chosen. (Do they require the leading slash? That effectively makes the delimiter ":/", which is less likely to conflict in real paths—you'd need a directory to end with a colon.)
About checking both with and without object path to see if the file exists, the remote protocols (HTTP and XRootD) would require an extra round trip for that. Also, what if (rare case, admittedly) both exist?
Earlier today, I wanted to remove the colon thing altogether because simple is better than clever. However, there are those functions that take many files, or more specifically, many file/tree combinations. The driving consideration is finding a syntax that simplifies the specification of many files/trees, and the single file/tree should be a special case of that. The dict thing works, but maybe it's strange looking or not guessable? If there are better ways to express many files/trees, let me know.

I find the existing colon functionality very convenient. One use case I have in mind are frameworks for histogram production. Users need to specify where all the inputs to their histograms are found. The existing syntax allows to do that in just one string, users could e.g. write
mc_samples/{SAMPLE_TYPE}.root:{SYSTEMATIC_VARIATION}

and specify a list of sample types and systematic variations to fill in the placeholders. If the paths inside and outside the ROOT file need to be specified separately, two such strings would be needed. Having it all in one string also reinforces the idea that for the structure of the data it does not matter much whether something is in a directory or a TDirectory.
If one takes the above example but puts everything into a big root file, the string would look like
mc_samples.root:{SAMPLE_TYPE}/{SYSTEMATIC_VARIATION}

and it is quickly evident that the structure of content is the same. This is harder to parse when split up.
Since it came up above: I've had to deal with file structures before where folder names ended with .root (and those folders contained ROOT files), but due to the name the folders mistakenly were interpreted as a ROOT file (this was with ROOT, not uproot). Relying on this to parse might not always work.

Ok, it seems I've mispoken and what I'm remembering is a feature that hadd supports but that TFile and TFile::Open does not:
hadd target_path.root:/pathtomerge in1.root in2.root

will only hadd-merge everything under that path. I tried googling to find an actual example, but alas, cannot... In any case, the TFile documentation indicates that they still strongly recommend suffixing with .root at the end of the file path... not sure why, but they rely on TUrl to parse all file paths given.
Anyway, if it were me, I would want pathlib.Path(...) to be treated as a file path without parsing for the colon to get around this, rather than treating it as a string (which the current behavior seems to be).

There have been quite a few comments about the colon syntax being useful; one on Slack. Maybe it needs to be reinstated. (The syntax issues with URLs and Windows drive letters have been resolved; what remains is @matthewfeickert's issue about it being an unpleasant surprise when you don't know about it.)

What do people think about allowing the colon syntax but requiring the object path to start with a /, and hence the delimiter is effectively :/, rather than just :?
What about allowing both strings/Paths, which parse colons, and the dict syntax shown above, which do not? The dict syntax could then be the way to escape colon parsing, instead of parse_colons=False parameter.

I can also add a detailed explanation of the syntax in all "file not found" error messages (local files, HTTP, etc.). If the colon parsing fails, the very likely error will be file not found, so that's when and how users can be informed. (Again, we don't assume everybody's read the documentation!)

By the way, unrelated, but I finally understand why vi my_broken_file.py:123 doesn't automatically try to open the file and go to line 123 ( +123 does, FYI); it's a valid filename on some systems.
I like option 2, I think.

I like option 2, I think.

Which one is option 2?

Colon parsing by default, but not in the dict syntax. Assumes that colons in filenames are somewhat rare, which I expect they are?

Colon parsing by default, but not in the dict syntax. Assumes that colons in filenames are somewhat rare, which I expect they are?

rucio relies on scopes for filenames, and scopes are separated with colons: mc15_13TeV:{filename} and when downloading, will include the scope as well. Dataset discovery relies on these scopes.

Repeating comment from Slack: I do use :/path/to/tree fairly often (when the CMSSW TFileService is used to create a TTree, that TTree resides in a TDirectory).

Assumes that colons in filenames are somewhat rare, which I expect they are?

I made the same assumption, based on some web-research. I saw somewhere that colons aren't allowed at all in MacOS filenames, but @kratsg said that this restriction only applied to MacOS 9 and below, and possibly OSX in a compatibility mode.
(I remember MacOS 2‒9 used : instead of / as a delimiter between directories, so the character was not allowed for the same reason that / is not allowed in filenames of modern filesystems. MacOS 1 didn't have directories.)

Well, I guess I should be more careful with my words so that I don't get anyone blamed for anything. It isn't that ATLAS software explicitly has colons in filepaths. However, one of the most widely used analysis frameworks that people in ATLAS have developed on their own is xAODAnaHelpers...

...which leads naturally to colons in filenames, and that's how this all came up. @kratsg just mentioned above that Rucio can put colons in filenames, so we'll probably start seeing it in CMS, too.
I'm leaning toward this "option 2" as well. I think the main open question for me is whether to require a / after the :, such that :/ is the true delimiter.
Probably the most important thing is that the precise rules are printed to the screen in every "file not found" error message, so that people can adjust after a first attempt.

Colon parsing by default, but not in the dict syntax. Assumes that colons in filenames are somewhat rare, which I expect they are?

rucio relies on scopes for filenames, and scopes are separated with colons: mc15_13TeV:{filename} and when downloading, will include the scope as well. Dataset discovery relies on these scopes.

Right, this is exactly what I'm familiar with in dealing with my own analysis files. I think it's important for a filename like foo:bar.root to work in the standard string syntax. This is a very common case (for ATLAS at least). I like dropping the colon parsing entirely myself, but I think requiring :/ is probably still good enough.

Since the colon parsing is a convenience and gaps in many-file functions can be filled in with the dict syntax, how about if it only works in limited circumstances, such as after .root? (@tamasgal originally made this suggestion.) So,

/path/to/filename.root:path/to/ttree picks out an object at path/to/ttree (requiring .root makes requiring a leading / in the object path superfluous, since it's already quite unambiguous, and it's a potential "gotcha")
/path/to/file:name.root would be interpreted as a file, not a "name.root" object path within a file, since "file" doesn't end in ".root"
/path/to/file:name.root:path/to/ttree also picks out an object at path/to/ttree from a file named file:name.root; earlier colons are part of the filename
use the dict syntax if you really need to ensure that colons are never parsed; {"/path/to/file.root:haha-this-is-the-filename.root": None} won't parse the colon and won't pick out an object within the file because of the None value
use the dict syntax if you need to pick out objects and your files do not end with .root, or you're using wildcards that don't end in .root (a likely example: /path/to/directory/*). This is for functions that need to find many files, such as uproot4.iterate, uproot4.concatenate, and uproot4.lazy.

The colon parsing will be much simpler, based on the regex \.root\s*:\s*, because I'll never need to worry about Windows drive letters or URL schemas with the \.root disambiguator.
Thumbs-up this comment if you're in favor, write another comment below if you're not; I'm going to start coding up this solution and if we're in general agreement, I'll merge it.

There's still a problem with requiring .root:. Another thing that I often see (again from rucio) is filenames ending with a number like .root.1. For a random public example, see https://twiki.cern.ch/twiki/bin/view/Sandbox/GridNotes.

@jpivarski , I think you shouldn't change the parsing too much to try and support so much. What I think should happen is the following:

str or bytes passed in: be "smart" and parse out colons and figure out what the user wants
pathlib.Path -- assume this is openable via path.open() instead of trying to convert to string and parsing
file pointer (an already opened file) -- just load that up, no need to call open etc...

Is this not at all possible to do? Then if users really start having more complicated files that, for whatever reason, is borking the magic of uproot, then can be more specific step by step, going from str to Path to a filepointer object. The nice thing with that last option, I hope, is that one can use BytesIO as input as well...

For files ending in .root.1, etc., I would have thought you're out of the easy case and have to start using dicts. The error message would say that. Would that be a big imposition?
I hadn't considered having different behavior for str/bytes than for pathlib.Path. Would that be more expected?
Also, on accepting an already open Python file-handle (loosely interpreted as anything with read and seek, like io.BytesIO), Uproot has never had this capability, but it would be possible. It would exclude parallel reading of baskets, but you get what you pay for. That could become a new Source subclass, but it's beyond the scope of this issue.

Since there are no thumbs up on the previous proposal and two objections thereafter, how about the following:

No consideration for whether a .root substring is found.
If a str or bytes is passed, do the colon parsing as before (many people have said that they want it, though it can be a stumbling block, as in @matthewfeickert's case that started this thread).
If a pathlib.Path is passed, do not do colon parsing, which is a good way of enforcing what you want in uproot4.open, but would be limiting in functions that need to open many file-tree combinations, such as uproot4.iterate, uproot4.concatenate, and uproot4.lazy.
Support the dict syntax, which also does not do colon parsing, since the key-value separation distinguishes between file path and object path. This is the most general way to express a file path and object path, particularly useful for expressing many flie-tree combinations, and its limit for uproot4.open is a length-1 dict.
All "file not found" errors explain the rules clearly with examples.

What does everybody think of this? Thumbs up or comment: thanks!

Is there something wrong with using :/ as the delimiter? That seems like the easiest way to (I think) satisfy everyone.
In any case, I'm confused as to what the dict syntax is when you just want to open a file with a colon in the filename. Is it:

uproot.open({'foo:bar.root': None})?
uproot.open({'foo:bar.root': ''})?
uproot.open({'foo:bar.root': '/'})?

or some/all of the above? Yikes. Actually, I guess it can't even be '', since that's a valid key. My problem here is that this suddenly makes something as simple as opening a file more confusing and results in inconsistent behavior between different filenames. It's very not beginner-friendly, as you now need to know about dictionaries and their syntax and a bit about TDirectory before you can even look at anything in the ROOT file.

(I've actually been distracted by other work, so just getting back to this now.)
One difficulty with optimizing usability is that "what is natural" or "what a novice might try" is rather speculative. I would expect novices (including me, approaching a system I don't know) to get tripped up by the requirement that the object path has to be expressed as absolute, i.e. that it must start with :/blah and not just :blah, even though it is always going to be evaluated relative to /. (This was confusing in the file URI scheme, for example.) I'm not of a strong opinion about this point, though, because I think the error message is where the wide array of users' guesses as to how it works will get narrowed down to how it actually does work—assuming users read error messages. (Sometimes a problem, but not a deep one if they copy-paste the error message into the bug report for me to read.)
The other difficulty with optimizing usability is that expectations among advanced users become necessities. I hadn't known (I guessed right) that the colon syntax was an expected feature, and so losing it would be a stumbling block for users who expect it from ROOT.
But the thing that's driving the dict syntax is neither of the above. It's driven by the functions that access many file-object (actually, file-TTree) pairs. They need a way—not a convenient way but any way—to express combined filesystem + ROOT object paths for hundreds or thousands of files. If we could have used the colon syntax for that, then that would have been great. But some filesystem paths have colons in them. In principle, a directory name could end with a colon, which would get incorrectly identified as :/. So the many file-object functions need to have a backup syntax for when the string syntax isn't expressive enough, and that's what the dicts are. Only one other suggestion has been made that would be as unambiguous, but it's pretty verbose and introduces more things to remember.
So novice users do not need to know about the dict syntax; it only comes up if they can't express a group of filenames + object paths because the filenames have colons in them, and then it comes up as an error message because when they tried to do the naive thing, it couldn't find the file.
I'm going to implement the last proposal I made. I considered not porting the dict syntax from the functions that need it (uproot4.iterate, uproot4.concatenate, uproot4.lazy) to the function that doesn't really need it (uproot4.open, for which only a length-1 dict would be allowed) because the "file not found" error messages don't know whether they're from an attempt to open a single file or many files, and tracking that provenance through everything so that they can give context-dependent error messages doesn't seem worthwhile. Making the same syntax apply to all functions equally, even if it's not really needed for one of them, is simpler.

In any case, I'm confused as to what the dict syntax is when you just want to open a file with a colon in the filename. Is it:

uproot4.open({'foo:bar.root': None})?
uproot4.open({'foo:bar.root': ''})?
uproot4.open({'foo:bar.root': '/'})?

or some/all of the above?

I think the first and third would work; the second wouldn't for the reason you mentioned. But the preferred way to do it, following @kratsg's advice about pathlib.Path, is

uproot4.open(pathlib.Path("foo:bar.root"))

No colon parsing would be performed on a pathlib.Path, and since this is uproot4.open, there's no reason to bring in any fancy dicts because you don't have to specify a TTree path. For uproot4.iterate, uproot4.concatenate, uproot4.lazy, you do have to specify TTrees because you're iterating over, concatenating, or building lazy arrays from TTrees, not files. There wouldn't be a good reason to make the value in a dict None, though it would work, for consistency's sake.
The error message should not only say what's possible, but should say what's preferred. Now I'm finally going to go and implement that.

In the end, the error messages look like this:
FileNotFoundError: file not found

    '/really/long/path/that:in:the:end/is/not-a-file.root'

Files may be specified as:
   * str/bytes: relative or absolute filesystem path or URL, without any colons
         other than Windows drive letter or URL schema.
         Examples: "rel/file.root", "C:\abs\file.root", "http://where/what.root"
   * str/bytes: same with an object-within-ROOT path, separated by a colon.
         Example: "rel/file.root:tdirectory/ttree"
   * pathlib.Path: always interpreted as a filesystem path or URL only (no
         object-within-ROOT path), regardless of whether there are any colons.
         Examples: Path("rel:/file.root"), Path("/abs/path:stuff.root")

Functions that accept many files (uproot4.iterate, etc.) also allow:
   * glob syntax in str/bytes and pathlib.Path.
         Examples: Path("rel/*.root"), "/abs/*.root:tdirectory/ttree"
   * dict: keys are filesystem paths, values are objects-within-ROOT paths.
         Example: {"/data_v1/*.root": "ttree_v1", "/data_v2/*.root": "ttree_v2"}
   * already-open TTree objects.
   * iterables of the above.


Merge feature branch into develop

Ticket: []
Feature flag: n/a

Purpose

Summary of Changes

Screenshot(s)

Side Effects

QA Notes

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

252 of 633 (39.81%)  changed or added relevant lines in 52 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-2.4%) to 70.415%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

app/guid-file/controller.ts
0
1
0.0%

app/helpers/floor.ts
0
1
0.0%

app/helpers/get-anything.ts
0
1
0.0%

app/packages/files/dropbox-file.ts
0
1
0.0%

app/packages/files/google-drive-file.ts
0
1
0.0%

app/packages/files/one-drive-file.ts
0
1
0.0%

app/packages/files/osf-storage-file.ts
10
11
90.91%

app/packages/files/osf-storage-provider-file.ts
12
13
92.31%

lib/osf-components/addon/components/file-browser/folder-item/component.ts
5
6
83.33%

lib/osf-components/addon/components/file-renderer/component.ts
1
2
50.0%

Files with Coverage Reduction
New Missed Lines
%

app/models/file.ts
1
36.84%

Totals

Change from base Build<PHONE_NUMBER>:
-2.4%

Covered Lines:
5209

Relevant Lines:
7183

💛  - Coveralls


Scroll Bar problem

Hello!
In the 2.0.3, the following steps leads to block scrolling  sidebar's
1: Load the dashboard in a maximed window.
2: Click on the "Fixed" layout configuration.
3: then scroll with keybord up and down arrow key ,its not scrolling

Hello,
Which browser are you using? On chrome this is not an issue.

Hello!
Using keyboard up/down scrolls the main content up/down, not the sidebard if fixed layout is activated. I think that is the issue athenaneo reported.
At https://almsaeedstudio.com/themes/AdminLTE-dev/index2.html the problem can be reproduced.
I'm using Chrome 42.
Best regards.

@rafael-renan-pacheco that's correct. This would be an issue caused by the SlimScroll plugin. I think it is time for an upgrade since SlimScroll is causing multiple issues other than this. I will look into it and see if I can find a better plugin that serves a similar purpose but better. Thanks!

thank you for helping me, Kindly requested you to upgrade the plugin and inform us.

Changing the plugin would be a problem since many users already integrated it into their version of AdminLTE. We follow the rules of semantic versioning, which does not allow for major changes unless a major release has been issued. In our case, this would only be possible if we release AdminLTE 3.0, which we are a long way from. I appreciate that you have reported this issue, and apologize for not being able to help you any further.


add common repo templates for new open cluster management repos to follow

Signed-off-by: Mike Ng<EMAIL_ADDRESS>

open-cluster-management/backlog#10367

thanks, it looks fine. I think we should have an instruction from community's Readme to ref to this template also
/approve


Import event from facebook

How to reproduce the user scenario

Create your profile in Oferecer Serviço
Try to create a new Truppie
Import event from Facebook
Nothing happens

Design or screenshot attached

Instructions of how to made the change proposal
Acceptance criteria

[ ] Click in "Import events from facebook"
[ ] The dialog to choose the events that should be imported appears

Requirements to run the project

Ruby
Postgres
Be adminstrator
You need to create the .env file with the following content:

 ADMIN_EMAIL=youremail
 ADMIN_EMAIL_ALT=othermail

How to work on this task

Make a comment here
You will be invited and be assign to the task
Fork the project
Clone the repo with git clone and run rails s to start the project

rake test (run tests and make sure is green)
rails db:migrate (Run the migrations for the database)
rails s (Rodar o projeto)

Make the necessary changes to this issue
Send a pull request
Verify if your changes didn't break the automated tests
A new application will be created to be validated
You will receive feedback from team members
You will send changes until is approved
You get a approve 👍
When the Pull Request is merged, if is a paid task, the payment is send

If you have any doubt or need help just comment and you will be supported
How to avoid issues when send the pull request
Para que seu Pull Request seja aceito sem maiores problemas e integrado diretamente para que possa ir para produção você deve sempre estar integrado com o master do projeto, sempre usando rebase como padrão.
You should be always up to date to the upstream master and use always rebase as default
If you have doubts about it see this post

I think this is related with #89


Add Taura sheet

Changes / Comments
Added the character sheet for the spanish roleplaying game Taura, from Juan F. Donoso, published by Nosolorol.
Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

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

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

This a very pretty character sheet.

@Ravencrow The sheet was added but it appears to have some issues. Can you check on it and see if you can fix them? We will need to resolve them for next week code update or I will have to remove the sheet from the select

Cassie

@clevett on it. Is there any previewer for the characters sheets before merging them?

You'll need to have a Pro account and load it into a game for testing.

@clevett Ok, Cassie, I have subscribed a pro account, and I have found the online editor. I have copied the HTML and the CSS and I can preview it but... this sheet depends a lot on the background, which is the sheet itself.
So, my question is... how can I upload a picture so I can see the html elements over it?
Thanks in advance for the answer :)


feat: Add blurr boom project files

Fix #47
Project Working Images

Please review the PR and add the relevant labels.

can you just sync fork so the previous  commit get added


Can't aggregate calculation results of the Math processing element

Apache StreamPipes version
dev (current development state)
Affected StreamPipes components
Processing Elements
What happened?
When calculating a new field with the  Math processing element, you can only aggregate the calculation result with First, Last, Mode and Count in the Data Explorer, but you can't use Mean, Min, Max or Sum.
How to reproduce?
Create a pipeline, use a data source with two numerical fields and use the  Math processing element to calculate a new field:

When you agregate the calculation result with First every thing is fine:

But if you try to show the Mean it does't work:

Expected behavior
Maybe there's an error with the type of the calculation result.
Additional technical information
No response
Are you willing to submit a PR?
None

Hi @SvenO3 @bossenti , I'd like to try to work on this issue. Could you assign it to me, thanks! :D

Awesome 🤩
Already done

Hi @SvenO3 @bossenti , I'd like to try to work on this issue. Could you assign it to me, thanks! :D

I think I know where the problem is, but it might still take me some time to solve... So, you can assign it to me if there is no hurry 😃

Awesome 🤩
Already done

Oh thanks!!! Will try my best to fix it.


Upgrade to PHP 7.4

Fixes https://github.com/dependabot/dependabot-core/issues/1730

👍 for merging this as soon as possible.

Is https://github.com/marketplace/dependabot-preview updated automatically or only this repository. 😕

Yeah will be, we’re pushing a release out, will be out later today.

Yeah will be, we’re pushing a release out, will be out later today.

Perfect! Thanks

Yeah will be, we’re pushing a release out, will be out later today.

Will the dependabot-preview Service on Github always be the newest version of this repository?

@FabianKoestring yeah should be but takes some time for all the tests and images to build. This should be out, still having issues?

@FabianKoestring yeah should be but takes some time for all the tests and images to build. This should be out, still having issues?

No, just asking. Thanks


Improve title extraction by removing sitename suffix

Most os sites add a suffix like:

My article title | My Site Name
My article title - My Site Name

There is no need the sitename within the article title
Common separators are: - | – — • · ‹ › ⁄ « » < > : * ⋆ ~
Some sites use html entities for this, like: —

Hi @andremacola, thanks for the observation. I agree that it should be possible to process the titles as you suggest. However it is imaginable to see titles in the form sitename + separator + article title, there is currently no way to make sure where the actual title is.
We could start by using the separator list you mention to see if things improve a bit, what do you think?

@adbar I think we can do some logic to Identify the title within the text like newspaper3k or article-parser(node) do.
Maybe we can create something like Mozilla does on Readability.js (which article-parser use): https://github.com/mozilla/readability/blob/fde359445cc96888fd8fa9717d336558ace83a5d/Readability.js#L459

We could adapt the approach, would you be willing to draft a PR?

I don't think I've ever seen a site with this pattern sitename + separator + article title. At least not in Brazil. This would seriously affect the SEO.
I'm pretty busy for now, maybe in the near future we can create a more elaborate filter
Meanwhile I'm using this simple function and for my use it's ok.
TITLE_SEPARATORS = ["-", "|", "–", "—", "•", "·", "‹", "›", "⁄", "«", "»", "<", ">", ":", "*", "⋆", "~"]

def title_filter(title: str):
    for separator in TITLE_SEPARATORS:
        if f" {separator} " in title:
            title = title.split(separator)[0]

    return title.strip()

I just added additional symbols, detection of the actual article title in the HTML title tag should now be better.
I'm leaving the thread open as we could make some progress on the sitename as well.

Extracting the sitename from the second part of the <title> element would be too brittle, I'll close this issue as its main point is now addressed.


Consider properties interface

If we want to be able to serialise properties generally it might be that our current implementation is not sufficient.
Perhaps we should move to something rigid like setProperty(String key,  value).

Do you have an example of why the current classes may not be sufficient?

You could currently do this:
    Function<String, Integer> f = s -> s.length();
    Map<String,Object> p = new HashMap<>();
    p.put("func", f);


Marketplace product

One need to make this component using HTML and Tailwind CSS. I would suggest to use Tailwind Playgrounds to make things faster and quicker.
Here is a reference to the component.

After building the component please raise a PR with a screenshot of the component and add the component in path of the file.
If you need to use any icon please use it from Hero Icons
Good luck.

Go ahead. @hritikbhattacharya

@Rajdip019  i want to work on this part


feat : Add orphan checkpoint retention policy

This PR introduces the orphan checkpoint retention policy, allowing users to control whether orphaned checkpoints are retained or deleted.

The new retainOrphan field is added across global, container, pod, and namespace policies.
By default, orphan checkpoints are retained, but users can configure this behavior by setting the retainOrphan field to false.

@Parthiba-Hazra Would it be possible to rebase this pull request on the main branch?


Postgis chart

Added postgis chart
meectl can deploy/delete as dependency

Wrong branch... will re-submit


⚠ SceneTime has degraded performance

In 3f368c7, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1858 ms

Resolved: SceneTime performance has improved in dd97bf7 after 9 minutes.


error: stored property 'xcTestCompatibleSelector' of 'Sendable'-conforming struct 'Test' has non-sendable type '__XCTestCompatibleSelector?' (aka 'Optional')

Description
Using swift-6.0-DEVELOPMENT-SNAPSHOT-2024-06-12-a.xctoolchain on macOS, I'm unable to use swift testing because of this error.
Expected behavior
I expect swift test --disable-xctest would build and run my tests.
Actual behavior
.build/checkouts/swift-testing/Sources/Testing/Test.swift:69:14: error: stored property 'xcTestCompatibleSelector' of 'Sendable'-conforming struct 'Test' has non-sendable type '__XCTestCompatibleSelector?' (aka 'Optional<Selector>')
 67 |   /// property is always `nil`.
 68 |   @_spi(ForToolsIntegrationOnly)
 69 |   public var xcTestCompatibleSelector: __XCTestCompatibleSelector?
    |              `- error: stored property 'xcTestCompatibleSelector' of 'Sendable'-conforming struct 'Test' has non-sendable type '__XCTestCompatibleSelector?' (aka 'Optional<Selector>')
 70 |
 71 |   /// An enumeration describing the evaluation state of a test's cases.

ObjectiveC.Selector:1:23: note: struct 'Selector' does not conform to the 'Sendable' protocol
1 | @frozen public struct Selector : ExpressibleByStringLiteral {
  |                       `- note: struct 'Selector' does not conform to the 'Sendable' protocol
2 |     public init(_ str: String)
3 |     public init(stringLiteral value: String)

Steps to reproduce

Install swift-6.0-DEVELOPMENT-SNAPSHOT-2024-06-12-a.xctoolchain from swift.org
Run swift test --disable-xctest

swift-testing version/commit hash
da1d5acb333dc480081aebf0670ea43d0a733c85
Swift & OS version (output of swift --version ; uname -a)
Apple Swift version 6.0-dev (LLVM 6e13b8be259f20f, Swift e7c2412597ed910)
Target: arm64-apple-macosx14.0

Darwin m14 23.6.0 Darwin Kernel Version 23.6.0: Thu Jun  6 16:11:38 PDT 2024; root:xnu-10<IP_ADDRESS>.1~13/DEVELOPMENT_ARM64_T6000 arm64

I coincidentally just encountered this build failure also, but only when attempting to build using a newer Swift 6 development snapshot toolchain paired with an older Xcode 15.x. The newer Xcode 16 Beta contains SDKs whose ObjectiveC module has the Selector type marked Sendable, but earlier versions did not, so building using Xcode 16 Beta succeeds.
The other relevant factor which changed recently is that swift-testing's Package.swift changed to swift-tools-version: 6.0 in #467, and that in turn caused all of the package's targets to begin using the Swift 6 language mode.
I do not yet understand why this failure is not being hit by our CI system though, since it's using Xcode 15.1.

That makes sense, I also have an older Xcode:
Xcode 15.4
Build version 15F31d

At this point, unless we identify some hard blocker which forces us to continue supporting versions of Xcode earlier than 16 Beta, we are inclined to close this and not make any workaround code changes. To anyone who encounters this problem, please ensure you are building using Xcode 16 Beta or later. This requirement has already been documented as part of the changes in #466

Resolved by #582.


Display subject name if search results suggests only 1 course [wip]

Context
This is to clarify that the search results are relevant to the query.
We don't display any subject if there's more than one selected.
Changes proposed in this pull request
Adds a new field to the View Model and calls it in the view when necessary.
Guidance to review
I'm not sure if this needs ?.'s? IDE didn't complain…
Screenshot

WIP-ing as the subject should not be capitalised.


[Backend] Consider using MapStruct library

currently we're using constructor-based to map from DTO to entity and vice versa. As we're using Java 17, please consider to use MapStruct to reduce verbose code
ref: https://mapstruct.org/documentation/installation/

I am not sure this is a good idea. Our domain entity and dto don't have too many fields. I prefer to keep thing as simple as possible.


In the qq browser and safari browsing click progress bar can not jump, and will play again

qq浏览器和safari浏览点击进度条无法跳转，并且会重头播放
In the qq browser and safari browsing click progress bar can not jump, and will play again

version:"dplayer": "^1.25.0"
use in the nuxt.js
code:
import('dplayer')
.then(DPlayer => {
this.dp = new DPlayer({
container: this.$refs.player,
video: {
url: this.url,
pic: item.thumb
},
autoplay: false
})
resolve(this.dp)
})

@DIYgod

随便提一下，在v1.20.1中父元素使用transform: translate(-50%, -50%);的时候也会有这个问题

same here!

@AllenZho I tried a few hackings. Changing the getBoundingClientRectViewLeft method to the classic getElementViewLeft method in the src/controller.js and rebuilding it might fix this issue temporarily.
Hope the @DIYgod might find a permanent fix for this in the future.
Good luck!

Thank you, I am temporarily lowering the version to handle this.


Release v134

To pick up #240 & #241.
GUS-W-11283397.

Published:
$ ./etc/publish.sh
Deploy as version: v134 [y/n]? y

Tagging commit 2412c2c3a21ca92b67e350709446cb9e07ed67fd with v134...
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/heroku/heroku-buildpack-jvm-common
 * [new tag]         v134 -> v134
Two-factor code: ********************************************
Publishing buildpack heroku/jvm... done
Publishing buildpack was successful
Updating previous-version tag
Deleted tag 'previous-version' (was 624283f)
To https://github.com/heroku/heroku-buildpack-jvm-common
 - [deleted]         previous-version
Updating latest-version tag
Deleted tag 'latest-version' (was 25840a5)
To https://github.com/heroku/heroku-buildpack-jvm-common
 - [deleted]         latest-version
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/heroku/heroku-buildpack-jvm-common
 * [new tag]         latest-version -> latest-version
 * [new tag]         previous-version -> previous-version
Done.


Possible issue with requestPurchase promise

This is not a confirmed bug, since I'm rewriting my app to v3/v4 and haven't tested it manually yet. These are just some observations and a feature request.
Firstly, I've examined iOS and Android requestPurchasepromises and found inconsistency. On iOS, promises are resolved on per-purchase basis:
[self resolvePromisesForKey:RCTKeyForInstance(transaction.payment.productIdentifier) value:purchase];

On Android it seems that there's one promise for all requestPurchase calls:
DoobooUtils.getInstance().resolvePromisesForKey(PROMISE_BUY_ITEM, item);

I'm not deeply familiar with IAP flows, but it seems that if user tries to buy 2 products in quick succession, then one of the requestPurchase calls might never reject or resolve. Or maybe it'll throw because of resolving same promise twice. Why not use product identifier as promise key as on iOS?
Secondly, a related issue. When requestPurchase rejects, it's possible to know which purchase has failed, because requestPurchase arguments are in the same scope. However, purchaseErrorListener receives only the error code and message, so there's no way to know which purchase failed. So I think productId field should be added to PurchaseError.
Version of react-native-iap
next branch
Version of react-native
Platforms you faced the error (IOS or Android or both?)
Expected behavior
Actual behavior
Tested environment (Emulator? Real Device?)
Steps to reproduce the behavior

I am using version 3.4.12 and am having an issue with requestPurchase's promise on Android.
The problem I am having with it is that it never resolves after going through the purchase process. Interestingly, it rejects if I cancel the process halfway, but if I finish the process, it never resolves.

I've reviewed #724. requestPurchase should not resolve promises in the next major release which you can use by yarn install react-native-iap@next.

What about the second part of this issue?

However, purchaseErrorListener receives only the error code and message, so there's no way to know which purchase failed. So I think productId field should be added to PurchaseError.

Without this purchaseErrorListener is useless and I have to use promises.

What about the second part of this issue?

However, purchaseErrorListener receives only the error code and message, so there's no way to know which purchase failed. So I think productId field should be added to PurchaseError.

Without this purchaseErrorListener is useless and I have to use promises.

Thanks for your thought. I'll consider this for the next release.


i3-cycle-focus.py: cycle through all previously focused windows

Kind of related to #50, I extended the script focus-last.py to be able to cycle through all previously focused windows.
I wanted to emulate the Alt-Tab behaviour of other window managers like Openbox. But i3 doesn't allow to trigger an action when the Alt key is released.
So I use a timer to update the focus history after a certain span of time after a new window has been focused.
The previous behaviour of the script (toggling between the current and the previously focused window) can be restored by setting --delay 0.0.

Yes, I can change it into another example file.
I figured I want to add switches to ignore floating windows and to only include windows on the active/visible workspace(s). I will update my pull request when I will have added those.

@acrisci Extended the script and moved it to a new example.

Cool, good example script :+1: .
What about alt-shift-tab to cycle forward in the list?

Thank you :-) I didn't think about that because I never used that with other window manager. But I guess that it's not a big deal so I will add it.


Interactive feature plot

🚀 Feature

Provide interactive feature plot (1D histogram or 2D scatter plot) to
(1) Provide visual on feature value distribution
(2) Use upper/lower limit, or free-hand ROI to select objects on feature plot
(3) Highlight/copy objects on canvas based on the selection done in (2) to understand their physical distribution
Motivation
Currently several plugins provide this function, for example:
napari-properties-plotter
napari-clusters-plotter
With Use pandas DataFrame to store layer features recently merged, there may be a more consistent way to retrieve features for plotting across different layer types, to leverage features derived from different plugins, etc.

Pitch
This function is domain-agnostic, widely used, and very useful for downstream analysis, either to directly explore features, or to understand results of analysis like dimensionality reduction.

Alternatives
Continue to use existing plugins and improve/expand upon them.

Additional context
Imaris implementation example.
@andy-sweet @haesleinhuepf

Hi @chili-chiu ,
that sounds like a great idea to work on. Let me just get @jluethi in the loop and link his napari plugin which also works in a similar context:
https://github.com/jluethi/napari-feature-visualization
📈🌞


Support FieldSet expressions

Small PR that adds support for Expr.FieldSet expressions

tests?

@dsyme done

@dsyme FYI the solution doesn't build in 2017 because apparently portable is not supported.

@eiriktsarpalis  PCL are supported, it will be some msbuild problem as always...

@manofstick Would you like to republish the nuget package?  Or @eiriktsarpalis we can make you a co-maintainer?

@dsyme sure.

Thanks @eiriktsarpalis, I'm finding it increasingly difficult to dedicate my time to my outstanding open source projects due to family and work commitments.

@eiriktsarpalis You're in https://github.com/fsprojects/FSharp.Quotations.Evaluator/pull/20

Thanks. Could you possibly add me as owner in the nuget package as well?

Invitation sent :)

👍


Document a simple .d.ts file with no export keyword

Expected Behavior
I would expect to see the generated document.
Actual Behavior
But the output is empty.
Can anybody point me a direction? is it possible?

As far as I know only exports are documented. See: https://typedoc.org/guides/options/#entrypoints

TypeDoc has some special casing for global files that makes most reasonable cases work.. and without more information here I'm not sure what you aren't seeing @librehome. The following:
const x: number
function y(): boolean

Will result in documentation for x and y

Thanks. I've got it to work.
I had to copy the .d.ts file into a separate folder and generate doc only with that file so that other source filed won't pollute the result.


@cache_for_request doesn't work when method returns a Pandas dataframe

Hello,
Thanks so much for putting this together. When I try to use @cache_for_request on class methods that return a Pandas dataframe I get the following error: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Exception Location:
/Users/dbenami/Dev/ImpactTracker/src/ImpactTracker/lib/python3.7/site-packages/pandas/core/generic.py in nonzero, line 1479

Please let me know if there is more useful information I can share. In the meanwhile I still find your package useful for reducing sql queries.

I'm unsure if the issue was linked to a previous version of pandas, but with the latest release, there are no problems, see #18


Angular 2 new router (v3)

I'm submitting a ...
[ ] bug report
[ ] feature request
[X] question about the decisions made in the repository

Do you want to request a feature or report a bug?

Do you think you'll update this to the latest Router used by Angular 2 ?
The latest router info can be found in this post http://victorsavkin.com/post/145672529346/angular-router
and as an exaple of it being used here
http://plnkr.co/edit/ER0tf8fpGHZiuVWB7Q07?p=preview

What is the motivation / use case for changing the behavior?

I think we should adopt the latest router since that is what Angular2 is going with.

Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc)

+1

+1

@L0rDPSYCH0 yes, we do have such plans, however we don't want to rush so still waiting while things are really stable.

+1

+1, looks like things are becoming more stable.

+1

done in https://github.com/akveo/ng2-admin/tree/v0.4.0


CI: additional extratrees deselections

Description
Follow up to #1853 with deselection of sporadic fail not observed previously
Fixes # - issue number(s) if exists

[ ] I have reviewed my changes thoroughly before submitting this pull request.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have updated the documentation to reflect the changes, if necessary (updated in # - add PR number)
[ ] The unit tests pass successfully.
[ ] I have run it locally and tested the changes extensively.
[ ] I have resolved any merge conflicts that might occur with the base branch.
[ ] Git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details)
[ ] I have added a respective label(s) to PR if I have a permission for that.

/intelci: run

sigh

sigh

heh, nothing new, just a straggler, might be others


Depends on wxpython?

As far back as 3.3.0 I notice imports like import wx? This doesn't sound right. I am in fact packaging your software in order to satisfy the dependencies of the newer wxpython versions. Are you aware of this circular dependency?

There is no circular dependency: the import wx is in the examples folder, maybe a couple places in the docs as example of use, they are meant for people who want to test/demo/sample with wx (since that is where pypubsub originated, there is a community of users there). There may be a dynamic introspection to determine if the 3.3.0 is being run from wx. If wx is installed, some special code is used. But there is no dependency on wx: if wx is present, pypubsub starts a little differently (in that release).
For the latest wxPython, please do NOT install 3.3. I no longer maintain 3.3, it was overly complicated due to compatibility constraints on the old wxPython. What exactly are you trying to do?

I want to provide wxpython 4.0.3 for both python2.7 and 3.{4,5,6,}

Indeed. My point is you shouldn't slow down the future to support the past. Support both by import pypubsub33 vs pypubsub4, or something like that. I'm going to close this as I don't see this as being a pypubsub issue, it is a wxPython integration issue, but please don't hesitate to re-open or post on dev forum to discuss further. Thanks!


Revert "Revert "Revert "Revert "Revert "Revert "Balder/group operations to tls and commit in batches""""""

Reverts vespa-engine/vespa#14577

Superseded by #14590


I can't connect -- error: no devices/emulators found...

I installed scrcpy and when I tried to run it in cmd I get this kind of error:
C:\scrcpy>scrcpy
scrcpy 1.21 <https://github.com/Genymobile/scrcpy>
error: no devices/emulators found
ERROR: "adb get-serialno" returned with value 1
ERROR: Could not get device serial
ERROR: Server connection failed

Please help me fix this issue. Thank you.

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#device-not-detected

linking to the FAQ doesn't answer the question when one has USB Debugging Enabled and the latest drivers.
My first run of scrcpy worked well but upon restarting the android phone, the connection no longer works. I have restarted both win10 PC and android 7 phone and now get the same error above..

scrcpy 1.21

Note that v1.21 has a specific issue on Windows 7 (and sometimes Windows 10), see #2838.
Try the latest version (currently 1.23).

Thanks for the reply, I think i have fixed it for the moment.. I had to manually force close the various processes in task manager to get it to reconnect. Seems that the processes weren't ended when scrcpy closed..

I had the same issue. It appears that I had to change the USB connection use to be Transfer Files. This turn the device on to be detected using the adb devices command.


NotifyIcon vanished from 3.0.0 / 3.0.1

Describe the bug
Reading the Documentation (https://wpfui.lepo.co/api/Wpf.Ui.Tray.Controls.NotifyIcon.html) NotifyIcon should be here: Wpf.Ui.Tray.Controls
But it is removed.  In the Wpf.Ui.xml it can't be found any more.
( In the Release Candidate it was here:

Represents the implementation of icon in the tray menu as .

)
So what did I wrong or is it really absent?
To Reproduce
Just try to find the NotifyIcon.
Expected behavior
https://wpfui.lepo.co/api/Wpf.Ui.Tray.Controls.NotifyIcon should be found where it is described.
Screenshots
No response
OS version
Windows 11
.NET version
.NET 8.0
WPF-UI NuGet version
3.0.0 or 3.0.1
Additional context
No response

NotifyIcon is present in the separate package https://www.nuget.org/packages/WPF-UI.Tray since version 3.0.0

Omg... thank you very much. I would not have found it…
Is this change somewhere documented?


Allow JenkinsService to react to ProblemEvent

Is your feature request related to a problem? Please describe.
The current JenkinsService reacts to deploy, run_test and evaluate events and for those calls a Pipeline. I would like to extend this to also react on problem events so that we can use Jenkins Pipelines for auto-remediation. This would be a "1-stop-shop" solution for demoing all key keptn-capabilities with no other tool dependencies other than Jenkins, e.g: that pipeline could do the same thing as the evlauation_done pipeline does right now in case the evaluation fails -> rollback blue/green

When working on this issue, I would go one step further. Currently, the names of the pipelines are hard-coded in the jenkins-service, e.g., if a configuration-changed event comes in, the deploy pipeline gets triggered.
I would like to have a way to configure the relationship between the event and the pipeline using, for example, a config map or environment variables. Thus, customers can re-use their pipelines.
[channel]:[pipeline]
configuration-changed: deploy
deployment-finished: run_tests
evaluation-done: evaluation_done
problem: recover

Will be addressed by #450. Closing.


Fix the worker init wait time before running any *-all command

This fixes the problem where doing a plan|apply-all on a 1 module project could take about as twice as much.
The problem was in the fact that the initialization of the workers was blocking while it was intended (IMO) to be non-blocking and to let the workers be requested and waited. Instead, the init part blocks the program for 25 seconds (2500 * ms * 10 workers by default during testing) and then all workers can be started in an instant, defeating the purpose of the function.

Codecov Report

Merging #290 (a54421d) into master (9a6e345) will increase coverage by 1.89%.
The diff coverage is 46.22%.

@@            Coverage Diff             @@
##           master     #290      +/-   ##
==========================================
+ Coverage   52.46%   54.35%   +1.89%
==========================================
  Files          59       58       -1
  Lines        4182     4031     -151
==========================================
- Hits         2194     2191       -3
+ Misses       1675     1524     -151
- Partials      313      316       +3

Impacted Files
Coverage Δ

config/extension_base_list.go
0.00% <ø> (ø)

config/generated_approval_config.go
2.98% <ø> (ø)

config/generated_extra_args.go
46.26% <ø> (ø)

config/generated_extra_command.go
29.85% <ø> (ø)

config/generated_hooks.go
37.31% <ø> (ø)

config/generated_import_files.go
29.85% <ø> (ø)

config/generated_import_variables.go
29.85% <ø> (ø)

configstack/module.go
68.84% <0.00%> (ø)

dynamodb/dynamo_lock_table.go
0.00% <0.00%> (ø)

dynamodb/dynamo_lock_test_utils.go
3.70% <0.00%> (ø)

... and 34 more

Continue to review full report at Codecov.

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


Skip installing thrust support in case nvcc not found in PATH.

Currently, installing cupy fails with the following error message when nvcc is not found in PATH.
building 'cupy.cuda.thrust' extension
    error: unknown file type '.cu' (from 'cupy/cuda/cupy_thrust.cu')

This PR fix it to skip installing thrust support itself to avoid this inappropriate situation on environments where nvcc is not found.

Do we need to find nvcc command from CUDA_PATH or default CUDA directory in /usr/local/cuda? Is it dangerous?

Yes, we do. I missed what the installer script intends to find CUDA. The path of nvcc should be detected in the same way with looking up CUDA directory.
http://docs.cupy.chainer.org/en/latest/install.html#install-cupy-with-cuda

LGTM


Fatal Error C1128: "number of sections exceeded object file format limit : compile with /bigobj"

Hey guys,
first of all thanks to the team for this amazing project, i can't wait to produce my first own prints based on S^3-Slicer.
When trying to build the application on two different Windows System i ran into the same error stated above.
The solution that worked for me was to add "/bigobj" to "Configuration Properties > C/C++ > Command Line > Additional Options" to the ShapeLab Property Page as shown below.

If this was a general error occuring on other systems as well, it might be useful to add this to the installation part of the documentation.

Thanks for your reminder, The related problem has been modified in the README.md


attrs.org does not redirect to https url

currently, http://www.attrs.org/ (http) is a working website. and so is https://www.attrs.org/ (https).
the website should only be reachable over https, and the http version should redirect.
(noticed this via some search results hits that somehow poiinted to the plain http site.)

The domain is served through RTD and i have set the https-only option, but I believe it doesn't work. Alex Gaynor had an issue open with them. 😐

Looks like RTD fixed it.


No SSL or TLS support compiled into Conduit

Hello! First of all, this is amazing tool you working on :)
But ive encountered this weird problem. I was trying to run kalandralang write-ninja-costs and kalandra gave me this error No SSL or TLS support compiled into Conduit. Any ideas why it happened?
I had no problems while installing and compiling, and i have no problem running recipes.
My OpenSSL version is 1.1.1l 24 Aug 2021 if that matters at all. Also i can wget any https page from my shell, so i doubt there is something wrong with the system.
I am on Macbook Air M1 (ARM) inside ocaml/opam:ubuntu docker container (Ubuntu 21.10)
Thats kinda a weird setup, but in theory it should work fine.

opam install ssl
opam install lwt_ssl
did the trick for me, found a forum post were they talk about conduit shifted some dependencies and that was the solution..

@AR-234 Yep! Worked for me also. Thank you


Espanol slack update

I added some Spanish translation to /slack page and changed a word to make the question read easier.

✅ By submitting this PR, I have verified the following

[x ] Checked to see if a similar PR has already been opened 🤔
[ x] Reviewed the contributing guidelines 🔍
[x ] Added my name to the bottom of the list under the Contributors section in the README.md with a link to my personal website or GitHub profile 👥 (Optional)

LGTM +1


Router->generate always creates links a redirection route while using LeaveRedirectDefunctRouteHandler

Howdy,
I have a Page document, and it is a RouteReferrersInterface. So it has a collection of all Routes that link to it. Everything is great, when the page is created, the collection has just the one route that points directly to the Page.
However, when I move that Page, I have the Defunct Route Handler setup to create a redirection route.  Now there are two Routes in the Collection. The first route in the Collection is the redirection route. The second Route in the Collection is the direct link to the Page.
Now when I call $this->generateUrl from any Controller, the Router will always generate URLs to the first Route in the collection. In ContentAwareGenerator::getRouteByContent, it loops through the Routes in the collection and returns the first one that matches the locale. I don't use locale based routing, so it's always the first route, which is a redirection route. If no routes match the locale, then it just picks the first route, which would just be a redirection route anyway.
Is there any way to make the LeaveRedirectDefunctRouteHandler modify the first route to be a direct ink to the content, and add routes to the end of the collection that redirect? This way the generation of URLs will always generate URLs directly to the content. This saves an HTTP redirection request, and generates URLs that make more sense to the users.
Thanks!

Thats a tricky one. I am not sure we would be able to "reorder" the route to be the first one, as routes could be anywhere in the tree.
I think a solution would be to introduce route "priority", where the route with the highest (?) priority wins. The RoutingAutoBundle's PHPCR-ODM adapter could then set a low priority for the redirect routes and a high one for the primary route. Would need some change in the RoutingBundle however /cc @dbu

hm, this is a topic that came up before, in the context of SEO when you may have several routes for the same content, but only one is the canonical. the route references the content, so to know the routes of a content, we look up the referrers - however, this has no way of ordering.
a workaround right now would be to manipulate the order of what you return from the content. or to extend the router and skip redirections. but both are not elegant solutions.
maybe indeed we should have an optional interface for priorities and treat routes without that interface as priority 0. then other routes can go < 0 to come later, or > 0 to be before normal routes... @ElectricMaxxx wdyt?

Thanks for workaround, @dbu. I was able to throw together a quick and dirty route sorting implementation in Page::getRoutes() that works for my purposes. I will keep an eye out for a more permanent, cleaner, solution.

created https://github.com/symfony-cmf/Routing/issues/130
@UFTimmy can you post your solution here for reference? in case somebody else hits the same problem...

Like I said, it's quick and dirty, and I don't even have any non Auto Routes to test with at the moment.
    /**
     * When a redirect route is added, it's the first route in the collection of routes, and that route is the one
     * used to generate URLs. So the URL displayed will always result in a redirection, instead of the direct
     * access. Per suggestion on the open ticket, I am sorting the routes so that the direct route is first, so
     * the route generated will be direct.
     *
     * https://github.com/symfony-cmf/RoutingAuto/issues/31#issuecomment-73904458
     *
     * {@inheritDoc}
     */
    public function getRoutes()
    {
        /**
         * Routes are not auto routes and they don't redirect.
         * Auto routes are auto routes that don't redirect
         * Redirects are any route that redirects.
         */
        $buckets = ['routes' => [], 'autoRoutes' => [], 'redirectRoutes' => []];

        //## Sort routes into their correct bucket.
        foreach ($this->routes as $route) {
            if ($route instanceof AutoRouteInterface) {
                if ($route->getRedirectTarget()) {
                    $buckets['redirectRoutes'][] = $route;
                } else {
                    $buckets['autoRoutes'][] = $route;
                }
            } elseif ($route instanceof RedirectRouteInterface) {
                $buckets['redirectRoutes'][] = $route;
            } else {
                $buckets['routes'][] = $route;
            }
        }

        //## Flatten the buckets into one array, routes, auto, then redirect
        $orderedRoutes = [];
        array_walk_recursive(
            $buckets,
            function ($route) use (&$orderedRoutes) {
                $orderedRoutes[] = $route;
            }
        );

        return $orderedRoutes;
    }

And a little Unit Test for my purposes:
    /**
     * Verify that getRoutes sorts routes properly.
     */
    public function testGetRoutes()
    {
        $page              = new Page();
        $staticRoute       = new Route();
        $autoRoute         = new AutoRoute();
        $autoRedirectRoute = new AutoRoute();
        $autoRedirectRoute->setRedirectTarget($autoRoute);

        $page->setRoutes([$autoRedirectRoute, $autoRoute, $staticRoute]);
        $this->assertEquals(
            [$staticRoute, $autoRoute, $autoRedirectRoute],
            $page->getRoutes(),
            'getRoutes is not sorting the routes properly'
        );
    }


docs: Make env explicitly in the docs

Ignoring failing tests as it's just a misconfiguration on Spider.


Added context menu item to system tray icon on linux.  This allows us…

Added context menu item to system tray icon on linux.  This allows users to see the main window if the tray 'click' action doesn't work.
Preflight Checklist

[x] Tests pass

Context

https://github.com/jonathontoon/tweet-tray/issues/172
Semver Changes

patch

@jonathontoon I've bundled the localization files with the app, and use them to pull the context menu labels.


CTS namespace on CroALa server does not return results

URLS such as urn:cts:croala:crije02.croala292491.croala-lat2w:body.div1.div1.l196.w3 return no results, because the function points to the croala-cts-1 database, and not to the cp-2-texts.

Update function cp:openurn in the croalapelagios.xqm module; make the function point to the correct database (cp-cts-urns). The module should be moved to the xqm directory as well.

The correct namespace is ctsp, cf. croala.ffzg.unizg.hr/basex/ctsp/urn:cts:croala:crije02.croala292491.croala-lat2w:body.div1.div1.l196.w3.
Solved in commit  b8ab13a


⚠ GitLab Server has degraded performance

In 972ab04, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 9121 ms

Resolved: GitLab Server performance has improved in a177000.


!kc no longer functional

Describe the bug
Typing !kc [boss name] should display how many times you've killed the boss but it simply does not anymore.
To Reproduce
Steps to reproduce the behavior:

Go to 'The Chatbox'
Type '!kc [boss name]'
Nothing happens

Expected behavior
Kill count of said boss should be displayed in chat.
Screenshots
https://imgur.com/a/9pI2Mz3
Environment (please complete the following information):

OS: Windows 10
RuneLite version: 1.5.3
Launcher version: 1.6.0

Additional context
application.log

Assuming this is user error (per @KGoodale13's comment), #5327 would fix this.

If you had logged in to Runelite after having used !kc in the past, that would have removed the locally-stored kill count values and caused it to "forget" what it had known in the past. Otherwise, I'm not sure.
In any event, I'm glad it's working now. :)

It seemed to break for me after they released the Boss Collection Log book, I wonder if was related to that somehow.


Add bot join leave messages toggle

Add a toggle in Custom Tags window (Join/Leave messages tab)

To disable bots leave/join messages (ONLY when custom join or leave is enabled)
for default join or leave messages, bot join/leave messages are not suppressed
Last seen message is suppressed by this toggle

Thanks!


Unsupported Scaleio 1.3 Logins ... EMC ScaleIO Version: R1_30.426.0

have you succesfully used thi with 1.30? I i'm not sure there is a /api/login with 1.30, i am getting errors like below.
>>> from scaleiopy import scaleio
>>> sio = scaleio.ScaleIO("https://<IP_ADDRESS>/api","admin","Scaleio123",False, "ERROR")
>>> sio._login()
2015-06-02 10:41:59,481: ERROR scaleio:_login | Login error code: Not Found

I can however just use basic auth against the URL
curl -k --basic --user admin:Scaleio123 https://<IP_ADDRESS>:443/api/instances/Volume::4866dc8500000006
{"volumeType":"ThickProvisioned","mappingToAllSdcsEnabled":false,"mappedSdcInfo":[{"limitIops":0,"limitBwInMbps":0,"sdcId":"f530cf3700000000","sdcIp":"<IP_ADDRESS>"}],"sizeInKb":58720256,"mappedScsiInitiatorInfo":null,"isObfuscated":false,"consistencyGroupId":"0000000000000000","storagePoolId":"64d62fb200000002","ancestorVolumeId":"0000000000000000","vtreeId":"943b92b300000006","creationTime":1428436720,"name":"vol07","id":"4866dc8500000006","links":[{"rel":"self","href":"/api/instances/Volume::4866dc8500000006"},{"rel":"/api/Volume/relationship/Statistics","href":"/api/instances/Volume::4866dc8500000006/relationships/Statistics"},{"rel":"/api/parent/relationship/ancestorVolumeId","href":"/api/instances/Volume::0000000000000000"},{"rel":"/api/parent/relationship/vtreeId","href":"/api/instances/VTree::943b92b300000006"},{"rel":"/api/parent/relationship/storagePoolId","href":"/api/instances/StoragePool::64d62fb200000002"}]}

but not /login or api/login
(venv)[root@sclr059]# curl -k --basic --user admin:Scaleio123 https://<IP_ADDRESS>:443/api/login
{
  "message" : "Not Found",
  "httpStatusCode" : 404,
  "errorCode" : 0
}(venv)[root@sclr059]# curl -k --basic --user admin:Scaleio123 https://<IP_ADDRESS>:443/login
{
  "message" : "Not Found",
  "httpStatusCode" : 404,
  "errorCode" : 0
}

Maybe we can bake in support?

If I remember correct, login method and the use of a session key for authentication was a new feature to ease API integration starting with 1.31.
Haven't looked into what it takes to get it working with 1.30. Guess the get and post methods could be get its own version specific for 1.30. That obviously need a way to identify version of API when accessing it which do not exist to my knowledge. It's possible to get SIO version after login but not before.

Yeah, I think all 1.30 needs is the basic auth, no token or login.
Here's one way I was thinking. We could add a version flag to the scaleio.ScaleIO to easily identify intent to use a version, we could default to 1.31or allow an identifying function to process strings of "1.31, 131, 1.3.1" to  or somthing and set the classifier of somthing like 1_30="1.30"
The tougher part is deciding what to do with the flow of initialization. E.g. ScaleIO calls _check_login() and _login() a lot, and we would need to not "actually" login if the 1.30 flag is set or something. One thought is we would still need to check if the user/pass is valid, maybe we could do this by accessing an arbitrary URL like api/Configuration that needs user/pass and see if it fails? We also wouldn't need to set the new token in the auth_token if it doesn't utilize it.
Just some thoughts, still looking into the best way to do this. I will be looking to help out with this soon to gain 1.30 support for the driver that utilizes scaleiopy.

Or possibly, idk if you need to login for version, as long as username/password is correct, we could use the version to verify if its 1.30 vs 1.31?
This is against a 1.30 (without login)
(venv)[root@sclr059]#curl -k --basic --user admin:Scaleio123 https://<IP_ADDRESS>:443/api/version
"1.0"

This is against a 1.31 (without login)
[vagrant@tb flocker]$ curl -k --basic --user admin:Scaleio123 https://<IP_ADDRESS>:443/api/version
"1.1"

Nice find. It's also
Possible to set what version ScaleIO should use to respond to requests by setting http header. It's used at some place but need to
Be overhauled.
I have started looking at how to make use of some New 1.32 features so I have to implement API version checking anyway.

So you use this already? So its possible to set ScaleIO to use a specific version of the API?
Also, 2 things, do you think its possible to cut a release before adding any 1.30 or 1.32 support ? E.g. with current feature sets. I will want to refer to this version soon. And when you do the work for 1.32 could we make a separate branch for now? I could do the same for 1.30 work?

I won´t add any 1.32 stuff before a new release which should be soon. Have some time constraints atm. Need to merge the pieces in v-tree branch and add a minor adjustment to IM class to support configuring syslog during installation and then I´ll create a release out of it.
Optimally I´d like to be able to identify protocol version and adopt to it. how come you need 1.30 support? 1.31 do everything that 1.30 do but better.

Sounds Good,
Do you estimate when you'd be able to? The driver that uses this will be released late June at DockerCon, I can point the install at my at my fork until then. Ultimately pip installable releases would be nice too, I know as you mentioned its future roadmap.
Agreed, but just for compatibility reasons, honestly when we open the driver that uses this lib we will just say 1.31 compatible at first, then I want to have a solid answer/plan if people start asking to use it on 1.30 or 1.32.


Support for old-style papers

e.g. https://arxiv.org/abs/cs/0701188 or https://arxiv.org/abs/math/0211159 are not supported at the moment, because the format is not [4 digits].[5 digits].

Hi! Thanks for pointing this out, I intend to support it in the next release (when I am free)


Disable OpenMP offloading support for 3rdparty/openmp

Description
OpenMP offloading was introduced some time during the past two years and is
enabled by default. With upgrading 3rdparty/openmp in
#17012 it was unintentionally made part of the MXNet CMake build.
But we don't use OpenMP offloading and the Cuda target in the llvm OpenMP
Offloading build is broken in our setting. Thus disable it.
Due to bug in CMake < 3.13, this requires updating to CMake 3.13. See https://cmake.org/cmake/help/latest/policy/CMP0077.html
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[X] Changes are complete (i.e. I finished coding on this PR)
[X] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[X] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at https://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[X] To the best of my knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[X] Disable OpenMP offloading support for 3rdparty/openmp in CMake build, which was enabled by mistake
[X] Upgrade the Docker images used for edge build to latest upstream version. (Temporarily) disable pinning.

@leezu im getting this error in my windows CI runs:
Traceback (most recent call last):
  File "ci/build_windows.py", line 273, in <module>
    sys.exit(main())
  File "ci/build_windows.py", line 261, in main
    windows_build(args)
  File "ci/build_windows.py", line 174, in windows_build
    datetime.timedelta(seconds=int(time.time() - t0))))
  File "C:\Python37\lib\tempfile.py", line 805, in __exit__
    self.cleanup()
  File "C:\Python37\lib\tempfile.py", line 809, in cleanup
    _shutil.rmtree(self.name)
  File "C:\Python37\lib\shutil.py", line 513, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\Python37\lib\shutil.py", line 392, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Python37\lib\shutil.py", line 392, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Python37\lib\shutil.py", line 397, in _rmtree_unsafe
    onerror(os.unlink, fullname, sys.exc_info())
  File "C:\Python37\lib\shutil.py", line 395, in _rmtree_unsafe
    os.unlink(fullname)
PermissionError: [WinError 5] Access is denied: 'C:\\Windows\\TEMP\\tmpuubj2i7u\\cmake-3.16.1-win64-x64\\bin\\cmake.exe'

http://jenkins.mxnet-ci.amazon-ml.com/blue/organizations/jenkins/mxnet-validation%2Fwindows-gpu/detail/PR-17204/11/pipeline/

[ ]

@samskalicky above lines are a temporary workaround until the Base Windows AMI used by CI is updated. @larroy may be able to give an estimate when it's possible to update.

The reason for using a tmpdir is that multiple jobs are executed on the same Windows CI server. In an earlier stage of this PR I used a fixed path but got a race condition during the cmake installation.
I'm not sure why above cleanup error occurs rarely.

Any reason you are not using the Jenkins workspace? That one is guaranteed to be exclusively to the current job

@marcoabreu no reason. In principle tempfile.TemporaryDirectory has similar guarantees. I didn't expect the problems reported by Sam.

We will remove that when we update CMake on windows, pending some issues with CMake & Visual studio

I'm still seeing the PermissionError. Here is an issue for it. https://github.com/apache/incubator-mxnet/issues/17558


Configuration options.

Hello! Please tell me whether the pool will find blocks without these parameters in the wallet config?: addresstype=legacy
changetype=legacy BCH STOPPED STARTING WITH THESE PARAMETERS IN THE CONFIG.
Mining is going on but there haven’t been a single block for a month hashrate 1 ph/s

Remove addresstype/changetype and add this to the BCH config:
usecashaddr=0


[CWS] improve new e2e tests coverage

What does this PR do?
This PR improves the test coverage of the new e2e tests for CWS.
It adds:

a test on the selftest event
a test on the selftest event's schema
a test on the datadog.security_agent.runtime.running metric
a test on the host tags

This PR also makes it so that some existing tests are shared across the different e2e test environments.

Motivation
This PR is the first step towards removing the old argo-based CWS e2e tests.

Additional Notes
The last test missing from the existing argo-based tests is the one on the datadog.security_agent.runtime.containers_running metric. This will be added in a follow up PR as for now existing CWS e2e tests only test an host-based environment as well as the CWS Fargate support.

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge

/merge

/merge -c

/merge