[Feature Request] Support for os.PathLike

TL;DR
How can I make this code work?
@beartype
def for_any_pathlike(str | os.PathLike[str]):
    ...

for_any_pathlike("awesome_text.txt")  # it works!
for_any_pathlike(pathlib.Path("useful_data.csv"))  # raises `beartype.roar.BeartypeDecorHintNonpepException`

Content
There is a type alias StrPath defined in typeshed as
StrPath = str | os.PathLike[str]

Because the typeshed is not accessible at runtime, I tried to define StrPath myself and use it with @beartype like this:
from os import PathLike
from pathlib import Path

from beartype import beartype

StrPath = str | PathLike[str]

@beartype
def foo(path: StrPath) -> None:
    print(f"{path=!s}")

foo("test.py")  # "test.py"
foo(Path("test.py"))  # raises `beartype.roar.BeartypeDecorHintNonpepException`

The function foo worked as expected for "test.py" (string),  but it raised beartype.roar.BeartypeDecorHintNonpepException for Path("test.py") which is evaluated - at least in mypy - as PathLike[str]:
beartype.roar.BeartypeDecorHintNonpepException: Function __main__.foo() parameter "path" type hint os.PathLike[str] either PEP-noncompliant or currently unsupported by @beartype.

I presume this is because os.PathLike uses the way below to provide an interface for Generic:
GenericAlias = type(list[int])

class PathLike(abc.ABC):
    ...
    __class_getitem__ = classmethod(GenericAlias)

Therefore I hope beartype supports ABCs like os.PathLike. Currently, I use StrPath = str | Path and there is no problem in 99% of my cases, but it would be better to base it on os.PathLike.

...heh. Oh, os.PathLike – the red-headed stepchild of the typing world. Officially, the semantics of os.PathLike[...] have yet to be standardized; since there's no existing standard, everyone just makes up their own interpretation of what subscripting os.PathLike actually means. Unofficially, mypy currently enforces the following ad-hoc constraints on os.PathLike subscriptions:
S = TypeVar('S', bound=Union[str, bytes])
class PathLike(Generic[S], extra=os.PathLike): # or Protocol[S] in future
    def __fspath__(self) -> S:
        ...

Given that, @beartype can effectively type-check a type hint os.PathLike[T] as follows:

An arbitrary object obj satisfies a type hint os.PathLike[T] if and only if:

isinstance(obj, os.PathLike) and
isinstance(obj.__fspath__(), T)

That is to say:

obj must be an instance of os.PathLike (i.e., must define an __fspath__() dunder method).
The value returned by calling the obj.__fspath__() dunder method must be an instance of the same type T subscripting the original type hint os.PathLike[T].

Complications Arise, Yo
Of course, there are complications. The os.PathLike generic is way too permissive at runtime. Notably, os.PathLike allows itself to be subscripted by arbitrary type hints that make no sense: e.g.,
>>> from os import PathLike
>>> PathLike[list[int]]
PathLike[list[int]]  # <-- uhh. wut? this makes no sense, Python. *facepalm*

Supporting os.PathLike subscriptions thus also requires @beartype to handle erroneous subscriptions that make no semantic sense. Indeed, I think there's only four valid parametrizations of os.PathLike:

os.PathLike[str], implying isinstance(obj, os.PathLike) and isinstance(obj.__fspath__(), str).
os.PathLike[bytes], implying isinstance(obj, os.PathLike) and isinstance(obj.__fspath__(), bytes).
os.PathLike[typing.AnyStr], which reduces to just os.PathLike, implying just isinstance(obj, os.PathLike). The child type hint typing.AnyStr is semantically meaningless.
os.PathLike[typing.Any], which reduces to just os.PathLike, implying just isinstance(obj, os.PathLike). The child type hint typing.Any is semantically meaningless. Unsurprisingly, this is basically a duplicate of the prior subscription.

That's it. I think? Still, that's pretty annoying. That's yet more bureaucratic minutiae that @beartype has to manually implement, because CPython refused to do its job here.

"Urgh!"*

Definitely Feasible, Bro
That's... definitely feasible. Rejoice, everyone. Sadly, I also kinda have no volunteer time to do this. It doesn't help that CPython itself fails to validate os.PathLike[...] subscriptions and just lets anybody subscript os.PathLike by literally anything. :facepalm:
For now, would you just mind dropping the subscription [str]? That is, would you mind just doing this:
StrPath = str | PathLike

That should absolutely work out-of-the-box without requiring any changes to @beartype itself.

Therefore I hope beartype supports ABCs like os.PathLike.

@beartype definitely supports ABCs like os.PathLike – and always has, thankfully. It's just subscripting ABCs with arbitrary type hints like os.PathLike[str] and os.PathLike[list[int]] where complications arise. None of that has been standardized. So, @beartype has to just make up its own semantics and pretend that it knows what it's talking about. </sigh>

Yuppers. The custom Protocol approach also totally works. Clever workaround there. Sadly...

Is there any way to solve this without extra validators in beartype?

Tragically, not at the moment. When @beartype fails to do what you want out-of-the-box, extra validators save you from @beartype's personal failings. Validators save you from us.
 Since there are only two meaningful subscriptions of PathLike (i.e., PathLike[str] and PathLike[bytes]), you only need two beartype validators to make this magic happen. In fact, since you don't even care about PathLike[bytes], that's just one beartype validator. Pure static type-checkers like mypy and pyright will continue to support this as expected. Moreover, this approach avoids the need to define your own custom runtime Protocol subclass. It's simpler, faster, and simply magical.
Behold! PathLikeStr, arise like our Bengal cat from a crusty-eyed 14-hour slumber in our cat tree:
from beartype.vale import Is
from os import PathLike
from typing import TYPE_CHECKING, Annotated

# PathLike[str], but actually supported by everybody.
if TYPE_CHECKING:
    PathLikeStr = PathLike[str]
else:
    PathLikeStr = Annotated[PathLike, Is[
        lambda path_like: isinstance(path_like.__fspath__(), str)]]

# This is the way.
StrPath = str | PathLikeStr

Now, let's prove that actually does what @leycec promises that does:
# Import boring stuff.
>>> from beartype import beartype
>>> from os import fspath
>>> from pathlib import Path

# Prove that good always prevails.
>>> @beartype
... def foo(path: StrPath) -> str:
...     return fspath(path)
>>> foo("test")
'test'  # <-- good.
>>> foo(Path("more test"))
'more test'  # <-- GOOD.

  File "/home/leycec/tmp/mopy.py", line 31, in <module>
    foo(BytePath("ugly test"))
  File "<@beartype(__main__.foo) at 0x7f3acf351c60>", line 32, in foo
beartype.roar.BeartypeCallHintParamViolation: Function __main__.foo() parameter path=<__main__.BytePath object at 0x7f3acec014c0> violates type hint typing.Union[str, typing.Annotated[os.PathLike, Is[lambda path_like: isinstance(path_like.__fspath__(), str)]]], as <class "__main__.BytePath"> <__main__.BytePath object at 0x7f3acec014c0>:
* Not str.
* <class "__main__.BytePath"> <__main__.BytePath object at 0x7f3acec014c0> violates validator Is[lambda path_like: isinstance(path_like.__fspath__(), str)]:
    False == Is[lambda path_like: isinstance(path_like.__fspath__(), str)].

Typing cake: it tastes delicious. :yum:

Oh... this is the best way in the current situation...
Okay. I'll take this 🥲
Thanks @leycec ! 🙇

You're most welcome. As a gentle reminder to myself to eventually implement this properly for everybody, would you mind if I quietly reopen this feature request? With any luck, I'll tackle stuff like this in 2024. Let the hype train begin! :fireworks:

Partially resolved by fe5b23d5e98e9b4eb. @beartype's upcoming 0.17.0 release ...to be released before Santa Bear Claws gives us all the video games shallowly type-checks os.PathLike[...] type hints.
In fact, @beartype 0.17.0 shallowly type-checks all weirdo non-standard type hints in Python's typeshed. This includes os.PathLike[...], weakref.weakref[...], and even more hideous monsters as yet unknown to man and beaver alike. @beartype 0.17.0 no longer raises exceptions when confronted with this sort of typing gore.
This means that your above verbose definition of PathLikeStr can be reduced to this terse one-liner:
from beartype.vale import Is
from os import PathLike
from typing import Annotated

# PathLike[str], but actually supported by everybody.
PathLikeStr = Annotated[PathLike[str], Is[  # <-- much simpler, much terser, much gooder
    lambda path_like: isinstance(path_like.__fspath__(), str)]]

# This is the way.
StrPath = str | PathLikeStr

Rejoice! Santa Bear Claws has heard your prayers. :santa:

Brilliant! I miss Santa already 🎅


Initialize pixi project

We now specify dependencies in a pixi.toml file.
FAIM-Robocopy can be started with:
pixi run faim-robocopy

(Also bump the project version to 1.5.0)
NB: the environment activation script sets the path to TCL_LIBRARY and is currently implemented and tested for Windows only.

I updated the instructions in README.md and successfully tested on a multi-user system, so I am going to merge now.


pptk.view() hangs without showing debug/info/error information

Hi there, following the example, pptk.view() hangs without showing any information.
How to reproduce:
import numpy as np
import pptk
x = np.random.rand(100, 3)
pptk.viewer(x)

I'm running pptk 0.1.0 installed via pip install --user pptk with Python 3.7.1 on an x64 Arch Linux machine.

Same problem here. I'm running Ubuntu 18.04 with numpy-1.14.4 and pptk-0.1.0.
The program just desn't respond anymore after the call to pptk.viewer.

Archlinux latest updates, happens as well.

Hi,
is there any news regarding how to solve this problem?
Thanks

I have this problem too. I tried to compile from the source but same result.

same

@chabardt instructions solved the issue for me, for some reason I had the file /usr/lib/python3.7/site-packages/pptk/libs/libz.so.1 but it wasn't working properly, so I did a symlink from the "OS version" of the same file (/usr/lib/libz.so.1) and that solve the issue.
(I had this issue using virtual env so I create the symlink inside the virutal env directory and it did work)
Commands:
remove the old file rm ./venv/lib/python3.6/site-packages/pptk/libs/libz.so.1
create the synlink: ln -s /usr/lib/libz.so.1 ./venv/lib/python3.6/site-packages/pptk/libs/libz.so.1
(again I'm using virtual env, if you are using the OS paths, follow chabardt comment paths)

This is still an issue as of today. I installed as instructions stated and am having pptk.view hang. Please fix

I'm running into this on Ubuntu 18.04 LTS, as well.

@ivan-scale @TSchattschneider Thanks for your suggestions! Fixed my problem!

Does anyone know how to solve this issue for Windows 10 and python 3.7?

A version of the solution posted by @ivan-scale .
Ubuntu 20.04
I could not find the libz.so.1 file under the given path
/usr/lib/libz.so.1
I was using Anaconda and did a search and could come across the libz.so.1 in the anaconda environment I was using.
The path is as below
/home/user/anaconda3/envs/{env - name }/lib/libz.so.1
I used the above file to form the symbolic link and that worked.
Hope this helps.

Does anyone know how to solve this issue for Windows 10 and python 3.7?

I have the save problem in win10 +python3.7. But I solved it.
It may be the problem of "Remote Desktop Connection" if you use it. Because OpenGL is NOT supported when openning "Remote Desktop Connection".
IF you use "Remote Desktop Connection", just change another remote software. IF NOT, please check if driver in your remoted computer support OpenGL.

@chabardt instructions solved the issue for me, for some reason I had the file /usr/lib/python3.7/site-packages/pptk/libs/libz.so.1 but it wasn't working properly, so I did a symlink from the "OS version" of the same file (/usr/lib/libz.so.1) and that solve the issue.
(I had this issue using virtual env so I create the symlink inside the virutal env directory and it did work)
Commands:
remove the old file rm ./venv/lib/python3.6/site-packages/pptk/libs/libz.so.1
create the synlink: ln -s /usr/lib/libz.so.1 ./venv/lib/python3.6/site-packages/pptk/libs/libz.so.1
(again I'm using virtual env, if you are using the OS paths, follow chabardt comment paths)

This worked for Ubuntu 20.04

For those who use anaconda environments: I used the following command.
ln -s /home/{user_name}/anaconda3/envs/{env_name}/lib/libz.so.1 /home/{user_name}/anaconda3/envs/{env_name}/lib/python3.7/site-packages/pptk/libs/libz.so.1
This works for Ubuntu 18.04

I was trying to use inside docker container with ubuntu 18.04 image.  This worked for me
$  rm /usr/local/lib/python3.6/dist-packages/pptk/libs/libz.so.1
$  ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/local/lib/python3.6/dist-packages/pptk/libs/libz.so.1

I work with Linux 18.04 and the solution was way easier. Just did the following line and it worked just fine:
$ ...//lib/python3.6/site-packages/pptk/libs$ mv libz.so.1 libz.so.1.old
I guess the problem is that there are two times the same library and then gets in conflict. By placing it with a different name stops the problem. I guess one could also remove it. Up to you.

Actually, removing the libz.so.1 file and link with the correct file will solve the problem. In my case I'm using python3.6 and the file I needed to remove was in my .local folder (Ubuntu 18.04). Then, the correct file was in /lib/x86_64-linux-gnu. The commands I used were:
rm /home/YourName/.local/lib/python3.6/site-packages/pptk/libs/libz.so.1 (remove the file which is giving problem)
ln -s /lib/x86_64-linux-gnu/libz.so.1 /home/YourName/.local/lib/python3.6/site-packages/pptk/libs/libtbb.so.1 (create the synlink)
This issue should be closed.

For those who use anaconda environments: I used the following command.
ln -s /home/{user_name}/anaconda3/envs/{env_name}/lib/libz.so.1 /home/{user_name}/anaconda3/envs/{env_name}/lib/python3.7/site-packages/pptk/libs/libz.so.1
This works for Ubuntu 18.04

Remove the libz.so.1 file from /python3.7/site-packages/pptk/libs/ before symlinking. Works for Ubuntu 22.04 as well.

You can use to see which libz is being used:
inotifywait -m $(find <PATH> -iname "libz.so*" 2>/dev/null) -e access
You can map a whole drive, or just place where you have envs.
Actually libz is being loaded right after opening jupyter.
Leave inotifywait opened before running script/opening jupyter, so you can see for example:

/home/mariusz/miniconda3/envs/ds/lib/python3.8/site-packages/pptk/libs/libz.so ACCESS

Does anyone know how to solve this issue for Windows 10 and python 3.7?

I have the save problem in win10 +python3.7. But I solved it. It may be the problem of "Remote Desktop Connection" if you use it. Because OpenGL is NOT supported when openning "Remote Desktop Connection". IF you use "Remote Desktop Connection", just change another remote software. IF NOT, please check if driver in your remoted computer support OpenGL.

is XLaunch (VcXsrv) properly for that?


Yo, are you writing defillama wrapper or something ?

i would contribute on it if so. Please let me know if we can connect

Yes, I need the /prices/current/{coins} endpoint at least

Yes, I need the /prices/current/{coins} endpoint at least

if you want i can participate on this library :)

Yes, don't hesitate to create issues about what you want to do so we can discuss :)
Btw I just pushed the /prices/current/{coins} endpoint


Host to Switch Links do not display in webUI

Hi everyone,
I am using Ubuntu 14.04 LTS, Mozilla Firefox web browser 48.0, floodlight v1.2 and mininet 2.2.1. I am trying to run a tree topology with depth=2 and fanout=2. When I try to view the topology using the webUI, it does not display the links between hosts and switches.
This is the command I used,
sudo mn --controller=remote,ip=<IP_ADDRESS>,port=6653 --topo tree,depth=2,fanout=2

I have tried both master and v1.2 in floodlight. I used both Mozilla Firefox web browser and Google Chrome web browser.

@sandaruwanjayaweera fixed https://github.com/floodlight/floodlight/pull/706

Wow. Thank you @cbarrin https://github.com/cbarrin and rizard
https://github.com/rizard for your quick response.
On Fri, Sep 2, 2016 at 12:39 AM, Ryan Izard<EMAIL_ADDRESS>wrote:

Closed #705 https://github.com/floodlight/floodlight/issues/705.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/floodlight/floodlight/issues/705#event-775632213, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AT3uG2MJwjPo87vL_6b2rDt6wR-maahFks5qlyLfgaJpZM4JwdD5
.


build(declarations): create schema-to-declarations script add declarations

What kind of change does this PR introduce?
Build related change

Did you add tests for your changes?
N/A (?)

If relevant, link to documentation update:
N/A (?)

Summary
Since half of the webpack codebase is referencing this.options or the webpack options in some form of another. This means that to do this we would need to hand write a declaration file for the entire webpack options based on our json schema.
Introducing an amazing module called json-schema-to-typescript which allow us to simply pipe in the schema file.
TODO: I don't know how I want to incorporate the creation of these declarations to be automatic (maybe like lint-staged and husky?)

Does this PR introduce a breaking change?
Nope!

Other information

Why you decided to go from JSON Schema to TS instead of other way around?

JSON Schema can still be the source of truth (as it always is for the config validation). The value here is that we just instantly TypeDef'd the entire this.options object via generation of code we already have.

Since this is more than just json schema I suggest using a runtime type checker that builds on top of TypeScript types and write the schemas in TypeScript instead.
That said runtime type checker that uses TypeScript types does not exist as far as I know.

The more automation, the better!
However, even if json-schema-to-typescript adds support for extensions, how will you go about typing functions? Right now it's just an opaque "instanceof": "Function" everywhere, TS can do much better than that. Functions are already typed in DefinitelyTyped, to a varying degree of fidelity, so switching to something like (...args: any[]) => any would be a downgrade. Need some sort of annotation.
Ideally, I'd go with what @mohsen1 suggests, and generate the schema from annotated TypeScript instead. I'm using ts-json-schema-generator for something very similar in my own project. But I'm not 100% sure that you can express any conceivable schema that way, especially with extensions, and it's going to be quite an undertaking, considering that Webpack is pure JS. Is introduction of TS even on the table?

Perhaps we do the reverse? When I can jump back into this I'll look into it!

Blocked by https://github.com/bcherny/json-schema-to-typescript/pull/191


Gsap tools

New PR, with our own gsap-tools, I'm just boostraping stuff for the moment.

Current wip


Hotfix/donate banners weeks 4-7 [OSF-9006]

Purpose
Add donate banners for weeks 4-7.
Changes
Add donate banners for weeks 4-7.
Remove images used for past banners.
Side effects
None anticipated
Ticket
https://openscience.atlassian.net/browse/OSF-9006

@sloria This is only having the same test failures as current master.


Possible race-condition, decode_packet hangs, 100% CPU usage, very frequently

When attempting to execute command /save-off my script freezes with 100% CPU usage very frequently.  When I abort the script with the good old interrupt signal it reveals this:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/mcrcon-0.0.0-py3.6.egg/mcrcon.py", line 52, in receive_packet
  File "/usr/local/lib/python3.6/site-packages/mcrcon-0.0.0-py3.6.egg/mcrcon.py", line 23, in decode_packet
mcrcon.IncompletePacket: 14

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./backup.py", line 17, in <module>
    rcon.backup(backup_output)
  File "/usr/local/games/minecraft/mmm.py", line 54, in backup
    mcrcon.command(self.sock, '/save-off')
  File "/usr/local/lib/python3.6/site-packages/mcrcon-0.0.0-py3.6.egg/mcrcon.py", line 86, in command
  File "/usr/local/lib/python3.6/site-packages/mcrcon-0.0.0-py3.6.egg/mcrcon.py", line 55, in receive_packet
KeyboardInterrupt

mmm.py is a utility module I wrote that depends on mcrcon.  This is part of a script I configured, backup.py, to run nightly backups via cron (i.e. /save-off, do the backup using rsync, /save-on).
The script eventually runs through to completion but only after abort and reattempt several times making it unusable as a cron job.  I would presume the response from the RCon server when calling /save-off is non-deterministic and causing decode_packet to choke.
Upon examining the source code in Minecraft, it appears prone to race condition:
        RConConsoleSource.instance.resetLog();
        this.commandManager.executeCommand(RConConsoleSource.instance, commandString);
        return RConConsoleSource.instance.getLogContents();

It executes the command and then hopes that the command will fill the log with some output (what if some other command does that?).  This code is very bad so I wouldn't be surprised if a reliable resolution isn't possible.

Hello,
I think you got wrong git project. This one is written in C and the problem you are describing seems to be Python code.
I believe this issue should be reported on https://github.com/barneygale/MCRcon


Is this repo dead?

There are a lot of issues, and a ton of pending pull requests. Yet no change to repo in over a year, I"m guessing it's no longer actively worked on by owner?

Looks like it: https://github.com/charliekassel/vuejs-datepicker/issues/821

https://github.com/sumcumo/vue-datepicker


Feature/caso 26 verificar suministro unidades

Codecov Report

Merging #33 (d617bdb) into master (78a7477) will increase coverage by 0.29%.
The diff coverage is 83.33%.

@@             Coverage Diff              @@
##             master      #33      +/-   ##
============================================
+ Coverage     61.39%   61.68%   +0.29%
- Complexity      235      239       +4
============================================
  Files            70       71       +1
  Lines           891      903      +12
  Branches         44       44
============================================
+ Hits            547      557      +10
- Misses          311      312       +1
- Partials         33       34       +1

Impacted Files
Coverage Δ

...va/edu/fiuba/algo3/modelo/Jugador/JugadorZerg.java
86.04% <81.81%> (-1.46%)
:arrow_down:

.../edu/fiuba/algo3/modelo/Jugador/UNIDADES_ZERG.java
100.00% <100.00%> (ø)

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


Moving from Rust nightly to stable

Required Functionality
I have to pin the Rust toolchain to nightly-2022-08-01 in many places as it's the last one when synth compiles.
Proposed Solution
Move to Rust stable
Current unstable features used in Synth*
/dist/playground/src/main.rs
1:#![feature(try_blocks)]
./gen/src/lib.rs
1://#![feature(try_trait)]
./core/src/lib.rs
1:#![feature(async_closure, map_first_last, box_patterns, error_iter, try_blocks)]
./synth/src/lib.rs
1:#![feature(async_closure, map_first_last, box_patterns, concat_idents, error_iter)]

we need to build a roadmap - a path to stabilization, technical debt which needs to be paid off.

I have been looking into this. It looks like what we need to do is:

[ ] Remove #![feature(async_closure)], as I don't see the feature being used anywhere. At the very least it definitely isn't in core.
[ ] Find some way other way to find the final error, so we won't need error_iter. Or just change the way errors are reported entirely.
[ ] Find some alternative to map_first_last, maybe a crate, as BTreeMap's are used frequently enough to make this hard to remove.
[ ] Find a replacement for box_patterns. box_patterns allows the use of match on boxes, and Synth has a lot of boxes.
[ ] try_blocks could be removed if we just move all of the contents of the blocks to separate functions, but I don't see many cases of it.
[ ] concat_idents can be removed, as I don't see it used anywhere in the code.
[ ] try_traits. I couldn't find this in the unstable book, so I don't know how to deal with it.

map_first_last was made stable in the latest release.


docs(readme): correct link

Coverage remained the same at 98.81% when pulling 2abc2528ac8ad9f5eaa8e456784ee44a889e025f on gdi2290:patch-1 into fc103aba3743de70aca907dc3ac9ca4df95b365e on dustinspecker:master.

Thanks!


Remove mapping.copy_mapping

Checklist

[x] I have run nox and all the pipelines have passed.
[x] I have made unittests according to the code I have added/modified/deleted.

This won't work.
Python only defines copy on instances of dict. It isn't part of typing.Mapping nor typing.MutableMapping. @FasterSpeeding implemented this because our implementation only requires that you pass a mapping. You could use an immutables.Map in the future and still expect the code to work, even though that does not have .copy() on the interface.
This is why we have the try-catchall for this.
As you can see, the permissions overwrite field is defined like so:
    permission_overwrites: typing.Mapping[snowflakes.Snowflake, PermissionOverwrite] = attr.ib(...)

This is why MyPy is now failing for you :^)


Easy issue: port tests from Go to Rust

In the following file we have already ported some tests from Go to Rust:
https://github.com/crossbeam-rs/crossbeam-channel/blob/master/tests/golang.rs
The idea is to blindly port all the tests for Go channels line by line, which will give us additional confidence in the correctness of crossbeam-channel.
In the test file, you can find stubs with links to the original tests written in Go and todos that need to be filled out.
Porting is a relatively straightforward task, so if you're looking for an approachable issue to tackle, this is the one! :) Also, you don't have to port everything at once - we'll do it incrementally in small pieces. Port as much code as you feel like!

Hi, if this is an issue that still needs attention, I would like to help out.

@byusti That'd be great, thank you :) You can look at the following file: https://github.com/crossbeam-rs/crossbeam/blob/master/crossbeam-channel/tests/golang.rs
There's a bunch of TODOs there with links to tests written in Go that should be ported to Rust.

@stjepang Hi, I have a init version for 'select3', could you please review it? https://github.com/crossbeam-rs/crossbeam/pull/575

also would like help with 'test_panic'


Ubuntu, send code to RStudio error

First, thanks a lot for making it possible to send R code to RStudio on Ubuntu.
I installed xdotools, and selected "SendText+: Choose Progam->RStudio". But when I send code to RStudio, in the RStudio console I get " Error: unexpected input in "" " instead of the code that should be sent. I've been trying to think what's causing this but I've no clue...

I have no problem on Ubuntu 14.04.4 and xdotool version 3.20160226.1.
Would you tell me which version of ubuntu and xdotool you are using?

Sorry to answer you only now, I don’t have access to my desktop where I have ubuntu installed. But I know that the ubuntu version is 15.10, I don’t know for xdotool.
Sincerely,
Tom

On 06 Mar 2016, at 04:58, Randy Lai<EMAIL_ADDRESS>wrote:
I have no problem on Ubuntu 14.04.4 and xdotool version 3.20160226.1.
Would you tell me which version of ubuntu and xdotool you are using?
—
Reply to this email directly or view it on GitHub https://github.com/randy3k/SendTextPlus/issues/25#issuecomment-192800256.

I now got the same problem with ubuntu 16.04.

There is a bug in the new versions of xdotool. It should be fixed by installing xdotool from here.


Add Background Reconciliation for Entities

Please describe the enhancement
Minder relies purely on event-based processing triggered by webhooks/user actions. Apart from edge-based triggering, Minder should also reconcile the entities in the background. Reconcilers under the scope of this issue are:

Continuously update the evaluation status for entities against registered rules.
Continuously evaluate the state of the webhook created by the minder on GitHub. (As the user may accidentally delete it)

These reconcilers are required to ensure all existing rule evaluations in minder are updated according to any newly added logic. See #1609 for example.
Solution Proposal
Continuously running the reconcilers is not feasible due to resource constraints and the provider's API limits. Reconcilers would run based on a cron job with a small enough batch size not to hit rate-limiting errors for any provider.
Describe alternatives you've considered
No response
Additional context
For more details see: https://discord.com/channels/1184987096302239844/1201083912521252885
Acceptance Criteria
No response

/assign

Hi @Vyom-Yadav I was thinking about this feature some time ago (though I haven't gotten far, thank you very much for picking it up) here are my notes from that time. Feel free to take anything you like from them or not if otherwise :-). A lot of it is very hand-wavy, as I said, I didn't get too deep.

I was thinking about having a separate process, a singleton as opposed to be a part of the potentially replicated minder instances. The idea behind this was that presumably we'd use a queue of entities to be updated and having a singleton writing to the queue just seemed simpler.
this new component (please name it reminder :-)) would periodically (say once an hour?) traverse the database, picking up projects that contain entities that haven't been updated in $TIME_PERIOD.
each project would get a time slot and could update up to N entities from the project within that time slot. Individual updates within that interval would be spaced apart with a jitter to avoid spikes. An entry to update an entity would be written to a work queue. We use watermill with an SQL back end, without thinking about the details too deep I was wondering if we could make this reminder a topic publisher and minder workers subscribers to the periodical update topics.
the minder processes being subscribers to the periodical update table would then issue an ExecuteEntityEventTopic

Good points, @jhrozek ! I'm also thinking about having this as a separate process. Based on the number of replicas, we can process an entity repeatedly, leading to rate-limiting errors.
The Singleton Client Binary would have the logic for scheduling reconciliation events. The approach I had in my mind is:

Pick entities from different owners/tokens so we can process multiple entities with larger batch sizes and not hate any rate-limiting errors.
Evan suggested running the reconciler once in 24 hours, but all those parameters would be configurable so that we can tune it accordingly.
Send a request to the server using RPCs. The server would then internally process those events. It would be similar to receiving webhook events; this time, it would be from the reminder process.

To scale up, we may shard the database so that each reconciler is attached to a unique set of data.

Good points, @jhrozek ! I'm also thinking about having this as a separate process. Based on the number of replicas, we can process an entity repeatedly, leading to rate-limiting errors.
The Singleton Client Binary would have the logic for scheduling reconciliation events. The approach I had in my mind is:

Pick entities from different owners/tokens so we can process multiple entities with larger batch sizes and not hit any rate-limiting errors.

Yes, this is what I tried to say with "a project", but yes, your description is more precise.

Evan suggested running the reconciler once in 24 hours, but all those parameters would be configurable so that we can tune it accordingly.

I think it's hard to know how often to run the reconciler without some more experiments and testing and I strongly agree with making it configurable. At the very least for testing I would have used something in the matter of seconds to see the reconciler triggered repeatedly.

Send a request to the server using RPCs. The server would then internally process those events. It would be similar to receiving webhook events; this time, it would be from the reminder process.

Interesting idea, I like that it's decoupled from the watermill implementation we have now.

To scale up, we may shard the database so that each reconciler is attached to a unique set of data.

I have literally 0 experience with database sharding so I don't feel qualified to answer. I know Evan does have a lot, maybe he'd have an opinion?

cc @evankanderson, what do you think about the above-mentioned approach (having reconciler as a separate process)?

FWIW, I think having a separate process for the reconciliation trigger makes sense and it's ideal. I'm not super sure about doing it with RPCs and would prefer events instead, but I don't have a strong opinion about this that would block it.

doing it with RPCs and would prefer events instead

It would be done using events only. RPCs would trigger events on the server. Our new process would invoke those RPCs.

I agree that this is probably worth a quick design.  Trying to hit the design points:

Using a singleton to avoid needing coordination / locking across multiple Minder processes.  This should work for now.  It adds a small amount of deployment complexity, but that seems worth it.  You may also want to consider having the singleton support a "one-shot" mode to address @jhrozek 's comment about wanting "second-level revisits" in development.  You probably don't actually want constant revisits at the second level, but you want them on demand.

I think we'll need to be nimble on the pacing.  I'd start with something simple, but we may need to spread out on some of the axes @Vyom-Yadav mentions.  Right now, we're looking at scales of maybe 10k repositories, which is... one every 86 seconds at a 24-hour revisit.  This will change if Minder takes off, of course.

My preference would be to use events on an externally-configured queue (i.e. rather than the in-binary configuration we have today with Watermill).  Using an external queue allows us to "freeze" the contract between the two components so each can evolve independently.  At the same time, that would be a major undertaking that doesn't provide much direct value, so I think the short-term answer is to have a "kick" RPC that triggers the Minder server to enqueue an event similar to the current webhook events.  It's not clear that the event respondent needs to know whether they received a webhook or a reminder kick -- I'd aim to keep it that way; the reconciliation logic should be idempotent.

Oh, and the first point of scaling if we needed it would be a read replica, which should be able to scale to 2M repos under management at a scan rate of less than 300 rows/s.  If we're reading in an index-aligned way, that should be trivial, and even if not, it should be pretty easy unless we do some sort of order by/limit/offset hijinks.

My preference would be to use events on an externally-configured queue (i.e. rather than the in-binary configuration we have today with Watermill). Using an external queue allows us to "freeze" the contract between the two components so each can evolve independently.

Which message queue would you suggest? I know you're keen on using Amazon SQS, still what would you suggest for the current use case?

so I think the short-term answer is to have a "kick" RPC that triggers the Minder server to enqueue an event similar to the current webhook events.

Now that you've mentioned using message queues, let's implement that only.

My preference would be to use events on an externally-configured queue (i.e. rather than the in-binary configuration we have today with Watermill). Using an external queue allows us to "freeze" the contract between the two components so each can evolve independently.

Which message queue would you suggest? I know you're keen on using Amazon SQS, still what would you suggest for the current use case?

(full disclosure: I don't have much of a working experience with message queues, so this is more of a gut feeling than anything backed by hard data)
I would prefer not to tie Minder to a specific message queue implementation. Wasn't an abstraction a reason why we chose Watermill back in the day in the first place? IIRC Watermill also have an SQS and Jetstream back end..

so I think the short-term answer is to have a "kick" RPC that triggers the Minder server to enqueue an event similar to the current webhook events.

Now that you've mentioned using message queues, let's implement that only.

One reason where a message queue might be nicer in this respect over an RPC call is that you might get a notion of when a task in a queue was finished as opposed to claimed by a worker who might disappear before the task had finished. I would hope that for this case it might not have a practical effect as the next "tick" would just reinsert the same refresh, but still..

I would prefer not to tie Minder to a specific message queue implementation. Wasn't an abstraction a reason why we chose Watermill back in the day in the first place? IIRC Watermill also have an SQS and Jetstream back end..

Watermill is a wrapper over the queue SDKs (With additional features). We would still use Watermill, but we have to decide whether we want to use Kafka, NATS, RabbitMQ, etc. Each one of them has a unique set of features, so we should decide what's best for the use case. Honestly, I also haven't worked much with message queues, so I'm unsure which one would be the best suited.

One reason where a message queue might be nicer in this respect over an RPC call is that you might get a notion of when a task in a queue was finished as opposed to claimed by a worker who might disappear before the task had finished. I would hope that for this case it might not have a practical effect as the next "tick" would just reinsert the same refresh, but still..

Agreed, using queues would be significantly better.

I would prefer not to tie Minder to a specific message queue implementation. Wasn't an abstraction a reason why we chose Watermill back in the day in the first place? IIRC Watermill also have an SQS and Jetstream back end..

Watermill is a wrapper over the queue SDKs (With additional features). We would still use Watermill, but we have to decide

Ah, then we just didn't understand each other, I read your earlier comment as wanting to go directly for the message queue.

My preference would be to use events on an externally-configured queue (i.e. rather than the in-binary configuration we have today with Watermill). Using an external queue allows us to "freeze" the contract between the two components so each can evolve independently.

@evankanderson Which message queue would you suggest? I know you're keen on using Amazon SQS, still what would you suggest for the current use case? (How about NATS?)

Sorry, missed this question -- I would suggest for now using Watermill, and making the "extract message queue" a separate epic which would apply to all our existing message queueing in Minder.
I'm partial to tools like SQS, EventBridge, or something like Google's Cloud Tasks which manage delivery as a weakly ordered set of deliveries, rather than a strongly-ordered log like Kafka.  However, I think that's a separate "plumbing" task, so let's not conflate the two.

so I think the short-term answer is to have a "kick" RPC that triggers the Minder server to enqueue an event similar to the current webhook events.

Now that you've mentioned using message queues, let's implement that only.

Please don't!  Feel free to put the RPC-to-Minder behind an interface that we could replace with a one-way delivery mechanism, but switching to an external message queueing system would be a major surgery that should be separate from the revisit mechanism.
(Basically, we'd be taking the vertical stack from the Watermill router diagram and externalizing it into configuration managed by a tool like Terraform)

To explain the externalized config further, the Watermill Router concept support a simple "named topic" fan-out, but SNS, EventBridge, and Google PubSub support filtering messages based on message attributes (e.g. attributes.tier=0 and attributes.type = "repo" in Google-syntax, or {"tier": [{"numeric": ["=", 0]}], "type": ["repo"]} in AWS-syntax).
Using one of the above providers would also allow us to absorb some of the existing middlewares -- some of the telemetry and the Poison / Retry management would move into the external service.
This is also a pretty big commitment that requires a design document and consideration of tradeoffs (cost, scale, difficulty-of-use, credentials), and we probably will end up putting it behind an interface to allow some agility later.

Using one of the above providers would also allow us to absorb some of the existing middlewares -- some of the telemetry and the Poison / Retry management would move into the external service.

That's exactly why I wanted to do it with queues.

Please don't! Feel free to put the RPC-to-Minder behind an interface that we could replace with a one-way delivery mechanism, but switching to an external message queueing system would be a major surgery that should be separate from the revisit mechanism.

Makes sense. Let's keep that as a separate issue. Later we can replace the RPC call with a message publish. Thanks for the detailed explanation.

One reason where a message queue might be nicer in this respect over an RPC call is that you might get a notion of when a task in a queue was finished as opposed to claimed by a worker who might disappear before the task had finished. I would hope that for this case it might not have a practical effect as the next "tick" would just reinsert the same refresh, but still..

Agreed, using queues would be significantly better.

I was suggesting the following pseudocode:
func (s *Server) MinderRevisit(ctx, req) (resp, err) {
  msg := ConvertRevisitToMsg(req)

  err := s.Router.Publish(msg)
  return &EmptyResp{}, err
}

With the pattern of synchronously publishing the event and then returning the error from the publish, you shouldn't have to worry about the task being lost.  In general a message queue will not give you a notice when the message has been delivered -- once the queue takes over, the delivery to all destinations is eventually guaranteed, but you don't get to know when it happened (it's asynchronous and may be plural -- one publish may result in 3 subscribers getting the message, so "done" is ambiguous in those circumstances).

Yeah, we will use something like that only, with some authn/z mechanism that works for both the reminder process and users trying to do one shot op.


ObanPro DB ConnectionErrors on quick, high(ish) volume of unique jobs

Precheck

Do a quick search and make sure the bug has not yet been reported
For support, favor using the Elixir Forum, Slack, IRC, etc.
Be friendly and polite!

Environment

Oban Version 2.18.3, Oban Pro 1.5.0-rc.4
PostgreSQL Version 15.7
Elixir & Erlang/OTP Versions (elixir --version) 1.14.5 Erlang/OTP 25

Current Behavior
It's me again lol thanks for all the help and really appreciate this libray.
Not sure if this is a bug or not but this would be the closest template for issues I think.
For context:
We are in the middle of migrating our current scheduled queue system based on Supervisors and GenServers to Oban (Pro), with no risk of duplicating "jobs" since if the app dies, the queues stored in GenServer states get wiped.
Since Oban jobs are stored in the db, they don't get wiped (and we don't want to wipe them only to re-insert them since that is inefficient), so we rely on the unique job checks.
This is my Worker config
  use Oban.Pro.Worker,
    unique: [
      fields: [:args, :worker],
      keys: [:model_id, :model, :scrape_service],
      states: [:available, :executing],
      period: :infinity
    ],
    max_attempts: 1

(To address a previous discussion, it was recommended not to override fields and let it check queues, unless we schedule it in multiple queues. For this specific Worker, we do schedule them in multiple queues.)
Our DynamicPruner is set to max_age 3 days.
Each Oban job is an entity, and these entities are queried from a parent model. I initially tested this on 300+ parents, then later 78 parents. Each parent model can have anywhere between tens to a few thousand entities, but these entities get scheduled very quickly and concurrently.
To get an estimate on our volume, after removing unique (to prevent ConnectionErrors and test inserts)

we tested on 78 (less important) parents, it added 54k jobs in 5 minutes.
tested on 117 (less important) parents, 73.8k jobs in 6 minutes.

Specifying less important as our more important parent models would have a higher quantity of entities overall.
This is the code where I insert the jobs to Oban
(request_provider.requests_queue || [])
    |> Enum.map(fn %{model: {model, model_id}} = request ->
      args =
        request
        |> Map.take([:extract_id, :methods_count, :scrape_service])
        |> Map.merge(%{model_id: parse_model_id(model_id), model: model})

      meta = %{retailer_id: request_provider.retailer.id, priority: priority}

      ObanQueue.assign_queue(args, meta)
    end)
    |> Oban.insert_all()

On to our issue, we frequently experience this error and stacktrace while adding jobs. I assume find_dupes is related to the unique check.

We observed the long running queries and locks on our phoenix dashboard and noticed that what we think is the unique job check query consistently being a long running query and having multiple locks.

I didn't manage to screenshot, but I did see some of the query locks exceed 30s.
We removed the unique config from our Worker and haven't had any db connection errors since.
I've read the Scaling guide on the docs and understand that it's recommended to have a 2nd Repo and dedicated database for high concurrency. However, if the unique job check locks the table frequently for >30s, we're unsure if having a dedicated database would resolve the issue for our use case.
Expected Behavior
To be honest, I'm not sure if this is the expected behaviour for Oban Pro for this volume of jobs and that it's due to improper scaling handling on our end, or if currently the unique job check isn't able to handle that volume yet. I guess the expected behaviour would be no timeouts? 🤔

You're hitting the legacy (and vastly slower) unique path because of missing migrations. Read through the upgrade guide and run the Pro migrations. That will switch to the new enhanced unique mode.
Side note:
Using partial states is discouraged because of errors, snoozing, etc. Consider changing your states to [:available, :scheduled, :executing, :retryable]

Will you check whether your oban_jobs table has a uniq_key column? Also, please check which version is listed under the description for the producers table with \dt+ oban_producers
There's a chance the up migration didn't take, and you're actually running with the 1.4.0 migration instead.

Will you check whether your oban_jobs table has a uniq_key column?

It doesn't, I can see that uniq_key is saved under meta.

Also, please check which version is listed under the description for the producers table with \dt+ oban_producers

It is 1.4.0.

There's a chance the up migration didn't take, and you're actually running with the 1.4.0 migration instead.

Seems about right then. Thanks


[BUG] Edit detector | Edit Field mappings | Field mapping is wrong

What is the bug?
Editing field mappings resets mapping to defaults, instead, it should use already mapped values.
How can one reproduce the bug?
Steps to reproduce the behavior:

Go to the Detectors page and click on any detector from the list
Go to the Field Mappings tab
Notice that, in view, all fields are mapped correctly
Click on the Edit button
Notice that field mapping is wrong

What is the expected behavior?
Editing Field Mapping should use already set mapping values
Do you have any screenshots?
Correct mapping in the view

Incorrect mapping in editing mode

Adding some problems to these:

I created a Detector and configured Field Mappings.
When I review the Field Mappings in the created Detector, it shows empty:

But when I edit it, it shows normally, with the fields that I already mapped:


Allow React 16

Tested and found working in our React 16 app

Thanks @richardvenneman.
@wbinnssmith, Looking forward to getting this merged in :-D

Can this be merged please?

@wbinnssmith Poke, please merge

Done. Apologies for the delay!

@wbinnssmith Hey one more ask, will you bump the version and npm publish?

done! Apologies again -- I hope to be more actively maintaining this project. Let me know if anyone else wants to help out!

Hey, could you please upgrade same peerDependecies to react 17?


Why function sparse_dropout in layers.py multiply pre_out by (1./keep_prob)

I understand use mask to dropout some elements by specify prob, but
why multiply pre_out by (1./keep_prob), this may make difference between tf.nn.dropout
on dense and correspond dense tensor.

The rescaling factor is quite common in implementations of Dropout and
ensures that at test time (when Dropout is no longer applied) the
pre-activations have a comparable scale. I think tf.nn.dropout should have
the same rescaling factor.
On Sat, Dec 29, 2018 at 6:59 AM svjack<EMAIL_ADDRESS>wrote:

I understand use mask to dropout some elements by specify prob, but
why multiply pre_out by (1./keep_prob), this may make difference between
tf.nn.dropout
on dense and correspond dense tensor.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tkipf/gcn/issues/78, or mute the thread
https://github.com/notifications/unsubscribe-auth/AHAcYMui_tpJyy3exz_qOLxbWT0k65bHks5u9wTZgaJpZM4ZkbQn
.

The rescaling factor is quite common in implementations of Dropout and ensures that at test time (when Dropout is no longer applied) the pre-activations have a comparable scale. I think tf.nn.dropout should have the same rescaling factor.
…
On Sat, Dec 29, 2018 at 6:59 AM svjack @.***> wrote: I understand use mask to dropout some elements by specify prob, but why multiply pre_out by (1./keep_prob), this may make difference between tf.nn.dropout on dense and correspond dense tensor. — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#78>, or mute the thread https://github.com/notifications/unsubscribe-auth/AHAcYMui_tpJyy3exz_qOLxbWT0k65bHks5u9wTZgaJpZM4ZkbQn .

I take a glance at source code of tf.nn.dropout, the implementation is in pure python,
And could not find rescaling factor. I copy the implementation in the below, Could you
give me some explaination ?
@tf_export("nn.dropout")
def dropout(x, keep_prob, noise_shape=None, seed=None, name=None):  # pylint: disable=invalid-name
"""Computes dropout.
With probability keep_prob, outputs the input element scaled up by
1 / keep_prob, otherwise outputs 0.  The scaling is so that the expected
sum is unchanged.
By default, each element is kept or dropped independently.  If noise_shape
is specified, it must be
broadcastable
to the shape of x, and only dimensions with noise_shape[i] == shape(x)[i]
will make independent decisions.  For example, if shape(x) = [k, l, m, n]
and noise_shape = [k, 1, 1, n], each batch and channel component will be
kept independently and each row and column will be kept or not kept together.
Args:
x: A floating point tensor.
keep_prob: A scalar Tensor with the same type as x. The probability
that each element is kept.
noise_shape: A 1-D Tensor of type int32, representing the
shape for randomly generated keep/drop flags.
seed: A Python integer. Used to create random seeds. See
@{tf.set_random_seed}
for behavior.
name: A name for this operation (optional).
Returns:
A Tensor of the same shape of x.
Raises:
ValueError: If keep_prob is not in (0, 1] or if x is not a floating
point tensor.
"""
with ops.name_scope(name, "dropout", [x]) as name:
x = ops.convert_to_tensor(x, name="x")
if not x.dtype.is_floating:
raise ValueError("x has to be a floating point tensor since it's going to"
" be scaled. Got a %s tensor instead." % x.dtype)
if isinstance(keep_prob, numbers.Real) and not 0 < keep_prob <= 1:
raise ValueError("keep_prob must be a scalar tensor or a float in the "
"range (0, 1], got %g" % keep_prob)
# Early return if nothing needs to be dropped.
if isinstance(keep_prob, float) and keep_prob == 1:
  return x
if context.executing_eagerly():
  if isinstance(keep_prob, ops.EagerTensor):
    if keep_prob.numpy() == 1:
      return x
else:
  keep_prob = ops.convert_to_tensor(
      keep_prob, dtype=x.dtype, name="keep_prob")
  keep_prob.get_shape().assert_is_compatible_with(tensor_shape.scalar())

  # Do nothing if we know keep_prob == 1
  if tensor_util.constant_value(keep_prob) == 1:
    return x

noise_shape = _get_noise_shape(x, noise_shape)

# uniform [keep_prob, 1.0 + keep_prob)
random_tensor = keep_prob
random_tensor += random_ops.random_uniform(
    noise_shape, seed=seed, dtype=x.dtype)
# 0. if [keep_prob, 1.0) and 1. if [1.0, 1.0 + keep_prob)
binary_tensor = math_ops.floor(random_tensor)
ret = math_ops.div(x, keep_prob) * binary_tensor
if not context.executing_eagerly():
  ret.set_shape(x.get_shape())
return ret

The rescaling happens here:
ret = math_ops.div(x, keep_prob) * binary_tensor


obsolescence re: styles managed in javascript

In your talk at Meteor DevShop London you mention that the way css styles can be managed in javascript components may well make Tachyons obsolete. But I either disagree, or don't fully understand, in which case perhaps you could help me understand better.
Don't approaches like the one tachyons-react takes suggest that we can have our cake and eat it too? By which I mean use Tachyons classes within component-scoped css.
import T from 'tachyons-react/base'

class MyComponent extends React.Component {
  render() {
    <T f={3} m={{all: 2, ns: 4, l: 5}} pv={3}>
      <SomeOtherComponent {...props} />
    </T>
  }
}

Thanks ;)

And here's someone pulling Tachyons into global scope in a Vue.js workflow: https://gist.github.com/levibostian/96cc285d4235d73f09cdc22f2590ccba
That approach is more appealing to me, b/c it lets you use Tachyons like you already do and have it just work.

Obsolete was more from a technology standpoint, and was a bit tongue in cheek. I don't really believe that there is one true best way to do anything re: styling on the web and I always like to show the downsides of any piece of code I wrote that I am talking about publicly. My stuff isn't perfect and I would be remiss to mention technologies that handle some things better than my own library.
For what it's worth I was specifically referring to using the tachyons css file as static css. My comment doesn't take into account developer ergonomics or systems that aren't based on js. I would consider your example above a hacky css in js solution. Tachyons is many things, a css toolkit, a pattern library, css documentation, and a cohesive design system. The design system portion can be ported to many styling technologies - not just web ui. I don't think that part of tachyons will go away or become obsolete as it's based on some very old design thinking that you can find traces of across hundreds of years.
My point of calling it out as obsolete is saying that the value Tachyons brings re:

Reducing the amount of css you need to send down the wire for a view
Providing encapsulation to reduce debugging time with inheritance / cascade issues

These two points are now much better solved through css in js examples in my opinion as they are more guaranteed / bullet proof solutions. Right now someone could come in and mutate lots of tachyons classes. There is nothing that prevents people from adding global styles that will mess up tachyons css components. It hasn't happened to me - but there is no technology that prevents it from happening as it is just static css. I do think there are drawbacks though - and I know that with my friends who are js devs that like tachyons and css in js methods - when we talk we aren't 100% sure about the developer economics of css in js. The tachyons model of comparability can be very fast - something I haven't yet replicated with something like aphrodite or cxs. Doesn't mean speed improvements can't be found - but I do notice I lose significant dev velocity using these methods.
Anyways - I think a lot of problems people think tachyons solves well are more elegantly solved using other methods. I do believe many parts and concepts of tachyons can live on regardless of what tech you use to build out your UI. I still use tachyons all the time and it solves a lot of problems I have.
Hope that answers your question. Feel free to reopen this if it doesn't.

Thanks, I appreciate the detailed response.


Got (Postgrex.Error) ERROR 26000 (invalid_sql_statement_name) prepared statement "ecto_162" does not exist

Hi!
I have a random errors like the title says and I'm a little lost about the origin about it. Maybe race conditions? I've experienced this errors on production environment only. The app is deployed in Digital Ocean Cloud inside a Kubernetes Cluster (2 pods).
The code that produce this error is very simple, only fetch a resource from id and I have seen similar errors from other parts of the code, all of them related with not found statements.
The error appears randomly but constantly. Maybe ( 1 ok 1 fails), (1 ok 2 fails), (2 ok, 3 fails) and so on.
Deps
"postgrex": {:hex, :postgrex, "0.15.6", "a464c72010a56e3214fe2b99c1a76faab4c2bb0255cabdef30dea763a3569aa2", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "f99268325ac8f66ffd6c4964faab9e70fbf721234ab2ad238c00f9530b8cdd55"},
Code
def get_client(id) when is_integer(id) do
  Repo.one from client in Client,
  where: client.id == ^id,
  left_join: client_credentials in assoc(client, :credentials),
  preload: [credentials: client_credentials]
end

Error
iex(meetrika@<IP_ADDRESS>)12> Meetrika.Accounts.Persistence.Client.get_client(12)
** (Postgrex.Error) ERROR 26000 (invalid_sql_statement_name) prepared statement "ecto_162" does not exist
    (ecto_sql) lib/ecto/adapters/sql.ex:593: Ecto.Adapters.SQL.raise_sql_call_error/1
    (ecto_sql) lib/ecto/adapters/sql.ex:526: Ecto.Adapters.SQL.execute/5
    (ecto) lib/ecto/repo/queryable.ex:192: Ecto.Repo.Queryable.execute/4
    (ecto) lib/ecto/repo/queryable.ex:17: Ecto.Repo.Queryable.all/3
    (ecto) lib/ecto/repo/queryable.ex:112: Ecto.Repo.Queryable.one/3

Any idea?
Thanks!

Unfortunately without a way to reproduce it is hard for us to say. I have some questions though:

What is your Ecto and Ecto SQL versions?

When it fails again, are you invoking the exact same command with the same parameters? For example: Meetrika.Accounts.Persistence.Client.get_client(12) and then Meetrika.Accounts.Persistence.Client.get_client(12) could have one failing and the other working? And they fail with the same error or does the ecto_XYZ bit change?

"ecto": {:hex, :ecto, "3.4.4", "a2c881e80dc756d648197ae0d936216c0308370332c5e77a2325a10293eef845", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4bd3ad62abc3b21fb629f0f7a3dab23a192fca837d257dd08449fba7373561"},
"ecto_sql": {:hex, :ecto_sql, "3.4.3", "c552aa8a7ccff2b64024f835503b3155d8e73452c180298527fbdbcd6e79710b", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optio

Exactly, always same error in this case "ecto_162"

I've updated my deps to ecto:3.4.6 and ecto_sql:3.4.5 and the error persist but the code is a different one "ecto_323" in this case
iex(meetrika@<IP_ADDRESS>)11> Meetrika.Accounts.Persistence.Client.get_client(12)
** (Postgrex.Error) ERROR 26000 (invalid_sql_statement_name) prepared statement "ecto_323" does not exist
    (ecto_sql) lib/ecto/adapters/sql.ex:593: Ecto.Adapters.SQL.raise_sql_call_error/1
    (ecto_sql) lib/ecto/adapters/sql.ex:526: Ecto.Adapters.SQL.execute/5
    (ecto) lib/ecto/repo/queryable.ex:192: Ecto.Repo.Queryable.execute/4
    (ecto) lib/ecto/repo/queryable.ex:17: Ecto.Repo.Queryable.all/3
    (ecto) lib/ecto/repo/queryable.ex:112: Ecto.Repo.Queryable.one/3

Hope this helps . Thanks!

Are you using pgpool or anything in front of postgres?

Yes, a connection pool is enabled inside Digital Ocean. If I delete it I have this message.
iex(meetrika@<IP_ADDRESS>)11> Meetrika.Accounts.Persistence.Client.get_client(12)
** (DBConnection.ConnectionError) connection not available and request was dropped from queue after 2871ms. This means requests are coming in and your connection pool cannot serve them fast enough. You can address this by:

  1. By tracking down slow queries and making sure they are running fast enough
  2. Increasing the pool_size (albeit it increases resource consumption)
  3. Allow requests to wait longer by increasing :queue_target and :queue_interval

See DBConnection.start_link/2 for more information

    (ecto_sql) lib/ecto/adapters/sql.ex:593: Ecto.Adapters.SQL.raise_sql_call_error/1
    (ecto_sql) lib/ecto/adapters/sql.ex:526: Ecto.Adapters.SQL.execute/5
    (ecto) lib/ecto/repo/queryable.ex:192: Ecto.Repo.Queryable.execute/4
    (ecto) lib/ecto/repo/queryable.ex:17: Ecto.Repo.Queryable.all/3
    (ecto) lib/ecto/repo/queryable.ex:112: Ecto.Repo.Queryable.one/3

Can you please share your prod configuration? Please remove the password and username bits. Ecto has its own pool, you shouldn't  need to add your own pool on top.

This is my releases.exs file . The value of DB_POOL_SIZE is set to 15 currently
import Config

service_name = System.fetch_env!("SERVICE_NAME")
db_url = System.fetch_env!("DB_URL")
secret_key_base = System.fetch_env!("SECRET_KEY_BASE")
port = System.fetch_env!("PORT")
pool_size = System.fetch_env!("DB_POOL_SIZE") |> String.to_integer

config :meetrika,
  client_domain: System.get_env("MTK_CLIENT_DOMAIN")

config :meetrika, Meetrika.Repo,
  url: db_url,
  pool_size: pool_size,
  ssl: true

config :meetrika, MeetrikaWeb.Endpoint,
  http: [port: port],
  secret_key_base: secret_key_base,
  url: [host: {:system, "APP_HOST"}, port: {:system, "PORT"}]

config :peerage, via: Peerage.Via.Dns,
  dns_name: service_name,
  app_name: "meetrika"

I have pushed a commit to Postgrex master. It doesn't fix the root cause of the error, which I don't understand what it is, but it at least allows the connection to recover from the error, so you are least get unstuck from this permanent error state. Can you please try it out?

Also, every time you do a new deployment, you can immediately reproduce the error, right?

Ok, after reading DO docs, it is clear they are using pgbouncer, so you need to set prepare: :unnamed in your repo configuration. There is more info in Postgrex' readme: https://github.com/elixir-ecto/postgrex/#pgbouncer

Fantastic, is working, although I must to enabled DO pooling otherwise I get the "connection not available and request was dropped" error but maybe it is normal (It's my first time working with Elixir and Cloud environments)
Thank you for your support @josevalim. Very appreciated.

Adding prepare: :unnamed to my Repo config also fixed the issue with my Supabase database connection.
config :my_app, MyApp.Repo,
  pool_size: 10,
  url: database_url,
  prepare: :unnamed


samples: virtio: entropy: add overlay for dts and conf

for xenvm, allowing it to communicate with entropy virtio mmio device side from qemu.

@arnopo , @danmilea  PTAL.


Daily task list for current skills

Needs to show character icon (from design team)
needs to show XP
needs to show badges (fake data until we have backend/coordinate with them about what the format will be)
Needs to show item button to see all items (+item menu)

Must show skills along with their daily tasks
Show the completion % of different skills (i.e. 25/31 meditation sessions complete)
Daily reminders (make it optional, so someone can use "~remind 5PM" or something to get a daily reminder
Anything else you can think of

what will the daily reminders be based on?

what will the daily reminders be based on?

What do you mean?

Completed


feat: dubletten tool - add logic to also merge bibsonomy entries from "dubletten" into "vorfinale einträge"

Related to #9
Not a bug but a feature request (that had not been implemented yet):

include bibsonomy references from dubletten into merging logic of vorfinale einträge.

This is referenced as 'bug'  nr. 1 (of 4) as reported by Marion Romberg (on teams)

The pushed fix is deployed and in testing by the editorial team.


Update docs with correct API Gateway timeout (29s)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Merge


GetHierarchy getter

generalized hierarchical dimension getter

tests in ifrs17 CE "dev" environment and in corresponding "ifsr17 template, dev environment are green. @dcolleoni


Autofill with input component

Description
Describe your issue here.
What type of issue is this? (place an x in one of the [ ])

[x] bug
[ ] enhancement (feature request)
[ ] question
[ ] documentation related
[ ] example code related
[ ] testing related
[ ] discussion

Requirements (place an x in each of the [ ])

[ ] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[ ] I've read and agree to the Code of Conduct.
[ ] I've searched for any related issues and avoided creating a duplicate issue.

Bug Report
Hi slack team,
I am working on some internal slack app works,
and I have a problem when I want make input component support autofill.
For example:
We have 2 components, one is static select menu, options[]=[1,2,3,4,5]
another one is input component
when user select "1" in static select menu,
slack app will send payload to our backend service and backend service will update view and set input component init value to "one", and then input component will show "one" .
Selected item       =>input autofill value
1            =>          one
2            =>          two
3            =>          three
4            =>          four
5            =>          five
I use view.update  to implement input component autofill feature,

If user only keep autofill value(like "one")  and click submit, the payload send to our backend service have a problem, the input component value = null, not "one", the payload not include input init value, so bakcend service can not  handle the autofilled value.
In this case payload will be:
input component init value= "one"
submit payload's input value="null"
But I want this submit payload's input value also = "one", but in slack sdk will put null into payload and pass it to backend

If user want delete autofill value and keep it empty, then user click submit, the payload send to our backend service also have a problem, the input component value = null, but init value="one"
In this case payload will be:
input component init value= "one"
submit payload's input value="null"

If user add something after autofilled value like "one 123", and click submit, the payload send to our backend service is not null, it will be "one 123", this will include input component init value.
In this case payload will be:
input component init value= "one"
submit payload's input value="one 123"
You can see that case 1 and 2 have same payload, so we can not handle this situation in backend service.

Reproducible in:
package version:
3.4.0
node version:
GAE node 14
OS version(s):
MacOS and Windows10
Steps to reproduce:
1.Select item in static select menu
2.Backend service update view, and set init value to input component
3.Click submit
4.Backend service can not handle submit payload, becuase input value in payload is null
Expected result:
When user click submit, input component  payload is the value in input component.
If input component only have init value, submit payload need include init_value, not pass null to backend.
Actual result:
submit payload's input value not include init value.
Attachments:
Logs, screenshots, screencast, sample project, funny gif, etc.

Hi @jzz567, thanks for writing in!
Does the app have section/actions block for the select menu? If so, the data won't be included in the view_submission payload. To have the select menu values as well, your app can use "type": "input" blocks with dispatch_action: true property. Refer to the document https://api.slack.com/reference/block-kit/blocks#input for more details.
With this way, your app can receive the user input value for both below:

block_actions requests every time an item is selected (=the event that you're using for views.update API calls)
view_submission payload when the Submit button at the bottom of the modal

If your situation is not a different case, it'd be appreciated if you could share the app code to help us understand your issue well.
I hope this was helpful to you!

Hi, @seratch , i am using block_actions and view_submission in backend service to handle user selected action and user submit action.
My problem is when user selected an item and my backend service receive this action, then backend service will update the view to set input component init value, this will make input component have a default value, and then if user click submit, the view_submission payload will not include this default init value, it is null, so we can not get user's input.

@jzz567 If I understand what you would like to achieve correctly, the following code example should work for you. I don't see any misbehaviors so far. logger.info(JSON.stringify(view.state.values, null, 2)); in the app.view listener always prints the selected item without any issues.
function buildModalView(selectedItem) {
  const modal = {
    "type": "modal",
    "callback_id": "rating-modal",
    "title": {
      "type": "plain_text",
      "text": "Rating"
    },
    "close": {
      "type": "plain_text",
      "text": "Cancel"
    },
    "blocks": [
      {
        "type": "input",
        "block_id": "selection-block",
        "dispatch_action": true,
        "element": {
          "type": "static_select",
          "action_id": "select-action",
          "options": [
            {
              "text": {
                "type": "plain_text",
                "text": "one"
              },
              "value": "1"
            },
            {
              "text": {
                "type": "plain_text",
                "text": "two"
              },
              "value": "2"
            },
            {
              "text": {
                "type": "plain_text",
                "text": "three"
              },
              "value": "3"
            }
          ]
        },
        "label": {
          "type": "plain_text",
          "text": "Rating"
        }
      }
    ]
  };
  if (typeof selectedItem !== "undefined") {
    modal.blocks[0].element.initial_option = selectedItem;
    modal.submit = {
      "type": "plain_text",
      "text": "Submit"
    };
  }
  return modal;
}

app.command("/open-the-modal", async ({ client, ack, body }) => {
  await ack();
  await client.views.open({
    "trigger_id": body.trigger_id,
    "view": buildModalView(undefined)
  });
});

app.action("select-action", async ({ ack, body, action, client}) => {
  await ack();
  await client.views.update({
    view_id: body.view.id,
    view: buildModalView(action.selected_option)
  })
});

app.view("rating-modal", async ({ logger, view, ack }) => {
  await ack();
  logger.info(JSON.stringify(view.state.values, null, 2));
});

If this is not the behavior you meant, sharing your code snippet would be appreciated.

Hi, @seratch , I think i found the reason, if i added block_id, this will make input value = null
Code:
https://codesandbox.io/s/practical-kate-x5o5o?file=/src/index.js

@jzz567 Thanks for sharing your code. I've managed to reproduce the situation on my end. Indeed, the Slack server-side behavior in this scenario is not intuitive at all. I will internally share this feedback with the server-side engineering teams. Thanks a lot for flagging this!
We (as the SDK maintainers) are unable to tell whether and when the server-side can be improved. It may take longer than you expect until it's fixed (I hope it won't take long, though). So, as a workaround for now, let me suggest setting either block_id or actions_id of the text input block to a different value when calling views.update API.
As we observed, the server-side handling works with random block_id / action_id. Essentially, they are not necessarily random ones. Just setting a different one works fine. Therefore, appending some suffix to either block_id or action_id can eliminate the issue. Specifically, block_id: "header" + (autofillValue !== "" ? "-autofilled" : ""), in your getView function should work. Considering the state.values data structure, modifying action_id may make the app.view listener code slightly easier.
We are sorry about spending the time on this issue. I hope the workaround that I suggested here goes well for your use case.

Thanks @seratch , thats a good idea! I will try them!
Thank you very much!

@seratch this is still happening. The initial options, that are put via a view.update, are not in view.state.values.


refactor of create node

Codecov Report

Merging #220 (5fc4b2a) into master (aeb55b6) will decrease coverage by 0.06%.
The diff coverage is 78.26%.

@@            Coverage Diff             @@
##           master     #220      +/-   ##
==========================================
- Coverage   67.89%   67.83%   -0.07%
==========================================
  Files          71       71
  Lines        5115     5121       +6
==========================================
+ Hits         3473     3474       +1
- Misses       1180     1184       +4
- Partials      462      463       +1

Impacted Files
Coverage Δ

service/init.go
61.51% <76.19%> (-1.13%)
:arrow_down:

api/node.go
69.18% <100.00%> (+0.06%)
:arrow_up:

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 aeb55b6...5fc4b2a. Read the comment docs.

Codecov Report

Merging #220 (5fc4b2a) into master (aeb55b6) will decrease coverage by 0.06%.
The diff coverage is 78.26%.

@@            Coverage Diff             @@
##           master     #220      +/-   ##
==========================================
- Coverage   67.89%   67.83%   -0.07%
==========================================
  Files          71       71
  Lines        5115     5121       +6
==========================================
+ Hits         3473     3474       +1
- Misses       1180     1184       +4
- Partials      462      463       +1

Impacted Files
Coverage Δ

service/init.go
61.51% <76.19%> (-1.13%)
:arrow_down:

api/node.go
69.18% <100.00%> (+0.06%)
:arrow_up:

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 aeb55b6...5fc4b2a. Read the comment docs.


Improve network embedding support

Fix bug with deep sliver node id on interfaces a1f19aff69aef7b50b4771fab17540ba46b3bcc0 and 8f3b7c8142cd66ada9590f05965e1595a36438c8
Add local_name support to interfaces so matching between ASM and CBM is easier 34394d31f5cd10b5c045ef81d31574cadee5fbd5
Add support to find peer interface at fim.user level d0179a4cd15af0f4dd34358b7938d4a0d8e4bee6

For using local_name - basically every Interface now has a Labels object with at least local_name property set. For dedicated SmartNIC type cards it is a single string like 'p1' or 'p2'. For shared cards (in CBMs, not ASMs) the fiels is a list ['p1', 'p1', 'p1'] because other fields like bdf and mac are also lists corresponding to however many VFs are built in SR-IOV.
For find peer everything should be simple - take any fim.user.Interface object and ask .get_peer() to get either None or another Interface object that is connected via Link. @kthare10


Domain activation is Failed - Cannot connect subdomain previously connected to CloudFront

App Id: d1p3q0irdty9gr
Region: eu-central-1
Step: Domain activation
Status: Failed
Issue/question
I wanted to connect a subdomain (like app.DOMAIN.com) via Amplify. This subdomain was previously associated with a cloudfront distribution that served an S3 bucket. Even after removing the corresponding CNAME record in Route53 I am unable to connect that subdomain. I already created a new Amplify App, tried deleting CNAMEs again, but it doesn't work.
Help is highly appreciated, as I am currently stuck with this not working.
Error message
Something went wrong. Please refer to our troubleshooting guide below to diagnose the issue. After fixing the issue, choose retry below. If retrying fails, please create an issue in our GitHub issue tracker.
Error message: One or more of the CNAMEs you provided are already associated with a different resource.
Additional information
Note: previously the subdomain was set up as a ALIAS CNAME record to a CloudFront Distribution

Hi @ChrisKno,
Could you try deleting the domain from the amplify app, and re-adding it (if you haven't already tried)?

Hi @ChrisKno,
Could you try deleting the domain from the amplify app, and re-adding it (if you haven't already tried)?

Hi @abhi7cr,
thanks for your suggestion. I tried that multiple times, in different apps. It always fails saying the CNAME is already associated with a different resource. I tested by continuing to use my old cloudfront distribution with the A ALIAS record under app.DOMAIN.com and then renaming this entry to app-test.DOMAIN.com.
So like this there is no way the CNAME app.DOMAIN.com is even in use, right (also deleted it multiple times)?
What else could I try?

Hi @ChrisKno,
Just to understand, there is no Cloudfront distribution which has the CNAME as your domain name, and when you tried deleting the domain from the amplify app and re-adding it, you still got the same issue?

Hi @ChrisKno,
Just to understand, these were the steps you took:

Make sure there was no Cloudfront distribution which has the CNAME as your domain name. If there was, remove it using Cloudfront console (if the app was hosted directly using Cloudfront & S3) or delete all the amplify apps associated with that domain, and also delete old CNAME records from Route53
You then tried creating a new amplify app, and add the domain
And you still got the same issue?

@abhi7cr your comment totally helped me fix it now. I was always checking that there were no CNAME entries in Route53 - unaware that within the CloudFront settings there is the option to specify a CNAME (which does not appear in Route53, which is why this is confusing...)
I removed it from both Route53 and CloudFront settings, now I was able to add the Domain.
Appreciate your help, thank you!


TTS Customization UI

It would be great to include TTS customizations in the UI if it is not already planned.

@lmazzoli Actually TTS customizations is included - the very first screen leads to two separate login pages, one for STT and another one for TTS customization.

@lmazzoli Actually TTS customizations is included - the very first screen leads to two separate login pages, one for STT and another one for TTS customization.

Sorry, I see the TTS UI -- just missed on my initial login.

Sorry, I see the TTS UI -- just missed on my initial login.


Memory leak C++

Required Info

Camera Model
D435i

Firmware Version
2.29

Operating System & Version
Linux (Ubuntu 16)

Kernel Version (Linux Only)

Platform

SDK Version

Language
C++

Segment

Issue Description
Hello, I have found a possible memory leak in this simple code. I ran it for 7 hours and RAM usage went from ~95MB to ~200MB. Do I need to delete or free something?
#include <librealsense2/rs.hpp>
#include <iostream>
int main()
{
    rs2::pointcloud pc;
    rs2::points points;
    rs2::pipeline pipe;
    rs2::config cfg;
    cfg.enable_device_from_file("20190904_132610.bag");
    pipe.start(cfg);
    auto frames = pipe.wait_for_frames();
    auto depth = frames.get_depth_frame();
    points = pc.calculate(depth);
    auto vertices = points.get_vertices();
    auto tex_coords = points.get_texture_coordinates();
    long int i = 0;
    while (1)
    {
	i ++;
	std::cout<<i<<std::endl;
        frames = pipe.wait_for_frames();
        depth = frames.get_depth_frame();
        points = pc.calculate(depth);
        vertices = points.get_vertices();
        tex_coords = points.get_texture_coordinates();
    }
}

There is a known issue of a memory leak in the point cloud processing block that is listed in the SDK release notes for the current version (2.29.0).
https://github.com/IntelRealSense/librealsense/issues/2860

@ev-mp - if I recall correctly, this was addressed, right?

@ev-mp - if I recall correctly, this was addressed, right?

The recent fix was for the Occlusion filter.

Duplicate of #2860

Fix is in the development branch via https://github.com/IntelRealSense/librealsense/pull/9553


Fixed spacing in product name to App ID.

Coverage remained the same at 36.91% when pulling dc4d46b740f3784f4f0ace1b8323d8be4d8d5010 on master into ff613c2fa9d4e32d4eb28a7b19969f411b654366 on development.


Conditional ClusterSchemas and WindowCoveringCluster

This PR is my propsal for the Conditional idea with runtime check and also as basis for typing. The PR includes:

Enhance BitMap typing and Schemas to allow "Partially" provided Bitmaps by suprerssing the "unset" bits. this should make is easier and less code
Clusters use this Partial type for Schemas
Intoduce new types for Attributes, Commands and Events as "Conditional" type to be used in ClusterSchemas (new idea of "the all in one Cluster used as basis for generation and anything). These types allow to specify mandatoryId and optionalIf attributes as array of corresponding cluster types. All this is typed correctly. Conditional* is inherited from Optional, so are all optional by definition
On ClusterServer instance creation - if Conditional Attrinbutes are used - there is a type checking which logs
I created (as discussed as idea) new dir cluster/schema with these type of clusters
I also added then the Window Cluster for the other Extend variants in normal dir (would be replaced by generated one)

Additionally I fixed the command return types because they are TlvNoResponse. And I added some first "scene" flags.  I will do another fixing run later.
Happy to get your feedback

Further WC rework is prepared in https://github.com/Apollon77/matter.js/pull/2/files#diff-7a1cae91ba88568f50b6f19025c6031c6d748c9f83c26ac28205593e62bada77 ...
Additionalyl I openend one specs check issue: https://github.com/project-chip/connectedhomeip/issues/26905

If we merge this PR should get the full commit history in. Git blame generally isn't very useful in the repository right now.

I will try to remember when I merge :-)
But in fact because it is basing on main and not the other PRs it's mainly "ingo was it"


async_req not well documented, types incorrect, async/await support?

We are trying to run multiple api calls concurrently, we are using async_req for that.
Unfortunately the docs and types for this mode of operation are rather lacking.
Also an async/await variant would be very nice since ThreadPools do not play very nicely with async/await in general.

@SimonSchick
Currently, async requests have a very thing implementation in the client, and they rely on the simple interfaces generated by OpenAPI code generators. The preferred pattern is for the user to create their multithreading/multiprocessing pattern, where each thread/process works with an independent client instance. Something like this community post.
However, we are aware of the shortcomings of this setup and are actively working on revamping the SDKs to support async requests natively. Feel free to let us know how else we can help you with your setup.

hi @SimonSchick - I'm re-opening this issue to let you know that we have a new SDK rolling out, still in experimental mode
https://github.com/pinecone-io/pinecone-client
Migration is simple, you can see on the readme, and also - there's a new async/await implementation that solves your issue exactly
see here : https://github.com/pinecone-io/pinecone-client#performance-tuning-for-upsering-large-datasets
Let us know if that helps!
Roy


Invalid prop: style ?

Starting to get this error a few minutes ago?
Uncaught Error: [paypal-checkout] Invalid prop: style ...
Can we please stop dropping props with no notice?

@yabdab -- can you please do a cache clean and make sure you have the latest checkout.js?
This isn't a dropped prop. It's because style was added as a new internal prop for the Checkout component, but it's not being recognized for older versions of checkout.js. For now this problem should be limited to sandbox, and should be fixable with a cache clean.
Thanks!

I also noticed the same error minutes ago. Demo page does not work either.

@melwas -- I know it's not ideal, but does clearing your cache solve the problem for you?

@bluepnume I deleted the previous comment because I thought the cache should fix the issue, but it seems that it does not. After clearing the cache the demo page still does not work for me. Checked it on Chrome, Firefox and Safari...

OK, thanks for the heads up. For now I'm rolling back the sandbox changes while I investigate this.

Doing a hard reset and cache clear in Chrome worked for me. Will keep an eye on it.

I assume this has to do with new funding icons art?

That's part of the next release, yes. But not directly the cause of this issue.

OK, rollback is complete.


This module has gone Glacial - on the back-burner

This module was mostly built using the pre 2016 ufo build-tool, which is no longer available.
It's now reliant on rakudo 2016.xx precompilation, which isn't yet fast to load or run. Now takes quite a few minutes to run the test-suite, with most of the time spent in precompilation and/or loading.
At this stage, I'm only regressing this module occasionally. There doesn't seem to be a fair bit of scope for optimization both in rakudo and within this module. May look at this again towards the end of 2016 or early in 2017.

Running much better. Typically taking ~90 sec to run test suite on latest Rakudo 2016.11.
Picking it up again :-)


Fixing links

fix links in 1.2 upgrade pks w/ nsx-t since 1.1 is now PDF links won't work anymore

Yes, please link to the PDF. Wasn’t sure how to do that. Thanks.
From: Severine Tymon<EMAIL_ADDRESS>Sent: Tuesday, February 19, 2019 4:38 PM
To: pivotal-cf/docs-pks<EMAIL_ADDRESS>Cc: Lorenzo Paris<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [pivotal-cf/docs-pks] Fixing links (#561)
@seviet commented on this pull request.

In upgrade-pks-nsxt.html.md.erbhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpivotal-cf%2Fdocs-pks%2Fpull%2F561%23discussion_r258290602&data=02|01|lparis%40vmware.com|a2fe62401ad249a357e408d696cbacd1|b39138ca3cee4b4aa4d6cd83d9dd62f0|0|1|636862198860414762&sdata=GIs4i8gXRwamoPh4bLWyACNgggJXC2L2Mu%2F3KiUz%2FrM%3D&reserved=0:

@@ -109,7 +109,7 @@ Deployment Health](verify-health.html#k8s).

Verify that NSX Edge is configured for high availability using Active/Standby mode.

Note: Workloads in your Kubernetes cluster are unavailable while the NSX Edge nodes run the upgrade unless you configure NSX Edge for high availability. For more information, see the Configure NSX Edge for High Availability (HA) section of Preparing NSX-T Before Deploying PKS.

(Optional) Back up the environment using the procedures in the following topics:

Backup PKS

Backup PKS. Refer to the topic "Backing up the PKS Control Plane" in the PKS 1.1 documentation (PDF).

hey @lparishttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Flparis&data=02|01|lparis%40vmware.com|a2fe62401ad249a357e408d696cbacd1|b39138ca3cee4b4aa4d6cd83d9dd62f0|0|1|636862198860424763&sdata=NtzkEEs1zyw3gApH9BdBZZ1CZZdCOUK0HIzPhLwXfRQ%3D&reserved=0 -- would it be ok to link to this PDF https://docs.pivotal.io/archives/pks-1-1.pdfhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.pivotal.io%2Farchives%2Fpks-1-1.pdf&data=02|01|lparis%40vmware.com|a2fe62401ad249a357e408d696cbacd1|b39138ca3cee4b4aa4d6cd83d9dd62f0|0|1|636862198860424763&sdata=VYhOUDzDOkZnAk8NPnIVfSwXlZPhayQz4iC6h%2FYkTkA%3D&reserved=0 or is there a VMware PDF version tha tyou would prefer we link to?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fpivotal-cf%2Fdocs-pks%2Fpull%2F561%23pullrequestreview-205525932&data=02|01|lparis%40vmware.com|a2fe62401ad249a357e408d696cbacd1|b39138ca3cee4b4aa4d6cd83d9dd62f0|0|1|636862198860434768&sdata=ZzDvfCgfd5GeZ8oQrjJcOXExaLzF4jczhLkP%2F8NXeLw%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAJV02Q_bWQN_SMsfrbIbuL01xWh4803zks5vPJjrgaJpZM4bEHgw&data=02|01|lparis%40vmware.com|a2fe62401ad249a357e408d696cbacd1|b39138ca3cee4b4aa4d6cd83d9dd62f0|0|1|636862198860444772&sdata=z%2Ft7yFnkYFaw1LSSmIU4hI9NdK2WYYbwdqKg9hqgItM%3D&reserved=0.


Link Unfurling - Unfurling card content is not getting truncated on Firefox (working fine with Teams app and chrome)

We've implemented link unfurling for the links in Microsoft Teams. When the links are pasted into Firefox(Mac), Unfurling card content is not getting truncated. This is working fine on Chrome and Teams client. Attaching a video reference for the same.
https://user-images.githubusercontent.com/60126553/229704472-1f452f00-ff7d-4a66-9630-0562f69ec696.mov

@Abhiram219 - Thanks for reporting your issue. Could you please share the link to test at our end?

@Nivedipa-MSFT  https://emprdutah01.service-now.com/kb/en/what-are-phishing-scams-and-how-can-i-avoid-them?id=kb_article_view&sys_kb_id=3020c9b1474321009db4b5b08b9a712d&a=b

@Abhiram219 - Could you please share the card payload for unfurl card?

{"composeExtension":{"attachments":[{"content":{"type":"AdaptiveCard","body":[{"items":[{"color":null,"horizontalAlignment":null,"isSubtle":false,"maxLines":0,"size":"small","text":"Article | IT","weight":"lighter","wrap":true,"separator":false,"type":"TextBlock"},{"color":null,"horizontalAlignment":null,"isSubtle":false,"maxLines":0,"size":"medium","text":"What are phishing scams and how can I avoid them?\n\t\t","weight":"bolder","wrap":true,"spacing":"None","separator":false,"type":"TextBlock"},{"color":null,"horizontalAlignment":null,"isSubtle":false,"maxLines":2,"size":null,"text":"Phishing explained\nPhishing Explained\nPhishing scams are typically fraudulent email messages appearing to come from legitimate enterprises (e.g., your company, your Internet service provider, your bank). These messages usually direct you to a spoofed web site or otherwise get you to divulge private information (e.g., passphrase, credit card, or other account updates). The perpetrators then use this private information to commit identity theft.\nOne type of phishing attempt is an email message stating that you are receiving it due to fraudulent activity on your account, and asking you to "click here" to verify your information.\nPhishing scams are crude social engineering tools designed to induce panic in the reader. These scams attempt to trick recipients into responding or clicking immediately, by claiming they will lose something (e.g., email, bank account). Such a claim is always indicative of a phishing scam, as responsible companies and organizations will never take these types of actions via email.\nSpecific types of phishing\nPhishing scams vary widely in terms of their complexity, the quality of the forgery, and the attacker's objective. Several distinct types of phishing have emerged.\nSpear phishing\nPhishing attacks directed at specific individuals, roles, or organizations are referred to as "spear phishing". Since these attacks are so pointed, attackers may go to great lengths to gather specific personal or institutional information in the hope of making the attack more believable and increasing the likelihood of its success.\nThe best defense against spear phishing is to carefully, securely discard information (i.e., using a cross-cut shredder) that could be used in such an attack. Further, be aware of data that may be relatively easily obtainable (e.g., your title at work, your favorite places, or where you bank), and think before acting on seemingly random requests via email or phone.\nWhaling\nThe term "whaling" is used to describe phishing attacks (usually spear phishing) directed specifically at executive officers or other high-profile targets within a business, government, or other organization.\nAvoiding phishing scams\nThe Company and other reputable organizations will never use email to request that you reply with your passphrase, Social Security number, or confidential personal information. Be suspicious of any email message that asks you to enter or verify personal information, through a web site or by replying to the message itself. Never reply to or click the links in a message. If you think the message may be legitimate, go directly to the company's web site (i.e., type the real URL into your browser) or contact the company to see if you really do need to take the action described in the email message.\nWhen you recognize a phishing message, delete the email message from your Inbox, and then empty it from the deleted items folder to avoid accidentally accessing the web sites it points to.\nAlways read your email as plain text.\nPhishing messages often contain clickable images that look legitimate; by reading messages in plain text, you can see the URLs that any images point to. Additionally, when you allow your mail client to read HTML or other non-text-only formatting, attackers can take advantage of your mail client's ability to execute code, which leaves your computer vulnerable to viruses, worms, and Trojans.\nWarnings\nReading email as plain text is a general best practice that, while avoiding some phishing attempts, won't avoid them all. Some legitimate sites use redirect scripts that don't check the redirects. Consequently, phishing perpetrators can use these scripts to redirect from legitimate sites to their fake sites.\nAnother tactic is to use a homograph attack, which, due to International Domain Name (IDN) support in modern browsers, allows attackers to use different languagecharacter sets to produce URLs that look remarkably like the authentic ones.\nReporting phishing attempts\nIf the phishing attempt targets the Company in any way (e.g., asks for the Company's Webmail users to "verify their accounts", includes a malicious PDF directed to human resources, or impersonates the Company), forward it with full headers to the Company Information Security Office. You can report a phishing scam attempt to the company that is being spoofed. You can also send reports to the Federal Trade Commission (FTC). Depending on where you live, some local authorities also accept phishing scam reports. Finally, you can send details to the Anti-Phishing Working Group, which is building a database of common scams to which people can refer.\nExample of a phishing scam\nThe following phishing scam was targeted at Servicenow users:\n-----------------------------------------------------------------\n\nFrom: "SERVICENOW.ORG SUPPORT TEAM"<EMAIL_ADDRESS>"SERVICENOW.ORG SUPPORT TEAM"<EMAIL_ADDRESS>Sat, 12 Jul 2008 17:42:05 -0400\nTo<EMAIL_ADDRESS>CONFIRM YOUR ACCOUNT\n\nDear SERVICENOW.ORG Webmail Subscriber\n\nThis mail is to inform all our {SERVICENOW.ORG} webmail users that we\nwill be maintaining and upgrading our website in a couple of days from\nnow.As a Subscriber you are required to send us your Email account\ndetails to enable us know if you are still making use of your\nmailbox. Be informed that we will be deleting all mail account that is\nnot functioning to enable us create more space for new employees and\nmanagers in the company, You are to send your mail account details which\nare as follows:\n\nUser Name:\nPassword:\n*Date of birth:\n\nFailure to do this will immediately render your email address deactivated from our database.\n\nThank you for using SERVICENOW.ORG\nFROM THE SERVICENOW.ORG SUPPORT TEAM\n\n------------------------------------------------------------------","weight":null,"wrap":true,"spacing":"Medium","separator":false,"type":"TextBlock"},{"actions":[{"url":"https://emprdutah01.service-now.com/kb/en/what-are-phishing-scams-and-how-can-i-avoid-them?id=kb_article_view&sys_kb_id=3020c9b1474321009db4b5b08b9a712d&a=b","title":"View Article","type":"Action.OpenUrl"}],"spacing":"Large","separator":false,"type":"ActionSet"}],"separator":false,"type":"Container"}],"$schema":"http://adaptivecards.io/schemas/adaptive-card.json","version":"1.2"},"contentType":"application/vnd.microsoft.card.adaptive","preview":{"content":{"title":"What are phishing scams and how can I avoid them?\n\t\t","text":"Article | IT","images":[{"alt":"Service Now","url":"https://in-prod.asyncgw.teams.microsoft.com/urlp/v1/url/content?url=https%3A%2F%2Femprdutah01.service-now.com%2FNotes.png"}]},"contentType":"application/vnd.microsoft.card.hero"}}],"type":"result","attachmentLayout":"list"},"responseType":"composeExtension"}

@Abhiram219 - We are able to repro your issue. We have tested this usingEdge browser and safari browser on Windows.
On Edge browser the Unfurling card content is truncated but on safari browser the content is not truncated.
We have tested this on safari version 111.0.1 and edge version 111.0.1661.51.

We have raised a bug for the same. We will let you know once we get any updates on it.

@Abhiram219 - The bug has been fixed now. We have tested this on Teams web client on Windows using Firefox version 117.0.1 and edge version 117.0.2045.43.
Could you please test this and confirm once?