Communication costs are quadratic in the number of worker threads

As a side effect of profiling Stylo for
https://bugzilla.mozilla.org/show_bug.cgi?id=1371496, I picked up some
numbers for Rayon too.
I ran the Stylo benchmark in the abovementioned bug with 1, 4, 16 and 64
worker threads, on Valgrind/Callgrind configured for fine-grain thread
interleaving -- basically all threads move forwards together.
Looking at the costs (in instructions executed, and inclusive of callees)
for rayon_core::registry::WorkerThread::wait_until, I see a cost increase
which looks extreme as the number of threads increases (MI = million insns):
p1      137.1 MI
p4      238.4 MI  (1.7 x p1)
p16    3568.7 MI  (15.0 x p4)
p64  177089.5 MI  (49.6 x p16)
In the worst case (p64), wait_until and callees use 177 G insns, of which
about 129 G are in calls to <coco::deque::Stealer>::steal.
Looking at the code for rayon_core::registry::WorkerThread::steal, it appears that
each thread inspects the work queues of all other threads.  So Rayon induces
communication costs in the underlying machine that are at least quadratic in
the number of threads.
Given that this is measured on a simulator that slows down progress hugely,
I wouldn't pay too much attention to the exact numbers.  But it is clear
that Rayon might have scaling problems, especially in cases like this where
(I think) there is actually very little work to do, and so the threads spend
a lot of time searching for work.  (But then why don't they end up going to
sleep?  Maybe they do.  I don't know.)

But then why don't they end up going to sleep? Maybe they do. I don't know

They should eventually... but it depends. Right now, our sleep mechanism is not too smart, in that it wakes up all threads whenever work comes in. It's basically still oriented around a binary "on/off" setup, for the most part, although we have more capability to have only "some" threads active than before. The original intention was that they would all wake up whenever work arrives, but some would go to sleep -- the thresholds for that latter step may however be too high. Moreover, they currently take turns going to sleep, mostly because it helped to simplify the sleeping logic (originally I was trying to have multiple threads go to sleep independently), so this may exacerbate the problem in simulation particularly.

Perhaps we also ought to try stealing more than one job from a deque - a common strategy is to steal half of the jobs from another deque. That could reduce the cost of distributing jobs among worker threads quite a bit.
I'll try extending deques to support stealing multiple jobs at once and see how it works out in Rayon. Any thoughts about that?

@stjepang That sounds like it would help in at least some cases.  For the cases where
there are a lot of threads and not much work to do, it doesn't sound useful, for example
if work queues mostly only have one item in anyway.
But worth a try at least from my naive point of view.  @nikomatsakis, what do you think?
Even better would be to have an analytical cost model of the Rayon core scheduler so
we could more easily reason about these corner cases without having to hack around the
code to understand its behaviour.

I'm certainly not opposed to giving it a try. As I mentioned to @julian-seward1 on IRC, though, it doesn't strike me as always a win. Parallel iterators, for example, purposefully lay out their tasks so that the first one to be stolen is roughly 50% of the work (and the next one represents 50% of the remaining work, and so forth). This was part of the overall Cilk design -- when possible, it's generally better I think that creating a ton of fine-grained tasks up-front, since it allows you to parallelize the effort of doing that parallelization. For example, with parallel iterators, as we pop tasks off the deque, if we find they are not being stolen, we switch to a purely sequential execution for bigger and bigger groups of items; since it is often more efficient to process a batch of items in a seq loop, that helps to amortize the total overhead (I guess you could imagine trying to pop off more than one task at a time too, to achieve the same effect?)
The other obvious thing to do is to batch up the the threads into groups, or a hierarchy, and have them steal from within their group first, before attempting to steal globally. This might eliminate some of the O(n^2) execution.
Something that's unclear to me is how much cost is incurred during the "going to sleep" phase. Ideally, if all tasks are generating parallel opportunities, stealing should be relatively rare. But when there isn't enough work to go around, you will certainly see a lot of cycles spent trying to steal (which doesn't necessarily hurt performance, though it doesn't help; and it certainly doesn't help with power). It seems worth attempting to tune those parameters and see what happens.
Naturally I'm all for analytical modeling, though I'm a bit dubious on its true predictive power. There are so many factors at play.

It would be nice if we could move you away from the model of spawning lots of discrete jobs.  It seems like this is always going to be a worst case of requiring lots of "stealing" from RegistryState::job_injector to get anything done.
Maybe we could apply the idea of stealing a batch just for that injector queue?
I haven't looked at coco's memory allocation, but I'm imagining if it could just hand us a whole Box<[JobRef]>, then we can split that up further the same way parallel iterators do.  (not literally with par_iter since this is in core)

@cuviper I don't really follow your proposal, can you elaborate on it? In general it seems pretty hard to move away from spawn. We don't know all the work up front, and instead discover it as we explore the DOM top-down. Moreover, the processing order matters for the style sharing cache, so we want to be careful in that regard to maintain breadth-first ordering.
The more fundamental issue here is that we seem to have a Thundering Herd problem. The behavior in the Speedometer testcase is not (IIUC) that we saturate 64 threads and then run out of work later. On the contrary, most of the threads presumably spend their entire lifetime trying to steal and never find any work, because we wake up all the threads at once and then burn cycles while they inspect each others' empty queues. It seems like we should wake threads up one at a time, and only wake up thread N when thread N-1 has successfully found a work item to steal.

OK, the way I was thinking was how to distribute lots of individual work more efficiently.  If there's just not enough work to go around, then yes I agree it's a problem of managing the idle "herd".
Right now we use Condvar::notify_all, and we could try switching to Condvar::notify_one, with the potential cost that we don't spin up quite as quickly when there is lots of work to be done.  That needs to be measured.

Could we perhaps measure the size of the queue we just stole from? If it's less than the total number of threads we'd wake up with notify_all, we do notify_one.

I think waking up fewer threads is good, but I'm not sure that notify_one is the answer -- I have to review the logic, I guess. I think that in some cases (e.g., after a latch is signaled), we rely on the fact that we wake up everyone -- if we just woke up one thread, it might not be the one that was waiting on the latch. We could treat "new jobs" available (which can be handled by anyone) differently from "latch signaled", for sure, but it seems like if we are waking up all threads every time a latch is signaled, we're still going to have a hungry herd. We'd need to do better than that I think.
I suspect that what we really want in any case is a kind of "quick ramp-up" -- i.e., start a few threads at first, but escalate to the full herd once we've seen some evidence that there will be a lot of items to come.
It'd be worth studying more closely what other threadpools are doing in this respect. From discussions I've had with other implementors, there are a lot of trade-offs involved, and everybody has to ultimately make some choice somewhere.

I think waking up fewer threads is good [..] we rely on the fact that we wake up everyone [..]

This seems to me like we're discussing policy and implementation together.
Can we first can discuss policy (what dynamic behaviour we want) without
discussing implementation?  Presumably we can implement pretty much any
policy we want once we've decided on it.
It seems to me that there are four things we need to characterise, in terms of
"active" (non-sleeping) threads:

the ramp-up profile when there is "enough work".  That is, should we increase the
number of active threads exponentially?  Linearly?  Some other way?

the ramp-down profile when there is "too little work".  Same question (linear decline? etc)

definition of "enough work".  Should that be based on queue sizes, or recent utilisation
levels of active threads, or something else?

definition of "too little work".  Ditto.  Presumably we'd want to keep the thresholds
reasonably far apart in order to avoid flipping between states.

In the case where there is little work to do, it is also important to avoid scattering small
bits of work between a large number of mostly idle threads.  In unrelated work on Valgrind,
we have seen large (2 x) slowdowns caused by poor interactions with cpu frequency
scaling in that scenario.  This means we'd need to have a priority scheme for thread
activation.

From discussions I've had with other implementors, there are a lot of trade-offs involved

Can you summarise them?

@julian-seward1

This seems to me like we're discussing policy and implementation together.

Indeed. It's a good idea to separate them.

It seems to me that there are four things we need to characterise, in terms of
"active" (non-sleeping) threads:

Those are good questions, and I don't now the answers. It seems to me that the best thing would be to try and read into other code-bases and see if we can get a kind of survey of the "menu" that others have attempted.
Some code-bases that seem worth investigating (all of which I believe are open source, for some definition thereof):

[ ] The Java ForkJoinPool (source, I think)
[ ] Intel TBB (source, I think)
[ ] CilkPlus (source, I think)
...?

We can also try getting in touch with the authors and see if they have any tips to share with us. =)

Can you summarise them?

Not in much depth -- these were relatively casual conversations. The basic tradeoff is pretty clear: the slower you ramp up, the more you increase latency, and you have very few signals as to what the program is ultimately going to do.

cc @Amanieu -- btw, based on our conversation at ECOOP, I thought you might be interested in tracking this issue and/or have useful thoughts. =)

In Async++ I keep a list of threads that are sleeping.
Whenever a new task is added to the pool, it will check if there is a sleeping thread and wake one up. This ensures that there is always a thread available to perform work.
There are two places where a thread must do work while waiting: at the root of a worker task, and while joining. Both of these are handled by the same function. It basically performs the following in a loop:

If the join task is done (represented by some sort of atomic flag), then return.
Try to get a task from the queue of the current thread. If we got one, execute it then loop back to 1.
Go through the queues of every other thread, trying to steal a task from them. If we got one, execute it then loop back to 1.
Try to get a task from the public queue (for tasks that are sent from outside the thread pool). If we got one, execute it then loop back to 1.
At this point, no tasks are available to run. Each thread has an event object which it can sleep on and which other threads can signal. [For non-root only] We atomically register the event object with the join task, so that either the task has already been completed (in which case we can just return), or the event object will be signaled by the thread that completes the task.
We add our event object to the list of sleeping threads, and wait for it to be signaled.
After we have been signaled, remove the current thread from the list of waiters, and loop back to 1.

This model is pretty simplistic, but it allows the number of threads to quickly ramp up when new tasks are added.

In one workload I'm benchmarking, there's only enough work to be done to keep several threads occupied, but Rayon will completely consume all 16 threads on my processor if given the chance. To be specific, I'm looking at the "zapper_par" benchmark from my upcoming (soon to be announced) library. Setting RAYON_NUM_THREADS=4 only reduces the total throughput by 10% versus using all 16 threads. Interestingly, the performance is 17.2% better at 8 threads than it is at 16... which makes me think it's related to the overhead of communication costs becoming significant when there's no work available for those other threads to do.
Is there a plan to work on this issue? I think Rayon is a great library, I just wanted to report an experience I was having!

Recently, I was trying to unstable_sort a 50 GiB dataset in memory on a 48 core machine, and I might have run into this issue. Instead of remaining at 70-100% CPU usage, the machine seemed to bounce between 20-80%. The next time it comes up I will try to record more precise data.

I'm wondering if this might relate to the performance limitations of parallel rustc compiles on large (e.g. 72-way) systems. Profiles suggest that on such systems rustc spends a huge amount of time doing synchronization/stealing.


Terminal doesn't show up in editor

Can't seem to get this thing to work.

https://github.com/platformio/platformio-atom-ide-terminal/issues/297


This feature is available to Per User Premium users

Hello team, Is my understanding correct that PPU users should have ALL features related to Azure ML Service available ?
If so can we add PPU licensed users to this paragraph:
Use Machine Learning and Cognitive Services with dataflows – Power BI | Microsoft Docs
Automated machine learning is available for dataflows that are hosted on Power BI Premium and Embedded capacities only.

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

ID: 301c08b2-df76-b3b0-5035-7413d8b9d447
Version Independent ID: f6d974e6-d13a-0413-6d50-3b5a93447600
Content: Use Machine Learning and Cognitive Services with dataflows - Power BI
Content Source: powerbi-docs/transform-model/dataflows/dataflows-machine-learning-integration.md
Service: powerbi
Sub-service: powerbi-ai
GitHub Login: @davidiseminger
Microsoft Alias: davidi

Thanks for your comment, @morcinim. This issue has been assigned to the doc author for review.

Thanks for your comment - Premium includes PPU, so it's implied.


Pylint - manual workflow

I think we do not need automated workflow for pylint at the moment. Not much py code.

lgtm


Tags reset everytime you restart app

Description
just how the title states it, all tags reset whenever you restart the app. Im sure this is a bug not intentional
Steps To Reproduce

edit tags to something personal
restart the app manually with either taskbar or task manager
watch as all your personalized tags disappear

Requirements

whenever the files app restarts, Make sure all tags stay the same with their respected color and name

Files Version
<IP_ADDRESS>
Windows Version
10.0.22631.2861
Log File
debug.log

Thanks for the report, Are you talking about added tags to file/folders being removed or what the tag text is in Files settings?

I believe I am having the same issue, and I have more details to add. Edits to existing tags (i.e. changes to the tag name and/or color) are being dropped on program exit, except sometimes the first edit made is saved. Here's what happened:

I started with a list of nine tags: Tag1, Tag2,... Tag9. (I don't assume that the exact number of tags does not matter, but I had nine when I encountered this.)
Rename all tags: Tag1a, Tag2a,... Tag9a.

Note that I closed the settings dialogue (but not Files) between each tag edit. This might explain some behavior encountered later on.

Exit and reopen Files. Only the first edit was saved! So I now have a list of tags: Tag1a, Tag2, Tag3,... Tag9.

Note that it's the first edit that's saved, not the first tag in the list. If I started renaming tags from the bottom of the list -- so that Tag9a was the first edit -- then I end up with a tag list like this: Tag1, Tag2,... Tag8, Tag9a.

I then tried to edit just 2 tags at a time, with the same result. (That is, if I change Tag2 to Tag2a and Tag3 to Tag3a, then exit and reopen, then only that first edit is saved -- I end up with Tag2a and Tag3.) The only way to edit all the tags in the list was to rename one at a time and close/reopen Files between each edit.
Next I tried to edit all the tag colors at once. I picked new colors for all nine tags, closed and reopen Files. None of the edits were saved.
Changing tag colors one at a time (closing and reopening Files between each edit), worked.
I don't know why it saved the first edit when I changed all the tag names at once and none of the edits when I was changing all the tag colors, but possibly it has to do with the fact that I closed the settings dialogue between each tag rename, but did the color changes all at once?

Running Files <IP_ADDRESS> on Windows 10.
I also encountered another tag-related issue, but I'm not totally certain, based on the documentation, what the intended behavior is, so I'm not sure whether it is a bug. But I'm reporting it here because it relates to how I encountered the above bug. If devs want to spin it off as a separate bug report, go ahead.
I recently did a fresh install of Files, uninstalling the old version (one of the 2.x versions, I didn't make a note of which) and installing <IP_ADDRESS>. When I opened it up and started browsing through my files, all my tags were named Unknown. Based on the documentation, I had expected tag names to carry over across installs since they are stored in the tagged files themselves. And they sort of did -- my files are all still tagged. But before the tags would display properly I had to select each Unknown tag, see what files were associated with it to figure out what the tag had been, and rename the tag in the tag settings. So, I'm not sure whether this is a bug (or whether it's replicable) but it was kind of a hassle (especially with the tag-edit bug).

We are planning to move away from our approach that relies on the Windows Search Index. This change aims to address the issue and enhance overall reliability. Please refer to https://github.com/files-community/Files/issues/15272 for further updates.


workflows: raw_affiliation in authors is empty list after merge

Looks like json-merger in version 0.7.5 is merging this:
ipdb> root['authors'][0]['raw_affiliations']
[{u'value': u'Department of Physics, Brown University, Providence, RI, 02912, USA'}]
ipdb> head['authors'][0]['raw_affiliations']
[{u'value': u'Department of Physics, Brown University, 02912 Providence, USA'}]
ipdb> update['authors'][0]['raw_affiliations']
[{u'value': u'Department of Physics, Brown University, Providence, RI, 02912, USA'}]

into this:
ipdb> merged['authors'][0]['raw_affiliations']
[]

This should be fixed


Fix/husl to hsluv

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@53b51eb). Click here to learn what that means.
The diff coverage is 72%.

@@            Coverage Diff            @@
##             master       #2   +/-   ##
=========================================
  Coverage          ?   95.78%
=========================================
  Files             ?       12
  Lines             ?     4409
  Branches          ?        0
=========================================
  Hits              ?     4223
  Misses            ?      186
  Partials          ?        0

Impacted Files
Coverage Δ

seaborn/rcmod.py
100% <ø> (ø)

seaborn/relational.py
99.65% <100%> (ø)

seaborn/axisgrid.py
95.63% <100%> (ø)

seaborn/categorical.py
97.29% <100%> (ø)

seaborn/palettes.py
93.56% <66.66%> (ø)

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 53b51eb...260b19e. Read the comment docs.

Thanks — but I am not convinced that this is a necessary change.
Seaborn already packages husl.py internally with appropriate acknowledgement of the original source.
As far as I can tell, hsluv.py has the same code as seaborn's husl.py, just a different name.
This name has been used for many years in seaborn, and the change here will require people to change their code for no reason. I would like to avoid that, unless there is a compelling reason for it.


Add check for vulnerable modules (using nsp)

Re: https://www.npmjs.com/package/nsp
It may be nice to be able to opt-in to security checking using the nsp API, where you post the package.json to nsp and could display any potentially vulnerable modules.

Welp:

The Node Security Platform service is shutting down 9/30 - https://blog.npmjs.org/post/175511531085/the-node-security-platform-service-is-shutting

Now on https://blog.npmjs.org/post/175511531085/insert-title-here.html.
Closing this out as npm audit is its own separate built-in command. Cheers! 🧡


How to set max.poll.records ?

Description
It looks like i am unable to set max.poll.records value; it gives me the "not a valid setting" message
How to reproduce
attempt to set the max.poll.records config option
Checklist
Please provide the following information:

[x] Confluent.Kafka nuget version: 0.11.4
[x] Apache Kafka version: latest

config properties are not the same as the java client - they're inherited from librdkafka. see: https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md
also, the .net client operates a bit differently to the java client. calling consumer.Consume will return at most one message (from an internal queue), so max.poll.records is not relevant. you might be interested in queued.min.messages or queued.max.messages.kbytes.

great, will give this a shot thanks


pex vendoring does not (always) isolate itself from a colliding setuptools install in site-packages

Having issues creating pex files in an image based on databricksruntime/python-virtualenv.
Dockerfile:
FROM databricksruntime/python-virtualenv:latest
RUN apt-get update \
  && apt-get install -y --allow-unauthenticated apt-transport-https ca-certificates curl gnupg2 software-properties-common curl software-properties-common build-essential

# Install & Bootstrap Python 3.7
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt update
RUN apt install --yes python3.7 python3.7-dev
RUN virtualenv -p python3.7 --system-site-packages /databricks/python3
RUN /databricks/python3/bin/pip3.7 install pex setuptools==45.2.0
ENV PATH="$PATH:/databricks/python3/bin"

Command run in container:
pex --interpreter-constraint='CPython>=3.7' boto3 -o boto3.pex -m boto3
Portion of failure StackTrace:
Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-req-build-kh23prp9/setup.py", line 59, in <module>
      'Programming Language :: Python :: 3.8',
    File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/__init__.py", line 169, in setup
      return distutils.core.setup(**attrs)
    File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/wheel/wheel/bdist_wheel.py", line 228, in run
      self.run_command('install')
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/command/install.py", line 65, in run
      return orig.install.run(self)
    File "/usr/lib/python3.7/distutils/command/install.py", line 601, in run
      self.run_command(cmd_name)
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/command/install_scripts.py", line 22, in run
      import setuptools.command.easy_install as ei  # vendor:skip
    File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/command/easy_install.py", line 69, in <module>
      from setuptools.sandbox import run_setup  # vendor:skip
    File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/sandbox.py", line 24, in <module>
      import pkg_resources.py31compat  # vendor:skip
  ModuleNotFoundError: No module named 'pkg_resources.py31compat'
  ----------------------------------------
  ERROR: Failed building wheel for boto3

As requested: @stuhood

Thanks! I repro the issue, with or without setuptools explicitly installed alongside pex. Investigating.

According to https://github.com/pypa/setuptools/issues/1167, this is likely a collision between multiple setuptools installs, one of which is vendored inside pex, and the other of which comes from your sitepackages due to --system-site-packages.
So I suspect that this might be bug in the vendoring that pex does that is allowing an external copy of setuptools to collide with the vendored copies.
Two workarounds:

Remove the --system-site-packages and rely on explicitly pip installing the things you need in the virtualenv
run pex from a pex, which will allow pex to isolate itself rather than relying on virtualenv to do so:

$ pex pex -o pex.pex -m pex
$ ./pex.pex --interpreter-constraint='CPython>=3.7' boto3
Python 3.7.9 (default, Aug 18 2020, 06:24:24)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

This backtrace is in a Pex execution of Pip. There, PEX dogfoods itself to run Pip in isolation - with the deliberate exception of setuptools and wheel whose vendored versions are deliberately exposed so Pip can execute setup.pys as needed:
https://github.com/pantsbuild/pex/blob/2783d304daf43dc1d59753c7e5fc2599b16acd01/pex/pip.py#L35-L53
So that's where to start spelunking.

I'll dig on this a bit.

Getting back to the conversation above, I wanted to correct the record on:

run pex from a pex, which will allow pex to isolate itself rather than relying on virtualenv to do so:

Pex isolates itself whether run from a pex file or not. It does this by:

Shading all its dependencies, so it imports pex.third_party.setuptools and not setuptools and so cannot pick this up from the system.
Wraps its internal executions of python interpreter subprocesses in PEXes to provide isolation to those subprocesses.

My answer above about Pip PEX dogfood concerns point 2.

FWIW, I tested that both 1) and 2) from my answer resolved the issue in the repro. I might have rushed things though.

Aha, ok. That's not making sense but good to know.
That said, I don't repro:
$ cat <<EOF | docker build -
FROM databricksruntime/python-virtualenv:latest
RUN apt-get update   && apt-get install -y --allow-unauthenticated apt-transport-https ca-certificates curl gnupg2 software-properties-common curl software-properties-common build-essential

# Install & Bootstrap Python 3.7
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt update
RUN apt install --yes python3.7 python3.7-dev
RUN virtualenv -p python3.7 --system-site-packages /databricks/python3
RUN /databricks/python3/bin/pip3.7 install pex setuptools==45.2.0
ENV PATH="$PATH:/databricks/python3/bin"
RUN pex --interpreter-constraint='CPython>=3.7' boto3 -o boto3.pex -m boto3
EOF
Sending build context to Docker daemon  3.072kB
Step 1/9 : FROM databricksruntime/python-virtualenv:latest
 ---> 6d14d1c4da8d
Step 2/9 : RUN apt-get update   && apt-get install -y --allow-unauthenticated apt-transport-https ca-certificates curl gnupg2 software-properties-common curl software-properties-common build-essential
 ---> Running in 085a999e997e
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
...
Processing triggers for dbus (1.10.6-1ubuntu3.3) ...
Removing intermediate container 085a999e997e
 ---> b39aead9ebae
Step 3/9 : RUN add-apt-repository ppa:deadsnakes/ppa
 ---> Running in a985ceb3f4b6
 This PPA contains more recent Python versions packaged for Ubuntu.
...
gpg: key 6A755776: public key "Launchpad PPA for deadsnakes" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK
Removing intermediate container a985ceb3f4b6
 ---> 654f182d6ef2
Step 4/9 : RUN apt update
 ---> Running in 25d3cbe0c6d1
...
76 packages can be upgraded. Run 'apt list --upgradable' to see them.
Removing intermediate container 25d3cbe0c6d1
 ---> 31e7a456c83b
Step 5/9 : RUN apt install --yes python3.7 python3.7-dev
 ---> Running in e7601428f9c3
...
Setting up python3.7-dev (3.7.9-1+xenial1) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Removing intermediate container e7601428f9c3
 ---> 2a03e6c57939
Step 6/9 : RUN virtualenv -p python3.7 --system-site-packages /databricks/python3
 ---> Running in 8bfcdf409659
Using base prefix '/usr'
New python executable in /databricks/python3/bin/python3.7
...
Running virtualenv with interpreter /usr/bin/python3.7
Removing intermediate container 8bfcdf409659
 ---> 2e2296a1ba42
Step 7/9 : RUN /databricks/python3/bin/pip3.7 install pex setuptools==45.2.0
 ---> Running in bee547a895cb
Collecting pex
  Downloading pex-2.1.16-py2.py3-none-any.whl (2.3 MB)
...
Successfully installed pex-2.1.16 setuptools-45.2.0
Removing intermediate container bee547a895cb
 ---> 320f252b829d
Step 8/9 : ENV PATH="/home/jsirois/.rvm/gems/ruby-2.6.0/bin:/home/jsirois/.rvm/gems/ruby-2.6.0@global/bin:/home/jsirois/.rvm/rubies/ruby-2.6.0/bin:/home/jsirois/.cargo/bin:/home/jsirois/bin:/home/jsirois/.local/bin:/home/jsirois/.nvm/versions/node/v8.11.3/bin:/home/jsirois/.poetry/bin:/opt/google-cloud-sdk/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin:/home/jsirois/.bash.d/bin:/home/jsirois/go/bin:/home/jsirois/.gem/ruby/2.5.0/bin:/home/jsirois/.rvm/bin:/home/jsirois/.bash.d/bin:/databricks/python3/bin"
 ---> Running in 8887cb7aa912
Removing intermediate container 8887cb7aa912
 ---> ea3611e65fa8
Step 9/9 : RUN pex --interpreter-constraint='CPython>=3.7' boto3 -o boto3.pex -m boto3
 ---> Running in e9ff82a8f6ff
Removing intermediate container e9ff82a8f6ff
 ---> 22d0b02808bd
Successfully built 22d0b02808bd

And the pex seems ok:
$ docker run --rm -it -ePEX_INTERPRETER=1 22d0b02808bd ./boto3.pex
Python 3.7.9 (default, Aug 18 2020, 06:24:24)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import boto3
>>>
now exiting InteractiveConsole...

@jperkelens or @stuhood does the original bug report still repro for you? Probably most importantly, does it repro after appropriate docker image pruneing (fresh image builds)?

If docker output says  ---> Using cache, the step is cached:
Step 2/9 : RUN apt-get update   && apt-get install -y --allow-unauthenticated apt-transport-https ca-certificates curl gnupg2 software-properties-common curl software-properties-common build-essential
 ---> Using cache
 ---> b39aead9ebae

a different copy of the databricksruntime/python-virtualenv:latest tag

They have not changed the image for 13 months, so that's unlikely it, but the image incluides a RUN apt update which can pick up new packages. So if that update step is cached, you'd pick up older packages than me. It could be that an upgraded package has the "fix".

but also, FWIW, @jperkelens was able to resolve his issue by removing the --system-site-packages flag, so he is no longer blocked on this.

Yeah - thanks. I'd still like to squash the issue if possible.

So if that update step is cached, you'd pick up older packages than me. It could be that an upgraded package has the "fix".

It wasn't... all of the steps ran.

Hrm. Not being able to repro is ... maddening. If either of you have time could you run this on your image substituting your image id for 22d0b02808bd?:
$ docker run --rm -it 22d0b02808bd apt list --installed | grep python
dh-python/now 2.20151103ubuntu1.1 all [installed,upgradable to: 2.20151103ubuntu1.2]
libpython3-stdlib/xenial,now 3.5.1-3 amd64 [installed,automatic]
libpython3.5-minimal/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,upgradable to: 3.5.2-2ubuntu0~16.04.11]
libpython3.5-stdlib/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,upgradable to: 3.5.2-2ubuntu0~16.04.11]
libpython3.7/xenial,now 3.7.9-1+xenial1 amd64 [installed,automatic]
libpython3.7-dev/xenial,now 3.7.9-1+xenial1 amd64 [installed,automatic]
libpython3.7-minimal/xenial,now 3.7.9-1+xenial1 amd64 [installed,automatic]
libpython3.7-stdlib/xenial,now 3.7.9-1+xenial1 amd64 [installed,automatic]
python-apt-common/xenial-updates,now 1.1.0~beta1ubuntu<IP_ADDRESS> all [installed,automatic]
python-pip-whl/xenial-updates,now 8.1.1-2ubuntu0.4 all [installed,automatic]
python3/xenial,now 3.5.1-3 amd64 [installed]
python3-apt/xenial-updates,now 1.1.0~beta1ubuntu<IP_ADDRESS> amd64 [installed,automatic]
python3-dbus/xenial,now 1.2.0-3 amd64 [installed,automatic]
python3-gi/xenial,now 3.20.0-0ubuntu1 amd64 [installed,automatic]
python3-minimal/xenial,now 3.5.1-3 amd64 [installed,automatic]
python3-pkg-resources/xenial,now 20.7.0-1 all [installed,automatic]
python3-pycurl/xenial,now 7.43.0-1ubuntu1 amd64 [installed,automatic]
python3-software-properties/xenial-updates,xenial-security,now <IP_ADDRESS> all [installed,automatic]
python3-virtualenv/xenial-updates,now 15.0.1+ds-3ubuntu1 all [installed,automatic]
python3.5/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,upgradable to: 3.5.2-2ubuntu0~16.04.11]
python3.5-minimal/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,upgradable to: 3.5.2-2ubuntu0~16.04.11]
python3.7/xenial,now 3.7.9-1+xenial1 amd64 [installed]
python3.7-dev/xenial,now 3.7.9-1+xenial1 amd64 [installed]
python3.7-distutils/xenial,now 3.7.9-1+xenial1 all [installed,automatic]
python3.7-lib2to3/xenial,now 3.7.9-1+xenial1 all [installed,automatic]
python3.7-minimal/xenial,now 3.7.9-1+xenial1 amd64 [installed,automatic]

$ docker image ls databricksruntime/python-virtualenv:latest
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
databricksruntime/python-virtualenv   latest              6d14d1c4da8d        18 months ago       778MB

As mentioned above, I have not been using a Dockerfile: rather, using docker run followed by pasting each command, so the apt-list bit is maybe not interesting:
$ docker run --rm -it 6d14d1c4da8d apt list --installed | grep python
dh-python/now 2.20151103ubuntu1.1 all [installed,local]
libpython3-stdlib/now 3.5.1-3 amd64 [installed,local]
libpython3.5-minimal/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,local]
libpython3.5-stdlib/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,local]
python-pip-whl/now 8.1.1-2ubuntu0.4 all [installed,local]
python3/now 3.5.1-3 amd64 [installed,local]
python3-minimal/now 3.5.1-3 amd64 [installed,local]
python3-pkg-resources/now 20.7.0-1 all [installed,local]
python3-virtualenv/now 15.0.1+ds-3ubuntu1 all [installed,local]
python3.5/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,local]
python3.5-minimal/now 3.5.2-2ubuntu0~16.04.5 amd64 [installed,local]

Thanks - the means by which the command are run in the image - by hand or by Dockefile RUN, are immaterial, so the listing is useful.

OK, so focusing on --system-site-packages (thanks @stuhood), virtualenv implements this via a custom site.py. That site.py calculates the underlying system site packages when the venv interpreter starts up and adds all those paths to sys.path via direct sys.path manipulation. As such, there is no way for the Pex runtime to detect these sys.paths should be scrubbed without adding a hunk of code that knows an awful lot about virtualenv's implementation details. In short, this means Pex cannot trust sys.path. It currently does when running Pip PEXed internally:
https://github.com/pantsbuild/pex/blob/2783d304daf43dc1d59753c7e5fc2599b16acd01/pex/pip.py#L35-L54
I can instead construct PYTHONPATH from the paths of the vendored setuptools and wheel directly, the main difference being this will pre-pend those paths to the sys.path of spawned Pip subprocesses. Right now they come in the order they are in sys.path which may put --system-site-packages before the pexed up setuptools and wheel packages.

Noting the abive fix does not solve the general hermeticity problem here, just the specific problem for the Pip PEX used at PEX buildtime.
For example:
root@4185a16f2609:/# pex -v setuptools
pex: Building pex :: Resolving distributions (['setuptools']) :: Resolving for:
...
pex: Activating PEX virtual environment from /tmp/tmp4xggexvl: 28.6ms
pex: No entry point specified, dropping into interpreter
pex: Bootstrap complete, performing final sys.path modifications...
pex: PYTHONPATH contains:
pex:     /tmp/tmp4xggexvl
pex:   * /databricks/python3/lib/python37.zip
pex:     /databricks/python3/lib/python3.7
pex:     /databricks/python3/lib/python3.7/lib-dynload
pex:     /usr/lib/python3.7
pex:     /usr/local/lib/python3.7/dist-packages
pex:     /usr/lib/python3/dist-packages
pex:     /tmp/tmp4xggexvl/.deps/setuptools-50.3.0-py3-none-any.whl
pex:     /tmp/tmp4xggexvl/.bootstrap
pex:   * - paths that do not exist or will be imported via zipimport
Python 3.7.9 (default, Aug 18 2020, 06:24:24)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

Here the --system-site-packages added by virtualenv to sys.path directly in site.pyand unscrubbed by Pex are:

pex:     /usr/local/lib/python3.7/dist-packages
pex:     /usr/lib/python3/dist-packages
Besides not being scrubbed, these come before /tmp/tmp4xggexvl/.deps/setuptools-50.3.0-py3-none-any.whl in the sys.path.

It looks like one way to solve this is to invert how we calculate which sys.path entries to scrub. Instead of calculating site-libraries, uiser-site-libraries and extras to scrub, we could calculate just the core libraries and scrub everything else via:
python -sSE -c 'import sys; print("\n".join(sys.path))'

That solves the case above and seems as robust as you can possibly be since the answer is delegated to the python interpreter in question.

Checking back in here. Although I still cannot repro the failure you get using the commands above I can repro the leak by inspection of sys.path in a PEX built in the databaricks image. I've done some work over in #1128 that makes Pex both aware of virtual environments and equips it with the capability to bust out of a virtual environment. I'll use that to fix this. The approach above using ~ python -sSE -c 'import sys; print("\n".join(sys.path))' was not robust across all interpreter installations (those that include bits of the stdlib in ~site-packages :/).


Add support for Jexl

Jexl is the Javascript Expression Language.

@RunDevelopment Before I resolve the conflicts, is this something you‘d be interested in? Thanks in advance!

Conflicts are resolved.

Hi @RunDevelopment, thanks for the detailed review! I'll address the points you mention over the coming days.
Regarding the status of the project: It's a small language (just expressions), I'd see the fact that nothing happened over the last 6 months as a sign of stability :wink: I'm not involved with the Jexl project myself, but my company is a heavy user of Jexl and would potentially be committed to help maintaining it, should the need ever arise.

I'd see the fact that nothing happened over the last 6 months as a sign of stability

The lack of commits, yes. What worried me more was that nobody responds to new issues and PRs.
But it's good to know that there are people willing to step in.

Hi @RunDevelopment
Sorry this took a bit longer than expected. I was able to address most of your feedback - thanks for taking another look!

Please ignore the last review comment. The "It really isn't. I'm sorry, this is my bad. I assumed that .4 (as in JS) is a number. In that case, both the original and my suggested pattern are incorrect. I'll suggest a new one." one. GitHub has a bug with its review comment system and I triggered that bug...

@RunDevelopment Should we still change something about the numbers?

I say we just leave it as is.

Thank you for contributing @czosel!

Awesome :tada: Thanks for the detailed review, and your work on Prism in general!
Do you already have a new release planned? :-)

Thanks.
I do want to make a new release soon-ish but not until a few of the more recent PRs get merged.


Added webflux support with demo application

Closes https://github.com/maciejwalkowiak/spring-boot-startup-report/issues/12

Thanks @eduanb for a PR. I removed the example as I don't think it brings much value.


rename metrics to match prometheus official naming conventions

closes https://github.com/discourse/prometheus_exporter/issues/182

thanks, looks like you are making good progress. We do need to also improve metric names and make them more consistent, can you have a look?

I think this is all fixed now. https://github.com/discourse/prometheus_exporter/pull/184/commits/a845e548b62deffb9f2a61a233f9dca8dcd9a192
And I added some missing tests for unicorn. https://github.com/discourse/prometheus_exporter/pull/184/commits/9669a3b7fb8b44d8cbff1aba2add00751dbd4d9a

We do need to also improve metric names and make them more consistent, can you have a look?

For example, do you mean to fix the inconsistency that resque has a gauge type metric called resque_failed_jobs, while sidekiq has a counter type metric called sidekiq_failed_jobs_total?

This is a very nice change, going to hold off a bit on a release cause it has potential to break quite a few people, let's let it bake for 2-4 weeks.

Would've been awesome if changes like those get a graceperiod where both names are provided. We ended up in a situation where our dashboards are working for one or the other environemnt (as in stage/production), cause our deployment cycles are sadly not as fast as we wish for (Customer does it's own QA additionally, and very slow).

@salzig kind of impossible to do this without some very bad side effects (exploding metric counts)
The change was flagged as a major change we did major version bump here.

@SamSaffron i don't see a problem with the name change in the major version. Maybe our setup is "strange", but name changes on one day to another are quite annoying, as we have to choose between showing the old or the new name, or query both metrics in our panels, as our Grafana installation is central across all environments.
Sorry, overall my last message was written in frustration, cause another metric (http request duration) was also renamed, and additionally lost a label which we used (status). Keeping a old version, isn't really an option. So we need to figure out how to proceed.
Thanks to all of you for providing and maintaining this as open source.


Pulse rifle projectiles collide with crit characters

Description
The projectiles of the pulse rifle will still collide with the bodies of people who are critical, even when not aiming at them.
Reproduction
Step 1. Crit someone
Step 2. Fire past them with a pulse rifle
Screenshots

Additional context
None

As of current the system that lets bullets pass over people only functions for projectiles

Considering that it applies to lasers too I think this is a dupe of this one #27988
Then again if you have a pulse rifle you likely are going to be killing everything in your path.


Relationship between Protocols and object types

I feel the verbs in the "Protocols" box are tied to certain types of objects (e.g. Withdrawal is related to Financial Instruments, I guess). Can we somehow preserve this relationship?

Yes, we talked about a model where the protocols might go under each object as a "method", in UML.
More discussion is needed.


Stuck on Allocating Files when Installing

Same issue as before, where I get stuck on the 'allocating files on disk' loading bar when trying to install Genshin Impact 5.1. I left it on all night and it was still loading in a loop, no progress made. The folder I have it in is empty and all the past versions I've downloaded are deleted.
macOS Montery Version 12.5
Macbook Air 13 inch 2019
Apple M1
8 GB
I recall having this problem with past versions (4.0 patches) which I mentioned in another issues. It eventually began downloading resources but it didn't take as long as an entire night.

Please read the readme. You need macOS 14.4 or later.

Please read the readme. You need macOS 14.4 or later.

i have macOS 15.1.1 but same issue is with me too


Split 'Title' of Book into Commas

Allows for Full Title, fixing : breakage.
Book Title, Book Series, Book Two
Resolves https://github.com/KrumpetPirate/AAXtoMP3/issues/32

Talked about it in #32, but I feel like this is a subjective change. I would like to get some more feedback before this PR goes through.

Subjective change that I don't think most people will want


Implemented new logic components

Implemented two new logic components to improve DX.
Assert component
Type signature
pub Assert<T>(val T, val2 T) (res bool)

Note to review, please suggest better names for assert inports

Compares two values and  returns if they're equal
If component
Type signature
pub If(val bool) (ok any, else any)

Takes in a boolean and starts one of the two branches. Ok if the bool is true, else if its false
Example usage
component Main(start) (stop) {
    nodes { Println, assert Assert<string>, if If }
    :start -> [
        ('neva is cool' -> assert:val),
        ('neva' -> assert:val2)
       ]

       assert:res -> if

       if:ok -> ('They match' -> println -> :stop)
       if:else -> ('They do not match' -> println -> :stop)
}

I suggest call it Eq because "Assert" sounds like it should return error or panic
I suggest have two outports else and then instead of sending boolean. Send boolean is first thing that comes to mind but then you should "assert" that boolean (is it true or false?) and implement routing. I figured out some time ago that sending booleans isn't much useful in Neva compared to having several outports
I would like to discuss possibility of having array-inport so we can compare N values instead of just two, also discuss if we need this for streams

Renamed it as you wished.
I actually think sending a boolean is good, since you can build on top of the 'if' (we can add more and build an ecosystem for simple logic syntax). Having two outports forces you to use it in a specific way instead of it being flexible.
3.You can just use iter

Having two outports forces you to use it in a specific way instead of it being flexible

Why? Could you please provide some proof?

If and Eq will pair nicely with Iter

I don't think user should use Iter most of the time preferring something like map/filter/reduce/for
Could you please show some examples?


How can I get exact clicked point when Image is rotated?

I used viewportToImageCoordinates and pointFromPixel to get clicked cursor point relative to the image canvas.
But when image is rotated (90,180,270) these values will be not reflected with the rotate so results will be wrong in this case.
Also I think this applies to getting topLeft and bottomRight functions.
How can I solve this and get point in terms of rotation value?
Here is the code I used so far:
//for the point:
newPoint = new OpenSeadragon.Point(clickPoint.x, clickPoint.y);
canvasPoint = parent.previewImageController.viewport.viewportToImageCoordinates(newPoint);
imagePoint =  parent.previewImageController.viewport.pointFromPixel(canvasPoint);
//for topLeft,bottomRight
imgBounds = new OpenSeadragon.Rect(0, 0, viewer.source.width, viewer.source.height);
topLeft = viewer.viewport.imageToViewerElementCoordinates(imgBounds.getTopLeft());
bottomRight = viewer.viewport.imageToViewerElementCoordinates(imgBounds.getBottomRight());

Thanks @iangilman for the help.
two sequences gave me same results.I think these functions are taking the rotate into consideration But calculating the viewed area width and height is not correct depending on the topLeft and bottomRight.
So when getTopLeft , getBottomRight are called. do they change according to the rotate state? or they are relevant to the main image?
Thanks,
Asma

Hmm... I'm getting a little lost. Maybe we should be working on a CodePen so we can play with the same code directly?
Anyway, let me go through your code and how I see it.
For the point
Here's the first line. I'm assuming clickPoint is in web coordinates, so newPoint is also in web coordinates.
newPoint = new OpenSeadragon.Point(clickPoint.x, clickPoint.y);
Here we're converting newPoint (which is in web coordinates) using viewportToImageCoordinates which is supposed to take in viewport coordinates. Either I'm wrong and newPoint is actually in viewport coordinates, or you shouldn't be doing this.
canvasPoint = parent.previewImageController.viewport.viewportToImageCoordinates(newPoint);
Theoretically canvasPoint is in viewport coordinates (if newPoint was really in viewport coordinates), and here you're passing it into a function that's supposed to take web coordinates and convert them to viewport coordinates, which is backwards.
imagePoint = parent.previewImageController.viewport.pointFromPixel(canvasPoint);
You're telling me this sequence produces more accurate results, but it seems like you're passing all the wrong things in the wrong direction, so I don't know how it's working!
For topLeft,bottomRight
Here you're creating an unrotated rectangle in image coordinates. So far so good. Note that there's no rotation in this rectangle, which is as it should be (the rotation gets applied further up the chain).
imgBounds = new OpenSeadragon.Rect(0, 0, viewer.source.width, viewer.source.height);
Here you're using the correct conversion to go from image coordinates to web coordinates. Looking at the code for these functions it does look like it should be taking the viewport and image rotations into account.
topLeft = viewer.viewport.imageToViewerElementCoordinates(imgBounds.getTopLeft());
bottomRight = viewer.viewport.imageToViewerElementCoordinates(imgBounds.getBottomRight());

If this isn't getting you the right results, there may indeed be a bug. One way to track it down is to break it into smaller chunks... Internally  imageToViewerElementCoordinates converts first from image coordinates to viewport coordinates and then from viewport to viewer element (i.e. web, with the viewer element as the origin) coordinates. Try doing those conversions yourself and printing the results to see where the breakdown is. For instance:
var topLeft = imgBounds.getTopLeft();
console.log('image', topLeft.toString());
topLeft = viewer.viewport.imageToViewportCoordinates(topLeft);
console.log('viewport', topLeft.toString());
topLeft = viewer.viewport.viewportToViewerElementCoordinates(topLeft);
console.log('web', topLeft.toString());

Anyway, perhaps a CodePen would help us get on the same page?

Ops I'm sorry .. I was getting point like the sequence you've mentioned. That's why its working lol :)
And I used the wrong sequence for converting the topLeft,bottomRight.
so after I get the topLeft, bottomRight ; I call a function which convert the imagePoint to canvasPoint , so I shouldn't do this..
I think to calculate width, height regardless of the rotate state..I've to directly use imgBounds.getTopLeft();, imgBounds.getBottomRight();
without any conversion ..?
I'll try this way. if It didn't work I'll put my code on CodePen so we can investigate easier.
Thanks alot 👍

Sounds good :)


Build BoringSSL tests as BoringSSL does.

BoringSSL builds its crypto_test and ssl_test as single targets, while
gRPC was building them with a target per file. This no longer works with
tip-of-tree BoringSSL.
This change aligns gRPC with the way that BoringSSL builds its tests.
The changes to boringssl/gen_build_yaml.py were done by hand, all other
changes result from generate_projects.sh.

Thank you for your pull request. Before we can look at your contribution, we need to ensure all contributors are covered by a Contributor License Agreement.
After the following items are addressed, please respond with a new comment here, and the automated system will re-verify.

User @agl isn't covered by a CLA. They will need to complete the form at https://identity.linuxfoundation.org/projects/cncf

Regards,
CLA GitHub bot

@thelinuxfoundation CLA is okay, that's another Googler.

None of the failures are related to BoringSSL, and are existing broken tests.


./gradlew build upload pom files with incorrect groupId

very similar to https://github.com/couchbase/couchbase-lite-java/issues/85 when we build couchbase-lite-android
for couchbase-lite-android I need to apply the following workaround
https://github.com/couchbase/couchbase-lite-android/blob/master/release/upload_android_artifacts.sh#L11-L13

duplicated: https://github.com/couchbase/couchbase-lite-java/issues/85


Support animate on viewport

Only begin the animation once the element has entered the viewport. This makes it easy to make animations happen has the user scrolls down the page.
There should also be a threshold so that the developer may choose to only activate the animation once the element is 30% up the page.
Example: https://michalsnik.github.io/aos/

Nvm https://react-component.github.io/scroll-anim/
Thanks for making these!


"No Tokens found" error when exporting with any selections

Hey @lukasoppermann! Thanks for this fantastic plugin.
When running the plugin currently - with any permutation of types included in export - seeing a "No tokens to export!" Error:

Previously was receiving an export of selected types.
Settings:

I'll look into it later today. Sorry for the issue

Thanks @lukasoppermann! After some testing it looks like https://github.com/lukasoppermann/design-tokens/commit/985b64abbdedba8f6024583d7ca064d0dd0b46df is the last tip that exported successfully. We could revert up to (but not including)  https://github.com/lukasoppermann/design-tokens/commit/985b64abbdedba8f6024583d7ca064d0dd0b46df while the issue is investigated? 😄

Hey, yeah I think I already know what the bug is. But I am not at my Mac so I can not fix or release atm.

Hey @DanielTamkin I hope I fixed it now. 😬

Hey @DanielTamkin I hope I fixed it now. 😬

Looks like it! Thanks @lukasoppermann 😄


Local pull request success status testing

Docs Build status updates of commit 23b166a:
:clock10: Pending: waiting for processors (15 builds ahead of you)
:warning: Docs Build is busy, currently there are 15 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 23b166a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

E2E_DocsBranch_Dynamic/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


IPROTO-52 ProtoSchemaBuilder fails with Date and Instant fields that …

https://issues.jboss.org/browse/IPROTO-52

Integrated in 4.1.x, 4.2.x and master.


Video frame ordering / in Consumer

This needs to be implemented in the respective clients:
Android client
Mac / iOS client
FFmpeg client

Fixed by @grill2010 (PR #60)


Atom won't start on OS X 10.10

I recently updated Atom to 0.152, now it won't start. Here's the error message I'm getting

Any ideas what's going on?

This issue is quite old now and hasn't been reported by others on recent versions of Atom so I'm going to close this out. Please comment if you still experience this crash on Atom 1.0+.


MON & SVC data in ctapipe

Hi,
writing the reader for LSTCam data I run into a conceptual problem: LST data files include a CameraConfiguration header (one per file) that contains data that could be consider SVC or MON data, and can be read/set one time per file. Wondering on where to place them into the containers, I realized that in ctapipe the EVT, MON and SVC concepts are still missing. We have for example
r0.tel[m].waveform
and not
r0.tel[m].evt.waveform
so, in the case of LST specific data, I plan to introduce the evt and svc containers, like
lst.tel[0].evt.xxx --> for event specific data
lst.tel[0].svc.yyy --> for camera specific data
what do you think, is there anything wrong with that?
Cheers
Franca

so far, the event structure is supposed ot be for only EVT data, though we have mixed in some SVC header info (e.g. mcheader, and inst.subarray) that will be removed in the next version, and handled separately from the event data.
The current way we do things is that all header info is part of the instrument config, and eventually only things that change per event should be in the event container.  however, the containers do have a concept of meta-data headers, which you can access via e.g. event.meta, or event.r0.meta, and anything in those meta dicts will be written to the output file's header.  So probably for now that is where you want to put this info. It is free-form, so no need for any structure to it, just key=value pairs.
Can you give examples of what data this is? That would help to structure things better.

Hi Karl,
too late ;-)  I implemented the SVC data in a LSTServiceContainer included in container.py that is filled in lsteventsource.py, you can see there the fields implemented till now (some are still not completely explicited, e.g. algorithms or pre_proc_algorithms, and others are still missing because I wait for the new EventBuilder version)... but no problem to change. Some of the data are indeed instrument data (e.g. num_pixels which can now be reached as event.lst.tel[telid].svc.num_pixels) and other are more software-like data (e.g. data_model_version which can be reached as  event.lst.tel[telid].svc.data_model_version)... Let me know what do you suggest


v1.2.0

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)
[ ] I have read the CONTRIBUTING document.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Coverage increased (+0.05%) to 97.333% when pulling 92f738d0f415aacab5fe1101f2f4eaa974b50654 on dev into 40b1282600de4cb752371df629f9ce59bbc77085 on master.

Coverage increased (+0.05%) to 97.333% when pulling 92f738d0f415aacab5fe1101f2f4eaa974b50654 on dev into 40b1282600de4cb752371df629f9ce59bbc77085 on master.

Coverage increased (+0.5%) to 97.744% when pulling 48623742a79b42d81604f88f1b9d689dc2e3880d on dev into 40b1282600de4cb752371df629f9ce59bbc77085 on master.


fix: Detect unsupported default arguments

Fixes #658

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

Project coverage is 92.49%. Comparing base (bb2ca83) to head (0e01c79).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #659   +/-   ##
=======================================
  Coverage   92.49%   92.49%
=======================================
  Files          66       66
  Lines        7503     7505    +2
=======================================
+ Hits         6940     6942    +2
  Misses        563      563

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

🚨 Try these New Features:

Flaky Tests Detection - Detect and resolve failed and flaky tests


.jsx -> .js

Pretty much all component files and anything that you will be adding to the project folder will have a .js ending (not applicable to CSS files, etc.).
They are pretty much interchangeable I believe, but .js is more likely to be configured. I think there was some weird error messages in the code cause of the .jsx ending.

[ ] switch all .jsx endings to .js under the Components folder

Update: it's recommended to use .jsx for any files that render/return React, and .js for helper/non render functions.


suggest make pack commit process timeout configurable

gogs  <IP_ADDRESS>7
git version 2.15.0.windows.1
OS: win7 64
SQLite
can always reproduce the bug
Description
download release as zip in repository with many big binaries , gogs shows 500 page.
in log file, it shows:
routes/repo/repo.go:329 Download() CreateArchive xxxxx.zip execution is timeout [duration: 1m0s]
this always happened at first try, but for second time , it may success (maybe already in fs cache)
we have many binaries in repo and 1min is not enough, suggest make this value configurable

DEFAULT_TIMEOUT = 60 * time.Second
at git-module/command.go:51


Add version info to the banner

If we're going to have an enormous banner we may as well use it to display some useful information by default! This is just a suggestion - totally support any other formatting or feel free to close if you don't think it's worthwhile.

Awesome, totally makes sense.
Also mamba --version should show something different (currently it shows the conda version).


web console in 'coordinator' fallback mode context menu has query with sql option

Affected Version
0.17.0+
Description
Very minor issue on datasources view (maybe others?), but the context menu still has the query options:

Clicking takes you to the query page which promptly errors about not being able to query.

Lol finally got around to fixing it ☝ . It took exactly 20 seconds.


Remove GitPython dependency, by using subprocess module

Revamp of #71.

review?  @willkg

The changes look fine, but I'm not verifying them--assuming they work correctly.


[_]: fix/update package version

Codecov Report

Merging #152 (03e3551) into master (3355838) will not change coverage.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##           master     #152   +/-   ##
=======================================
  Coverage   70.66%   70.66%
=======================================
  Files          39       39
  Lines         934      934
  Branches      123      123
=======================================
  Hits          660      660
  Misses        250      250
  Partials       24       24

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


chore: Added detailed information about usage password and create_random_password

Description
I added information about the usage of password and create_random_password because it is quite confusing at the moment. It should solve the issue #402 .
Fixes #402
Motivation and Context

Multiple people noticed that it was unclear that setting a value to password will not use it if the create_random_password was not also set to false at the same time.
Breaking Changes

No breaking changes.
How Has This Been Tested?

[x] I have updated at least one of the examples/* to demonstrate and validate my change(s)
[x] I have tested and validated these changes using one or more of the provided examples/* projects

[x] I have executed pre-commit run -a on my pull request

This PR is included in version 5.1.0 :tada:


Rephrase instructions on Waypoint: Stand in Line

Instructions were unclear as to what the function should return.
fixes #5655

:+1:

:+1:


Support disabling / hiding editor actions (icons at the right of tab bar)

I don't like editor actions (the little icons on the right of the tab bar)

, because:

I don't use them (I invoke the commands via keyboard shortcuts or the command palette)
they consume precious space
they add UI clutter

So, I'd like to hide them. Ideally, VSCode issue https://github.com/Microsoft/vscode/issues/46403 would be addressed to enable hiding all/some of them, but it's not yet, so on GitLens side I'd love a gitlens.editorActions.enabled setting letting me disable them.
Thanks for GitLens 🙂!

This is supported today. While the documentation of it is practically non-existent (using the gitlens.menus setting), the GitLens settings editor provides easy access (run GitLens: Open Settings from the command palette).
Here are the settings in simple mode:

Use the dropdown pointed at to switch between simple and advanced.
Hope that helps.

This is supported today. While the documentation of it is practically non-existent (using the gitlens.menus setting), the GitLens settings editor provides easy access (run GitLens: Open Settings from the command palette).
Use the dropdown pointed at to switch between simple and advanced.
Hope that helps.

@eamodio it does! I had searched the gitlens settings namespace, but  missed gitlens.menus So,
    "gitlens.menus": {
        "editorGroup": {
            "blame": false,
            "compare": false
        }
    },

Thanks!

With updated UI

All these should be false by default. I'm uninstalling GitLens until VSCode allows better management of editor actions.

@sytelus You can easily set them off yourself.

@shiraze Please feel free to open a PR for adding more documentation -- thanks!

Is there a way to only show compare icons when in a diff?

@trkoch which compare icons? As for the ... menu that isn't currently an option.


fix: Removed possible decimals from get_hex_temp_into_index

The Canadian website (and surely others) sometimes returns a decimal for temperatures. Since the expected value is an integer, it crashes everything. See crash report below.

Failed setup, will retry: Config Not Ready: Error communicating with API: Traceback (most recent call last): File "/config/custom_components/kia_uvo/coordinator.py", line 126, in _async_update_data await self.hass.async_add_executor_job( File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/VehicleManager.py", line 115, in check_and_force_update_vehicles self.update_vehicle_with_cached_state(vehicle_id) File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/VehicleManager.py", line 90, in update_vehicle_with_cached_state self.api.update_vehicle_with_cached_state(self.token, vehicle) File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/KiaUvoApiCA.py", line 180, in update_vehicle_with_cached_state self._update_vehicle_properties_base(vehicle, state) File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/KiaUvoApiCA.py", line 251, in _update_vehicle_properties_base tempIndex = get_hex_temp_into_index( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/utils.py", line 39, in get_hex_temp_into_index value = int(value, 16) ^^^^^^^^^^^^^^ ValueError: invalid literal for int() with base 16: '24.5' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/config/custom_components/kia_uvo/coordinator.py", line 135, in _async_update_data await self.hass.async_add_executor_job( File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/VehicleManager.py", line 85, in update_all_vehicles_with_cached_state self.update_vehicle_with_cached_state(vehicle_id) File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/VehicleManager.py", line 90, in update_vehicle_with_cached_state self.api.update_vehicle_with_cached_state(self.token, vehicle) File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/KiaUvoApiCA.py", line 180, in update_vehicle_with_cached_state self._update_vehicle_properties_base(vehicle, state) File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/KiaUvoApiCA.py", line 251, in _update_vehicle_properties_base tempIndex = get_hex_temp_into_index( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/hyundai_kia_connect_api/utils.py", line 39, in get_hex_temp_into_index value = int(value, 16) ^^^^^^^^^^^^^^ ValueError: invalid literal for int() with base 16: '24.5'

@cdnninja Is this something that can be added to the API shortly? It's often causing everything for my vehicles in Home Assistant to become unavailable due to a crash when the API receives decimals from the Kia interface. Thanks 😃

Thanks for the ping. I was meaning to run through some test cases on this to confirm it doesn't break hex values.

I don't see how this code would work.  If you run this code and pass 24.5 to it the response will be 36.  It won't crash but won't give you the right value.   I would think this code should detect if hex, if it isn't pass it through.   If hex convert to the value.

I would think swap the if statement to:
   if value is not None and value[-1] == 'H':
As well as the return on the else to be return value.

Turning 24 to 36 was the way the original code was intended to work, changing hex to int.
The issue is that newer vehicles will sometimes send 24.5, which converts to 36.3125 and crashes when calling int(24.5, 16) since int() crashes when the input isn't an integer.
To avoid this, the .split(`.`)[0] code I added just strips any decimals from the hex code before parsing it. I don't believe there is a need to check if it's hex or not, since this function is meant to convert hex to integer. The only issue is that the original code assumed all hex values were whole numbers, and newer vehicles return decimal values, crashing the function.

Now that I comment I realized my proposed code won't work either for you.
Looks like your car is returning degrees not a hex list value.    Older cars would return 0BH in the temp field as an example.  That code would convert to 11 after you strip the H.   That 11 is position 11 in a list of possible temps.  That temp list changes by year.
It was really clunky but not our choice, rather the APIs.  It looks like they finally just return the real value for newer cars.
Some of this is outlined here: https://github.com/Hyundai-Kia-Connect/kia_uvo/issues/220
Here is the Canadian temp ranges that are compared to the list: https://github.com/Hyundai-Kia-Connect/hyundai_kia_connect_api/blob/07d765dfe4b5a5bd5860e06be7fd270c0e77e32c/hyundai_kia_connect_api/KiaUvoApiCA.py#L66-L68
I think the right fix is to add the if statement I mentioned to this block of code: https://github.com/Hyundai-Kia-Connect/hyundai_kia_connect_api/blob/07d765dfe4b5a5bd5860e06be7fd270c0e77e32c/hyundai_kia_connect_api/KiaUvoApiCA.py#L251-L263
So if the value isn't hex, rather a temp just place the temp into the temp field.

I see what you mean. You are correct, my vehicle is returning straight decimal as opposed to hex. When I started my vehicle and set the temperature to 20.5C, I later got "airTemp": { "value": "20.5", "unit": 0 } . I'll adjust the code accordingly. Thanks.

Looks like now the code wouldn't crash but it doesn't map the value so you won't have the sensor in ha.  An else statement would be needed that does that when it isn't hex.

Isn't it mapped at line 301?
vehicle.air_temperature = (
    get_child_value(state, "status.airTemp.value"),
    TEMPERATURE_UNITS[0],
)

I'll merge this.  As a note I suspect you will have remote start issues since it translates it to hex for that too.
Thanks for the work on this!

Thanks. I will test the remote start later, but I did snoop what was being sent to the server, and it is in HEX for the remote start request.


Unable to install AWSToolkitPackage.v17

Computer (please complete the following information):

Windows Version: 10 Version 22H2
Visual Studio Version: Microsoft Visual Studio Professional 2022 (64-bit) - Current
AWS Toolkit for Visual Studio Version: Trying to install AWSToolkitPackage.v17.vsix

dd_VSIXInstaller_20240112100825_3898.log
dd_VSIXInstaller_20240112100825_3898.log
Install log

Hi @gmsilvey , it sounds like you are running a version of Visual Studio 2022 that is lower than 17.7. You will need to update your instance of Visual Studio to the latest version, and you will then be able to install the Toolkit.
See https://github.com/aws/aws-toolkit-visual-studio/issues/375 for details.

Hello @gmsilvey,
Closing this since it sounds like you were able to resolve the issue by upgrading your installation. If it did not resolve your issue, please feel free to reopen this and add relevant details that would help us dig further.


helper for website ID <-> domain/slug

Allows traversal through the control panel api from website domain / slug to id and vice versa.
Also includes an update in the project list view + adds a pager there.

Left a comment, the column should probably be renamed, but up to you. LGTM otherwise.

LGTM


KeyVault scenarios need to support AccessTokens and Credentials.

I can see three possibilities for KeyVault scenarios.

the host is running in a secure cluster, no credentials.
the host has obtained an access token for KeyVault.
the host has credentials to get an access token for KeyVault.

Our current deliverable is tailored to 1.
This issue is about supporting 2,3.
We can push implementation off till vNext, but need to make sure it will fit nicely.

This is included in the current implementation of issue #936.

Moving to 5.2.5 since this work is already implemented in pull request #984.

https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/984


Small typos

Step 1 - Section 2. : Stop-Service -Name  [Missing ServiceName]
In addition you need to use parameter "-Force" as TermService has dep. services
Step 2: Section 1 & 3:
There are multiple powershell lines joined into 1 in the code snippets. For example:
Section 1:
Import-Module PKI Set-Location Cert:\LocalMachine $RdpCertThumbprint = 'Cert:\LocalMachine\Remote Desktop'+((Get-ChildItem -Path 'Cert:\LocalMachine\Remote Desktop').thumbprint) Remove-Item -Path $RdpCertThumbprint
Section 3:
icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys /t /c > c:\temp\BeforeScript_permissions.txt takeown /f "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /a /r
etc.

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

ID: 500257df-925a-52ad-74f3-5856c712a09c
Version Independent ID: 6204cf81-68b6-2f92-a939-1aa2db35c063
Content: An internal error occurs when you make a RDP connection to Azure Virtual Machines
Content Source: articles/virtual-machines/troubleshooting/troubleshoot-rdp-internal-error.md
Service: virtual-machines-windows
GitHub Login: @genlin
Microsoft Alias: genli

Thanks for the feedback! We are currently investigating and will update you shortly.

@milanio Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

@milanio, thanks for the feedback. I will update the article.

@@milanio, a pull request has been submitted to fix the issues. I will process to close the issue. Free feel to reopen the issue if you have any additional comment about this matter.

#please-close

@genlin @Karishma-Tiwari-MSFT  Thank you!


Ensure signal is queued in poll_transform_vm_complete also for warm migration

When we run a warm migration, the current code doesn't queue the poll_transform_vm_complete signal.
This pull request adds a specific message for warm migration and ensure that we queue the signal in any case. It also adds a spec for that.
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1817096

@miq-bot add-label v2v, bug, ivanchuk/yes, jansa/yes

Jansa backport details:
$ git log -1
 commit 5f4a6c823698c1d7b52eb8ca894444ff84db262a
Author: Adam Grare<EMAIL_ADDRESS>Date:   Thu Apr 2 13:04:54 2020 -0400

    Merge pull request #20040 from fdupont-redhat/bz_1817096_2

    Ensure signal is queued in poll_transform_vm_complete also for warm migration

    (cherry picked from commit 65c2add79a38a44e134576be953969fa2fcebb32)

    https://bugzilla.redhat.com/show_bug.cgi?id=1817096


Update custom-templates.mdx

Summary
For an example in website/src/pages/docs/custom-templates.mdx, the variable path is not defined. This PR adds it.
Test plan
I have copy-pasted the template and now it works.

Thanks!


Travis - run nightly PHP

Let us run 7.1@dev on Travis, as we already have few cases for it.
master branch check: https://travis-ci.org/keradus/PHP-CS-Fixer/builds/143149413

Does travis not allow us to ask for 7.1 rather than nightly?

I don't think there is an alias setup'ed by Travis of 7.1 to the current PHP build (as was done for 7.0 until 7.0 was released).
Nice idea btw., we could leave the nightly in as is even when 7.1 stable is out right?

after 7.1 will be officially added as 7.1 and not nightly then let see what will be the nightly. It 7.2 then great to have, if only just 7.1.X then doesn't matter.


MudAutocomplete Validation does not work with pre-filled value when required

Bug type
Component
Component name
MudAutocomplete
What happened?
MudAutocomplete does not seem to reflect the IsTouched and IsValid status correctly. Especially if the field is already prefilled and set to Required="true". I have recreated the situation in the Playground.
The current behavior makes validation difficult. In my case, I want to enable the 'Save' button when IsTouched and IsValid is true. This is the case when someone wants to edit data. Then they are pre-filled.
Expected behavior
If the form is valid, IsValid should be true. If MudAutocomplete is selected, IsTouched should also be true.
Reproduction link
https://try.mudblazor.com/snippet/GamSkhFLdmCrUpcM
Reproduction steps

Open the Link.
See that IsValid is false.
Select the Autocomplete Field.
Click outside of the Field to lose focus.
See that the IsTouched is still false.

Relevant log output
No response
Version (bug)
7
Version (working)
No response
What browsers are you seeing the problem on?
Firefox, Chrome, Edge
On which operating systems are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

MudForm at start (OnAfterRenderAsync) take the valid state if none field is required, but don't do a complete validation.
The validation is executed only after a user interaction.
@ScarletKuro , is the desired behavior?

@ScarletKuro , is the desired behavior?

I'm not really familiar with the internal validation processes in mudblazor as it was done way before me, I usually ask consultation from @henon :)

MudForm at start (OnAfterRenderAsync) take the valid state if none field is required, but don't do a complete validation. The validation is executed only after a user interaction.
@ScarletKuro , is the desired behavior?

        protected override Task OnAfterRenderAsync(bool firstRender)
        {
            if (firstRender)
            {
                var valid = _formControls.All(x => x.Required == false);
                if (valid != IsValid)
                {
                    // the user probably bound a variable to IsValid and it conflicts with our state.
                    // let's set this right
                    SetIsValid(valid);
                }

            }
            return base.OnAfterRenderAsync(firstRender);
        }

I would say the comment speaks for itself, this was never about causing a validation run but for keeping consistency. I don't know what side effects doing a full validation run on first render would cause. This would have to be carefully analyzed.

It would help if a click on the MudAutocomplete would behave just like other form inputs e.g. MudTextField when touched.
At the moment, it does not set IsTouched to true and therefore does not trigger the validation.

MudAutocomplete has this comment in the method OnInputBlurredAsync :

we should not validate on blur in autocomplete, because the user needs to click out of the input to select a value, resulting in a premature validation. thus, don't call base base.OnBlurred(args);

So only a value selected from the drop down trigger the validation.
Indeed, it isn't homogeneous with MudInput.

You can manually force the validation on autocomplete blur like :
<MudForm @ref="form" @bind-IsValid="IsValid"
         @bind-IsTouched="IsTouched">
    <MudAutocomplete T="string" Label="US States" @bind-Value="choice3.State" Required="true"
         ...
         OnBlur="ForceValidation"/>
</MudForm>

@code {
    MudForm form;

    private void ForceValidation()
    {
        form?.Validate();
    }

    // ...
}

See this example :
https://try.mudblazor.com/snippet/mEmyaCQTCknWoTkm


Evaluate travis as a way to vet PRs

Assuming we could write some kind of validator for the htaccess files, it should be easy to write a .travis.yml that can be used to assist with PR evaluation.

Minimally, Travis could install a minimal Apache2 and run apachectl configtest: https://httpd.apache.org/docs/2.4/programs/apachectl.html

The current code uses Ansible and targets Debian 8 (Jessie). This works well for Vagrant and deployment. But Travis uses shell commands and Ubuntu 12.04: http://docs.travis-ci.com/user/installing-dependencies/
Switching from Debian to Ubuntu is not a big deal.
This guy uses Ansible inside Travis, but that strikes me as a bad idea: https://servercheck.in/blog/testing-ansible-roles-travis-ci-github

I want to pull from master directly to production, run make, and assume that everything will work. That could be contingent on a green light from Travis? Their API exposes last_build_status: http://docs.travis-ci.com/api/?http#repositories
If we can't do that, we'll have to do some sort of automatic rollback...

After a monstrous amount of trial and error, I think this is working correctly.


Error using main instead of master

Error: Command failed: "C:\Users\Admin\Downloads\Git-it-Win-ia32\Git-it-Win-ia32\resources\app\assets\PortableGit\bin\git.exe " reflog show origin/master fatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git  [...] -- [...]'
I had to use "main" instead of "master"

This error happened with me as well. The default branch seems to be "main," not "master". When I attempt to work around this by creating a new branch called "master," it is unable to push to the branch.

#318 should fix this issue, guess we'll need to wait until the merge is made…


Create areas that don't affect the default areas

Is your feature request related to a problem? Please describe.
It would be nice to be able to create distinct areas in addition to local and sync. For example, a state area used only for extension state management.
Describe the solution you'd like
import { createArea } from '@bumble/storage'

const state = createArea('state', 'local')

State has all the methods and props that a classic storage area has, but behaves as if it is it's own area. state.get only returns values stored in the state area. state.set likewise only affects state area. state.valueStream only fires for changes in the state area.
Calls to chrome.storage.local.get should not return the values for the state area, so this will require a polyfill. New areas will not create new areas on chrome.storage.
This can be done by creating hashed keys for the new area, and filtering them out of the classic area results, and vice versa.

This is resolved with getBucket.


FIO-7933 added PDF Document Designer

Link to Jira Ticket (if applicable)
https://formio.atlassian.net/browse/FIO-7933
Description
Added PDF Document Designer for Webform PDF Output.
Dependencies
https://github.com/formio/formio-app/pull/1551
https://github.com/formio/formio/pull/1722
https://github.com/formio/pdf-server/pull/332
https://github.com/formio/formio.js/pull/5539

👍


Default range + more range functions

Provide default range when only information available is a line number (#248)
New CodeNarc issues definition to calculate range in file

GStringExpressionWithinString
VariableName

Fixes https://github.com/nvuillam/npm-groovy-lint/issues/248

Codecov Report
Base: 93.08% // Head: 92.86% // Decreases project coverage by -0.21% :warning:

Coverage data is based on head (5e0758e) compared to base (ad98ca4).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #249      +/-   ##
==========================================
- Coverage   93.08%   92.86%   -0.22%
==========================================
  Files          80       82       +2
  Lines        1980     1991      +11
==========================================
+ Hits         1843     1849       +6
- Misses        137      142       +5

Impacted Files
Coverage Δ

lib/rules/BlankLineBeforePackage.js
88.88% <ø> (ø)

lib/codenarc-factory.js
92.40% <100.00%> (-1.10%)
:arrow_down:

lib/rules/GStringExpressionWithinString.js
100.00% <100.00%> (ø)

lib/rules/VariableName.js
100.00% <100.00%> (ø)

lib/utils.js
97.34% <100.00%> (+0.01%)
:arrow_up:

lib/output.js
92.42% <0.00%> (-0.76%)
:arrow_down:

lib/codenarc-caller.js
82.73% <0.00%> (-0.72%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Specify that hostcert.pem should not contain the whole chain

Does this actually break stuff?

I seem to recall a fullchain hostcert breaking some things but can't seem to remember exactly what they were


Deployment yaml files are outdated and throw errors when using with Kubernetes v1.19.2 (Qwiklabs)

All deployment yaml files need to be updated in order to work with latest Kubernetes versions.
The apiVersion for deployment objects has changed and is now apps/v1 and also selectors are mandatory.
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
      track: stable
  template:
    metadata:
      labels:
        app: auth
        track: stable
    spec:
      containers:
        - name: auth
          image: "kelseyhightower/auth:2.0.0"
          ports:
            - name: http
              containerPort: 80
            - name: health
              containerPort: 81
          resources:
            limits:
              cpu: 0.2
              memory: "10Mi"
          livenessProbe:
            httpGet:
              path: /healthz
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 15
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /readiness
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            timeoutSeconds: 1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
      track: stable
  template:
    metadata:
      labels:
        app: frontend
        track: stable
    spec:
      containers:
        - name: nginx
          image: "nginx:1.9.14"
          lifecycle:
            preStop:
              exec:
                command: ["/usr/sbin/nginx","-s","quit"]
          volumeMounts:
            - name: "nginx-frontend-conf"
              mountPath: "/etc/nginx/conf.d"
            - name: "tls-certs"
              mountPath: "/etc/tls"
      volumes:
        - name: "tls-certs"
          secret:
            secretName: "tls-certs"
        - name: "nginx-frontend-conf"
          configMap:
            name: "nginx-frontend-conf"
            items:
              - key: "frontend.conf"
                path: "frontend.conf"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-canary
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello
      track: canary
      version: 2.0.0
  template:
    metadata:
      labels:
        app: hello
        track: canary
        version: 2.0.0
    spec:
      containers:
        - name: hello
          image: kelseyhightower/hello:2.0.0
          ports:
            - name: http
              containerPort: 80
            - name: health
              containerPort: 81
          resources:
            limits:
              cpu: 0.2
              memory: 10Mi
          livenessProbe:
            httpGet:
              path: /healthz
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 15
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /readiness
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            timeoutSeconds: 1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-green
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello
      track: stable
      version: 2.0.0
  template:
    metadata:
      labels:
        app: hello
        track: stable
        version: 2.0.0
    spec:
      containers:
        - name: hello
          image: kelseyhightower/hello:2.0.0
          ports:
            - name: http
              containerPort: 80
            - name: health
              containerPort: 81
          resources:
            limits:
              cpu: 0.2
              memory: 10Mi
          livenessProbe:
            httpGet:
              path: /healthz
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 15
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /readiness
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            timeoutSeconds: 1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello
      track: stable
      version: 1.0.0
  template:
    metadata:
      labels:
        app: hello
        track: stable
        version: 1.0.0
    spec:
      containers:
        - name: hello
          image: "kelseyhightower/hello:1.0.0"
          ports:
            - name: http
              containerPort: 80
            - name: health
              containerPort: 81
          resources:
            limits:
              cpu: 0.2
              memory: "10Mi"
          livenessProbe:
            httpGet:
              path: /healthz
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 15
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /readiness
              port: 81
              scheme: HTTP
            initialDelaySeconds: 5
            timeoutSeconds: 1
...

Use this repo https://github.com/DhruvSondhi/orchestrate-with-kubernetes for git clone statement, it will solve the issue you are facing and you will be able to complete the lab. I was having the same trouble, I found the fix in one of the open issue pull request.
git clone https://github.com/DhruvSondhi/orchestrate-with-kubernetes


Missing instruction

Add: "Click on Add data"
Module: 00
Lab/Demo: 00
Fixes # .
Changes proposed in this pull request:

Submitted by Tattedgeek on behalf of MOC Labs Review

Resolved


DO NOT MERGE: Go-based kind deployment

As we talked in person the first thing to do is to divide this into multiple patches so it can be reviewed, as ~6300 lines is a bit too much.
I'll start familiarizing myself with the code though, for when you start sending those new PRs. BTW, make sure that your commit messages and PR messages are descriptive of what they introduce.

A general comment. There are flags that you repeat a lot across commands. They should be all declared once and added to the commands that make use of it. Too much repetition of code.

Shall we close this one ? it will always be pull#1 in our hearts ;) , easy to find


fixes #51 make knativeDeploy:true work; tested addon:gloo and deploye…

fixes #51
make knativeDeploy:true work
tested with addon:gloo deployed node-http quickstart to gke
note: not sure of the ramifications of removing terminationGracePeriodSeconds but i am pretty sure it is deprecated

review request @jstrachan


Background Transparency, insert size, Font color of the lower third Inserts, size of custom inserts

Dear @heiko95 ,

Is it possible to adjust the trancparency of the created inserts?
The Insert "Bibelwort" has about 50-80% background transparency.
Maybe there's an option to programm a custom adjustable background transparency?

Can the size of the lower third inserts be adjusted in width and heigth?
In combination with font size some inserts may be better with less size... just an idea

changing Font color
If Background tranyparency is adjustable, the font color maybe has to be changed to f.e. white (if transparency is 100%)

Any chance to get the type of "Bibelwort" insert (on the whole screen) for custom inserts?
There are dates and things to communicate sometimes where the custom inserts are difficult to handle (1st row bold, second row not, no chance to adjust these settings).
A pretty nice option would be to create custom inserts like the "Bibelwort" insert. 1st custom "input box" is the headline and automatically bold, 2nd box is for free and custom inserts on the whole screen, maybe easier with up to 10 rows (2nd - 10th same formatting, the total of used boxes are displayed centered...

Thanks in advance for feedback ;-)
Kai

Is it possible to adjust the trancparency of the created inserts?
Yes: You can change the field "Transparenz Einblendefeld" in the InsertSettings between 0 and 255.
Can the size of the lower third inserts be adjusted in width and heigth?
Yes: You can change the font Settings and the Position and Size Settings in the InsertSettings between 0 and 255.
changing Font color
New issue created. See #41
Any chance to get the type of "Bibelwort" insert (on the whole screen) for custom inserts?
New issue created. See: #42


Notebooks: Adding Change Kernel API, 3 Integration Tests

Adding new API such that changeKernel() can be called on the notebook editor. Please give me feedback on this, especially around what you would expect it to return. I would much rather have an API people that people feel is super useful and take a bit more time with this PR than just get this in for the sake of it and have to revisit this a month from now.
Adding 3 new tests using such API. They all look similar, I know... But they all serve a purpose (intra provider kernel changes, SQL-Jupyter-SQL, Jupyter-SQL-Jupyter). Literally ALL of them found at least one bug:

Fixed an issue where the MainThreadNotebookEditor was not being informed of changes to the notebook provider
Fixed an issue in clientSession where, in certain cases, we weren't awaiting kernel.ready, which meant that the cachedKernelSpec wasn't getting updated, which MainThreadNotebookDocumentsAndEditors relies upon to keep kernelSpec up to date
Fixed a bug where we were notifying too much that kernel change events had occurred, causing a bunch of noise (up to 6 kernelChanged events firing in 1 kernel change). We can safely rely on the clientSession to let us know when a kernel is ready instead of also firing during StartSession() in the model.
Fixed an issue where sometimes editor windows in the tests would not close since they were dirty by leveraging a new vscode API

@chlafreniere any update on this? Can we finally get it checked in?


Unrechable types are resolved with read visibility

Follow up from https://github.com/microsoft/typespec/issues/2517
model Dog {
  @visibility("read") id: int32;
  @visibility("create", "update") secretName: string;
  name: string;
}

produce (missing secretName)
components:
  schemas:
    Dog:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int32
          readOnly: true
        name:
          type: string

Playground
The problem with just changing the resolution from Read to all is that you endup with some case when the name is DogReadOrCreateOrUpdateOrItem, not sure if it is a bug or a design issue to how we decide to keep the suffixless name when using Read

If you add a PUT operation, it generates Dog and DogCreateOrUpdate: Playground
I think this is by-design that we don't proactively generate the "CreateOrUpdate" versions of schemas unless they are needed. We do treat the canonical model as the "read" one; in the past we opted to eliminate the *Read suffix.
Are you saying the canonical model should be the one with secretName (i.e. the CreateOrUpdate version)?

As a workaround, you can apply @withVisibility("read", "create", "update", "delete") on the unreferenced schema and it will output correctly.


Claim rewards when stake is below 150millions EOS throws an error

Claim rewards when stake is below 150millions EOS throws an error
Screenshot attached

Test case that throws this problem is in PR 3156 (currently it's commented out in line 274)

Verified with PR #3191


first screen Error - hubzilla.ml

register leaves me on my own server.

view > This project is under development and is not yet available for general use.