Umbrella issue for 1.0.0

[ ] More per-service settings with fluent route mapping. #1649

This revamps the routing and path mapping API to allow a non-annotated service to accept certain methods or media types.
Related: More convenient decoration #199 (w.r.t specifying multiple decorators)
[ ] Provide a way to configure content previewing to the specific service #1619
[ ] HTTP header/parameter-based path mapping #1207

[ ] Separate messages for AggregatedHttpMessage request / response #1702
[ ] Add a StreamMessage subscription option that notifies cancellation to onError() #1700
[ ] Add boolean shutdownOnStop parameter to ServerBuilder.blockingTaskExecutor() #1685
[ ] Immutable HttpHeaders and Cookies #1567
[ ] Make sure all safely retriable exceptions are wrapped by UnprocessedRequestException

[ ] Change to return UnprocessedRequestException in RetryingClient #1653
[ ] Wrap socket connect failures and more with UnprocessedRequestException
[ ] Make sure UnprocessedRequestException always has a cause.
[ ] Add a section about UnprocessedRequestException in RetryingClient documentation #1395

[ ] Provide a way to build a generic RetryStrategy. #1634

This may replace some static factory methods.

[ ] Make it more configurable to extract the client IP address behind reverse-proxies #1631
[ ] Decorate a service by path mapping #582
[ ] Create an abstraction for a LoggingContext containing request properties #1510
[ ] Difficult to request from an absolute URL with HttpClient #1143
[ ] Provide an extension point in LoggingClient/Service for constructing a log message #1103

Do a final review on the current way of message sanitization in LoggingClient/Service. Can we make it any better, especially in terms of performance and flexibility?

[ ] EndpointGroup design issues #1084
[ ] A user may get the wrong RequestContext when contexts are nested #1083
[ ] Allow resetting the request timeout with the same value #740
[ ] Revisit the blockingTaskExecutor-related API

[ ] Make a blockingTaskExecutor a SchedulerExecutorService.
[ ] Make ServerConfig.blockingTaskExecutor context-aware #46

[ ] Revisit ServiceRequestContext.logger(). Do we really need it?
[ ] Tidy up the API

[ ] Remove all deprecated elements
[ ] Check all services and clients with public constructors.

Avoid exposing public constructors; provide a builder and/or factory methods, unless it is very simple.

[ ] Tidy up the build process for backward compatibility

[ ] Consider adopting NullAway into the build process #1680
[ ] Fail the build if API compatibility is broken

[ ] Make sure all examples have a Main class and are runnable from Gradle.

[ ] :examples:annotated-http-service does not have a main class. #1647

Currently, we use RpcXX classes such as RpcRequest, RpcResponse, RpcService, RpcClient, etc. for Thrift only.
Some of our customers, however, are very confused when they use Armeria with gRPC at first, because they thought the classes also related with gRPC.
I wonder if we have to rename them to ThriftXXX or abstract RpcRequest and RpcResponse to support streaming before 1.0.
Is there any idea for this? /cc @anuraaga

Consider deprecating *RegistrationBeans in Spring integration module and let users use the configurator which gives the most freedom. WDYT, @imasahiro @kojilin ?

I think I originally designed that API internally - and I vaguely recall realizing spring offers both registration beans and customizer ones so thought having both is idiomatic. I haven't used Spring in a long time though so could be misremembering or things could have changed.

Added two more discussion items:

Using 'builder()' factory method instead of constructor #1719
Renaming newDecorator() to decorator() #1718

Let me close this issue and set 1.0.0 to milestone for the issues which will affect the API design.

https://github.com/line/armeria/milestone/151


tiltfile: can optionally specify host_from_cluster as arg to default_registry in Tiltfile [ch4292]

Tiltfile change that should make all the previous engine changes go 🤞
engine tests and integration tests to follow

@nicks this is ready for review!


Added SmartCharging documentation to README

Describe your changes
Updated README.ms adding documentation specifically for our work with SmartCharging. I still feel like there could be a lot more done and I'm looking for suggestions.
Tasks:

Cleaned up markdown issues in the README as a whole.
Consolidated portions of the text that were only for 1.6 that can apply the the library in general.
Added sections for the SmartCharging work adding sequence diagrams of the flow.

Issue ticket number and link
https://github.com/US-JOET/base-camp/issues/184
Checklist before requesting a review

[✅] I have performed a self-review of my code
[✅] I have made corresponding changes to the documentation
[❎] If OCPP 2.0.1: I have updated the OCPP 2.0.1 status document
[✅] I read the contribution documentation and made sure that my changes meet its requirements

I'll give this another pass on Monday.


Python pulsar-client reader causes unidentifiable C++ exception

I am using Python pulsar-client. I create a reader that starts to read message from earliest.
msg_id = MessageId.earliest
reader = client.create_reader('my-topic', msg_id)

I am getting an error message
Connect error: unidentifiable C++ exception

Please, advice.

@alphara what version of pulsar python client are you using? Did you install the same version of Pulsar CPP client?

I am using lib-pulsar v2.6.0 and pulsar-client>=2.5.1 in Python app.

I just tried lib-pulsar v2.6.0 and pulsar-client v2.6.0. I see the same C++ exception.

The Python client is not using the C++ libpulsar, rather it's embedded in the wheel file itself.
@alphara Can you provide a simple reproducer example? Also, with the complete original logs?
For example, this is generally working fine with a connect error:
In [1]: import pulsar

In [2]: c = pulsar.Client('pulsar://localhost:6650')

In [3]: r = c.create_reader('my-topic', pulsar.MessageId.earliest)
2020-06-23 15:28:12.479 INFO  ConnectionPool:85 | Created connection for pulsar://localhost:6650
2020-06-23 15:28:12.481 ERROR ClientConnection:380 | [<none> -> pulsar://localhost:6650] Failed to establish connection: Connection refused
2020-06-23 15:28:12.481 INFO  ClientConnection:1349 | [<none> -> pulsar://localhost:6650] Connection closed
2020-06-23 15:28:12.481 ERROR ClientImpl:219 | Error Checking/Getting Partition Metadata while creating readeron persistent://public/default/my-topic -- 5
2020-06-23 15:28:12.481 INFO  ClientConnection:235 | [<none> -> pulsar://localhost:6650] Destroyed connection

The exception arises after the reader gets connected. Try to launch Pulsar before you launch the sample code.
The pulsar docs says here:

Pulsar Python client library is a wrapper over the existing C++ client library and exposes all of the same features. You can find the code in the python subdirectory of the C++ client code.
Is this info obsolete?

This is a simple example that I use
from pulsar import Client, MessageId

client = Client(service_url='pulsar://localhost:6650',
                authentication=None)
topic = 'my-topic'
msg_id = MessageId.earliest
reader = client.create_reader(topic, msg_id)

while True:
    msg = reader.read_next()
    print("Received message '{}' id='{}'".format(msg.data(), msg.message_id()))

I found that the example above works on my machine.
I have a bigger application that uses asyncio library. The reader.read_next() is executed inside the run_in_executor() method.
  # ...

  async def _tryToSubscribe(self, topic, queue, callback, pulsarStartMessage):
    def sync_subscribe():
      reader = None
      startMessageId = MessageId.earliest
      reader = self.pulsar.create_reader(topic, startMessageId)     # <- exception occurs here

    await self.loop.run_in_executor(self.executor, sync_subscribe)
    # ...

Is this info obsolete?

No, the Python client is based on C++. What I meant is that you don't need to install libpulsar separately. When you do pip install pulsar-client it will be fetching a wheel file that contains everything that is needed.

I have a bigger application that uses asyncio library. The reader.read_next() is executed inside the run_in_executor() method.

Can you post a small repro code using asyncio?
Can you show the pulsar client lib logs?

Here is a small example of code using asyncio.
from asyncio import get_event_loop, get_running_loop, sleep
from asyncio import CancelledError, Task
from signal import SIGINT, SIGTERM
from pulsar import Client, MessageId

async def start():
  loop = get_running_loop()
  executor = None

  def sync_connect():
    client = Client(service_url='pulsar://localhost:6650',
                    authentication=None)
    return client

  client = await loop.run_in_executor(executor, sync_connect)

  def sync_subscribe():
    topic = 'my-topic-1'
    msg_id = MessageId.earliest
    reader = client.create_reader(topic, msg_id)
    return reader

  reader = await loop.run_in_executor(executor, sync_subscribe)

  def sync_receive():
    msg = reader.read_next()
    return msg

  while True:
    msg = await loop.run_in_executor(executor, sync_receive)
    print("Received message '{}' id='{}'".format(msg.data(),
                                                 msg.message_id()))

  client.close()

async def run():
  ''' Run in event loop '''
  await start()

  while True:
    try:
      await sleep(60)
    except CancelledError:
      break
  get_running_loop().stop()

def signal_handler():
  ''' Signal handler '''
  for task in Task.all_tasks():
    task.cancel()

def main():
  ''' Program entry point '''
  loop = get_event_loop()
  loop.add_signal_handler(SIGINT, signal_handler)
  loop.add_signal_handler(SIGTERM, signal_handler)
  loop.run_until_complete(run())
  loop.remove_signal_handler(SIGINT)
  loop.remove_signal_handler(SIGTERM)
  loop.close()

if __name__ == '__main__':
  main()

It seems to be working for me. Using your code above with Python3.8 and pulsar-client==2.6.0.
$ python3 a.py
2020-06-26 13:56:55.615 INFO  [0x70000321d000] ConnectionPool:85 | Created connection for pulsar://localhost:6650
2020-06-26 13:56:55.617 INFO  [0x7000032a0000] ClientConnection:335 | [<IP_ADDRESS>:65389 -> <IP_ADDRESS>:6650] Connected to broker
2020-06-26 13:56:55.621 INFO  [0x7000032a0000] AckGroupingTrackerEnabled:53 | ACK grouping is enabled, grouping time 100ms, grouping max size 1000
2020-06-26 13:56:55.621 INFO  [0x7000032a0000] HandlerBase:53 | [persistent://public/default/my-topic-1, reader-06cf831e5f, 0] Getting connection from pool
2020-06-26 13:56:55.622 INFO  [0x7000032a0000] ConsumerImpl:199 | [persistent://public/default/my-topic-1, reader-06cf831e5f, 0] Created consumer on broker [<IP_ADDRESS>:65389 -> <IP_ADDRESS>:6650]

@merlimat, thank you for testing. Good to know it works on your side.

Good to know it works on your side.

Well.. it would be better if it actually failed 😄

Yeah. Is there a way to enable debug level of logging in pulsar-client on python?

There was an attempt to allow configuring a logger in Python directly, in #6113 but it was reverted for some side issues..
In any case, are you have to see the info level logs that are printed by the C++ lib?

Thanks for the info. Yes, I see the info logs printed in terminal by the C++ lib-pulsar. I have created both node.js and python applications that use Pulsar reader. Node.js apps work well with the reader and do not cause any C++ exceptions.

It's fixed now.


Enable wayland backend

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
~[ ] Reset the build number to 0 (if the version changed)~
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Fixes #61.

We have a wayland package now, and a user request, so might as well.

Darn, still need wayland-protocols.


Make the kubeconfig flag required.

Just warns for now. We could add a "Press a key to continue..." prompt if we think this is important enough.

Thanks @perotinus
cc @csbell @mdelio
@mdelio: Can you lgtm the warning text?

I thought we said we wanted to prompt the user if they used the default kubeconfig?

@G-Harmon Chatted with @nikhiljindal about this offline, and we decided not to do this for now.

awesome, thanks @perotinus
looks great.
@mdelio is going to be so happy with this change :)


[Android] Permission Denied in Model Downloading

🐛 Bug

The app failed to download model config
To Reproduce
Open the app on a device running android 10
Steps to reproduce the behavior:
1.open the app
2.the app will display an error

Error Download model config failed : /storage/emulated/0/Download/e26b7f19-b28e-4029-bea2-fd5719698027 : open failed : EACCES ( Permission denied )
Expected behavior
The app doesn't fail in download and loading the model config

The app runs and function as expected on android 10 without displaying the mentioned error
Environment

Platform (e.g. WebGPU/Vulkan/IOS/Android/CUDA):
android
Operating system (e.g. Ubuntu/Windows/MacOS/...):
Device (e.g. iPhone 12 Pro, PC+RTX 3090, ...)
pocophone f1
How you installed MLC-LLM (conda, source):
prebuilt apk from GitHub
How you installed TVM-Unity (pip, source):
Python version (e.g. 3.10):
GPU driver version (if applicable):
CUDA/cuDNN version (if applicable):
TVM Unity Hash Tag (python -c "import tvm; print('\n'.join(f'{k}: {v}' for k, v in tvm.support.libinfo().items()))", applicable if you compile models):
Any other relevant information:

Additional context
Might be an issue to do with the app permissions

https://github.com/mlc-ai/mlc-llm/pull/1136 might be related

Able to reproduce on Android 10 emulator. Works on Android 13 physical device though. Looking into it


Attachments don't get displayed properly in the messageInput

templates are not scaled down properly in the input


Compare triplets

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

Project coverage is 100.00%. Comparing base (225b6d5) to head (2019b09).

Additional details and impacted files
@@            Coverage Diff            @@
##              main        #8   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            7         8    +1
  Lines           68        79   +11
=========================================
+ Hits            68        79   +11

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


semantic highlighting, coloring unused code differently

Consider the following code, I want to "dim" or use custom coloring on the unreachable or unused code. Couldn't find a way to achieve this with semantic highlighting, the LSP documentation doesn't provide a semantic token specifically for this it seems, or I did not notice it. Is this possible and supported and if so what is the correct way to add this to a custom color scheme?
#if false
// Some code that does not get compiled because it's wrapped within #if false
#endif

This is typically handled through diagnostics with "unnecessary" tag. Does server report relevant diagnostic for that part of the code? If it does then https://lsp.sublimetext.io/customization/#diagnostics has information how to modify color scheme to support that.

They are neither reported as diagnostics nor the coloring works on the tags markup.unnecessary.lsp and markup.deprecated.lsp. It'd be cool if this feature is added, compilation directives are used quite commonly, especially for cross platform work. Would help having the non-compiled code "greyed out".

If not supported right now then it would need to be added in https://github.com/OmniSharp/omnisharp-roslyn. This is just a think wrapper package that makes it easy to use it.

nor the coloring works on the tags markup.unnecessary.lsp and markup.deprecated.lsp

I'm not sure what exactly doesn't work. If server doesn't provide diagnostics with those tags then it will obviously not work. Otherwise it obviously should work if you color scheme is extended accordingly.

nor the coloring works on the tags markup.unnecessary.lsp and markup.deprecated.lsp

I'm not sure what exactly doesn't work. If server doesn't provide diagnostics with those tags then it will obviously not work. Otherwise it obviously should work if your color scheme is extended accordingly.

Adding the little snippet I've mentioned in my first comment does not produce a diagnostic.

Does it work in VSCode?
And also you might want to try to disable this seemingly relevant option: https://github.com/sublimelsp/LSP-OmniSharp/blob/73285c66290afbf2d35b5532fa04ea88cc81c556/LSP-OmniSharp.sublime-settings#L21-L23

It does work in VSCode.
Changing  "csharp.suppressHiddenDiagnostics": true to false did not change the result. Still no diagnostics produced for false resulting compiler directive blocks.

@rchl yes, already did. couldn't get it to work.
#24 is resolved by the latest omnisharp though.

Then it would need to be investigated how VSCode extension does it. Whether through LSP server, syntax file or maybe even some custom code in the extension.

I'm not smart enough to get this whole server to run on my mac so I'm not gonna look into it but if you want to debug a bit then you could post here the response to the textDocument/codeAction request while in a file that should report unnecessary code (and where VSCode does report it).

But after brief look it seems like the server reports code actions with Unnecessary tag for unused imports, for example, but there is also some custom code in the VSCode extension that triggers a custom codeCheck request to the server and maps certain results to diagnostics with Unnecessary tags.
This silly server has so much custom logic in the extension that it almost defeats the purpose of having an LSP server... It would be a full time job to get this mapped to our package.


Yarn in favor of npm

Any plans for using yarn instead of npm? If this is to be implemented in near future I'd be happy to submit a PR for it with updated docs.

Currently, I am using Yarn without any issue.

@laumair - the project is already setup for yarn #1130 should people want to use it for install. As for executing everything with yarn, that forces people to use yarn and it's still a little buggy.

@d3viant0ne Ah, I see. Thanks for the reply back. Awesome boilerplate btw


[CELEBORN-1293] Output received signals at master and worker

What changes were proposed in this pull request?
When we shut down the master or worker, we can output the signal as a record.
Why are the changes needed?
Conveniently track the status of master and workers.
Does this PR introduce any user-facing change?
No
How was this patch tested?
local test
./sbin/stop-all.sh

12:20:59.932 [SIGTERM handler] ERROR org.apache.celeborn.service.deploy.master.Master - RECEIVED SIGNAL TERM

12:20:59.563 [SIGTERM handler] ERROR org.apache.celeborn.service.deploy.worker.Worker - RECEIVED SIGNAL TERM

@cxzl25 This pr might make no difference. Check out the celeborn-daemon.sh, you'll find that the signal is SIGTERM always.

Check out the celeborn-daemon.sh, you'll find that the signal is SIGTERM always.

Thank you for pointing out that if we use a script kill will always be SIGTERM, but sometimes the process will receive different signals, or restart multiple times and output the same log file, so that we can know the time of each stop.
https://github.com/apache/incubator-celeborn/blob/4e64ae32145290083fedb9083b91e51fcc5efc13/sbin/celeborn-daemon.sh#L177

Check out the celeborn-daemon.sh, you'll find that the signal is SIGTERM always.

Thank you for pointing out that if we use a script kill will always be SIGTERM, but sometimes the process will receive different signals, or restart multiple times and output the same log file, so that we can know the time of each stop.
https://github.com/apache/incubator-celeborn/blob/4e64ae32145290083fedb9083b91e51fcc5efc13/sbin/celeborn-daemon.sh#L177

Sounds reasonable.


Problem configuring Spotify: certificate verify failed: unable to get issuer certificate

When I try to authorize Spotipy (through Home Assistant, which uses spotipy), I authorize with Spotify, but it fails when returning.  The log is:
2018-10-22 15:02:36 INFO (MainThread) [homeassistant.components.http.view] Serving /api/spotify to <IP_ADDRESS> (auth: True)
2018-10-22 15:02:36 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 344, in connect
    ssl_context=context)
  File "/usr/local/lib/python3.7/site-packages/urllib3/util/ssl_.py", line 342, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 412, in wrap_socket
    session=session
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 850, in _create
    self.do_handshake()
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 1108, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:1045)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/local/lib/python3.7/site-packages/urllib3/util/retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='accounts.spotify.com', port=443): Max retries exceeded with url: /api/token (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:1045)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/aiohttp/web_protocol.py", line 390, in start
    resp = await self._request_handler(request)
  File "/usr/local/lib/python3.7/site-packages/aiohttp/web_app.py", line 366, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.7/site-packages/aiohttp/web_middlewares.py", line 106, in impl
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/static.py", line 66, in staticresource_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/real_ip.py", line 34, in real_ip_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/ban.py", line 66, in ban_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/auth.py", line 68, in auth_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/real_ip.py", line 34, in real_ip_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/ban.py", line 66, in ban_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/auth.py", line 68, in auth_middleware
    return await handler(request)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/http/view.py", line 110, in handle
    result = handler(request, **request.match_info)
  File "/usr/local/lib/python3.7/site-packages/homeassistant/components/media_player/spotify.py", line 118, in get
    self.oauth.get_access_token(request.query['code'])
  File "/Users/henrik/.homeassistant/deps/lib/python/site-packages/spotipy/oauth2.py", line 216, in get_access_token
    headers=headers, verify=True, proxies=self.proxies)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 524, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 637, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='accounts.spotify.com', port=443): Max retries exceeded with url: /api/token (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:1045)')))

I have tried adding the certificate from accounts.spotify.com into a cacerts.pem bundle and starting hass with REQUESTS_CA_BUNDLE=$HOME/.homeassistant/cacerts.pem hass.  This doesn't help.
I have also verified that certifi is installed...
I'm running this on macOs 10.4 Mojave.  Spotipy 2.4.4 installed with pip3.

I'd be curious whether this is still a problem.
There are also many solutions/workarounds posted on here:
https://stackoverflow.com/questions/27835619/urllib-and-ssl-certificate-verify-failed-error
Does it help?


Introduce a ruletype state field in the minder proto

Summary
The following PR introduces a new field to the ruletype proto message called state.
It also includes a custom marshal/unmarshal handling so we fail if we try to unmarshal the field with a value that is not one of the enums.
Fixes #4241
Change Type
Mark the type of change your PR introduces:

[ ] Bug fix (resolves an issue without affecting existing features)
[x] Feature (adds new functionality without breaking changes)
[ ] Breaking change (may impact existing functionalities or require documentation updates)
[ ] Documentation (updates or additions to documentation)
[ ] Refactoring or test improvements (no bug fixes or new functionality)

Testing
Outline how the changes were tested, including steps to reproduce and any relevant configurations.
Attach screenshots if helpful.
Review Checklist:

[x] Reviewed my own code for quality and clarity.
[ ] Added comments to complex or tricky code sections.
[ ] Updated any affected documentation.
[ ] Included tests that validate the fix or feature.
[ ] Checked that related changes are merged.

coverage: 53.703%. remained the same
when pulling 89d288ca0e1af5dbe3242e63c922f59e0e8d9ce1 on add-state
into 0cbe5ab270b7d3510677488c81904e9a0942a0c1 on main.

Ran the smoke tests locally using the PR from - https://github.com/stacklok/minder-rules-and-profiles/pull/145 and they passed.


Request: easy way to get resulting image name

After
nix run .#dockerImage.copyToDockerDaemon

I want to run the image - I found this hacky way:
docker run (nix eval --impure --expr '(builtins.getFlake (toString ./.)).outputs.packages.x86_64-linux.dockerImage.imageRefUnsafe' --json | jq -r)

Could there be a simpler way? (or is there already?)
e.g. nix run .#dockerImage.printImageRef :tipping_hand_man:

I adapted my taskfile to just print the image ref to ./result - so I can
docker run $(cat result)

But I guess that doesn't quite fit a nix run cli :thinking: (and nix2container isn't really meant for nix build, is it?)

Found that I can set:
nix2container.buildImage {
  tag = "latest";

is this good practice? Not sure what other gotchas this might have :thinking:


Marious davis

Description
Built out the configurable now.json file that instructs Now how to handle app in the build phase. Also included now-build script that will specify what command Now will run to build the app.
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Change status

[x] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[ ] Incomplete/work-in-progress, PR is for discussion/feedback

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] My code has been reviewed by at least one peer
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] There are no merge conflicts

 Deploy Front End

 add now.json file to the front-end repo for deployment

 Included now-build script to package.json that will specify what command Now will run to build app in cloud


Non-PMID IDs in PMID field of literature/matches data

Describe the bug
There are rows that contain non-PMID IDs in the PMID field of the literature/matches data.
Observed behaviour
Specifically, there are IDs with the following prefixes (and what I suspect they mean):

PMC - PMC IDs
PPR - pre-prints
IND - investigational new drug

In a single parquet file (used in the reprex below) from the literature/matches data ~1.5% of distinct PMIDs have a non-PMID ID.
Expected behaviour
I believe the PMID field should only contain integer values corresponding to true PMIDs.
To Reproduce
from pyspark.sql import SparkSession, functions as F

!gsutil -u <project-name> cp \
    gs://open-targets-data-releases/24.03/output/etl/parquet/literature/matches/part-00003-ce7bd6be-7ab2-44aa-ae3f-53e0640fd1b9-c000.snappy.parquet \
    /tmp/

spark = SparkSession.builder.appName("test").getOrCreate()
sdf = spark.read.parquet("/tmp/part-00003-ce7bd6be-7ab2-44aa-ae3f-53e0640fd1b9-c000.snappy.parquet")
(
    sdf.select("PMID").distinct().withColumn(
        "has_non_pmid_id",
        F.when(F.col("PMID").rlike("[A-Za-z]"), 1).otherwise(0)
    )
    .select(
        100 * F.mean("has_non_pmid_id").alias("pct_non_pmid_ids"),
        F.count("has_non_pmid_id").alias("num_non_pmid_ids")
    ).show()
)
sdf.filter(F.col("PMID").rlike("[A-z]")).show()

Additional context
I've used a single file in the above reprex; however, this issue persists across all data corresponding to literature/matches with ~2.6% of PMIDs containing a non PMID.

I agree it's confusing. The background is that EuropePMC uses all these identifiers internally and they don't necessarily make a separation depending on the corpus they come from. All IDs are treated the same
Some options that come to mind:

Rename the pmid field to something more generic like documentId.
Separate the ids into different fields
Create a more complex object with id and source

We need to think about this and also about the downstream consequences.

Rename the pmid field to something more generic like documentId.

That sounds prudent since documents can be things other than PubMed records. If backwards compatability is needed, could always keep true pubmed IDs in pmid and use documentId for the mixed source IDs.

Create a more complex object with id and source

I wonder if its possible to keep as a single field but adopt CURIEs as per https://bioregistry.io/ or https://identifiers.org/ prefixes. @nicklamiller can you provide an example of each type of identifier?
Specifically are PPR and IND records singular databases? And if so which ones?

Or possible EuropePMC has a source type that can be combined with the identifier for less ambiguous identification. I can't quite find EuropePMC docs on the different identifier/document types

@d0choa thank you for the prompt reply and @dhimmel thanks for the helpful links. A couple example ID's:

PPR138073

according to bioregistry, the PPR prefix can come from several preprint servers e.g. bioRxiv, ChemRxiv

IND607760035 (not actually finding ID here, just used title to find paper)

I'm not finding a database/source that IND denotes on either https://bioregistry.io/ or https://identifiers.org/

keep as a single field but adopt CURIEs

That plus SRC:PPR formatting (if possible) sound like a great approach.


Devcon orientation documentation (One page)

Handover document to devcon, it should contain.

Link and explanation to the two examples
Link and explanation to the attestation library and demo DAO contract that uses it
Link to link generator, how to configure key and use it
Link to npm package that is used in the examples

TODO Nick - Understand how the link generator will be provided for this demo. Thread for conversation inside Discord, Attestation channel.

@AW-STJ - for this item, Link to link generator, how to configure key and use it
I am not across this item, who would be best to gather some documentation for this?

@JamesSmartCell - would you be able to help provide some details around this that I can append to the devcon readme.
Link and explanation to the attestation library and demo DAO contract that uses it


[Bug] [Signposting] Application erroring out if an action is bound to a nested widget property

Description
During signposting, If user binds an action.run to onClick of table column button. application is erroring out with message unable to access indexOf of undefined.
Steps to reproduce the behaviour:

During First time user onboarding flow, Add a table with button column.
Bind an action to one of the button.
observe application getting errored out.

Important Details

Version: [Cloud / Self-Hosted vx.x]
OS: [e.g.MacOSX]
Browser [e.g. chrome, safari]
Environment [production, release, deploy preview]

https://www.loom.com/share/27d580cc896d4617a4812f7e4bb722d1

verified on release

@sbalaji1192 seems like this issue occurred again. Is this in master?

This sentry issue is stale one that  got logged on sep 22nd. We merged the fix to master on 23rd. This has been marked resolved on the sentry already.


PhpdocToParamTypeFixer - Introduction

like #4054 add PhpdocToParamTypeFixer
but from master to master
Finishes #3258

Are there any objections or can it be merged?

any open tasks or comments for me?

I updated a fix for stop searching the param variable with the last token.
I tested the fixer with several projects and everything was working fine.
Can somebody merge the request please?

Patience my friend, so far, only 1 contributor (me) has looked at your code, no actual maintainers seem to have taken interest yet.

@julienfalque :
you are right, i added the changes regarding your comments

tl;dr;
I use TypeHintDeclarationSniff that does the same job for many years.
But it works only with local scope and thus is buggy in cases with parent class or interfaces:
3rd party code
<?php

interface Sniff
{
    /**
     * @param int $position
     */
    public function proces(File $file, $position);
}

My code "fixed":
 <?php

 final class MySniff implements Sniff
 {
     /**
      * @param int $position
      */
-    public function proces(File $file, $position)
+    public function proces(File $file, int $position)
     {
     }
 }

Does this fixer deals with that?

Hi @TomasVotruba :
The fixer would fix the interface and the class seperatly.
The fixer itself does not look for a parent class or interface method and compare the new output.
In general fixers are called by file, there is no option to "lookup" for the parent class.
I think this cannot be done by the fixer alone, this is a designchange of the php-cs-fixer.
The only quick possible solution I can think of, is an option to add namespaces like "\3rdParty"
and if an file uses this namespace, it will be ignored.
But automatic lookup by the fixer itself is not possible in this structure.
Greetings Jan

Hi @jg-development, thanks for the answer. So it will break the code in such case?

yes it does

This PR is looking pretty good but the fixer seems to have a lot of code from PhpdocToReturnTypeFixer. Wouldn't it be better to refactor those fixers to avoid duplicating the code?

@TomasVotruba :
Some kinds of param can be done, but not something like this:
Foo[][]
The problem is the DocBlock\Annotation Class. The regex for content and types is not ready for such cases.

Why not extend it? Foo[][] is pretty clear

possible, but in my feeling not part of this story/task. another issue with extending the annotation class to return the correct types and this can be done.
And I think there could be some other fixers, that could use the change, too.
Personally, than I would change the fixer to identify all types and generate the annotation from the result. Like $hasNull + $hasIterable = ?array and so on.

Well, then null|Foo[] → ?array is already supported,
I'd expect null|Foo[][] → ?array to work as well.
But I understand you want to merge this huge PR and this might be changed on @return as well, thus scope for another PR.

Ok, I did a refactor of the fixer and modified the annotation class for multiple array annotations.
This had an impact on the phpdoctoreturntypefixer as well (imho positive).
New covered use cases are:
            'nullable and mixed types of arrays' => [
                '<?php /** @param null|Foo[]|Bar[] $foo */ function my_foo(?array $foo) {}',
                '<?php /** @param null|Foo[]|Bar[] $foo */ function my_foo($foo) {}',
                70100,
            ],
            'nullable and array and array of types' => [
                '<?php /** @param null|Foo[]|array $foo */ function my_foo(?array $foo) {}',
                '<?php /** @param null|Foo[]|array $foo */ function my_foo($foo) {}',
                70100,
            ],
            'nullable array of array of types' => [
                '<?php /** @param null|Foo[][] $foo */ function my_foo(?array $foo) {}',
                '<?php /** @param null|Foo[][] $foo */ function my_foo($foo) {}',
                70100,
            ],
            'array and iterable param' => [
                '<?php /** @param Foo[]|iterable $foo */ function my_foo(array $foo) {}',
                '<?php /** @param Foo[]|iterable $foo */ function my_foo($foo) {}',
                70100,
            ],

@jg-development Amazing work :clap:

ok ... was not aware that switch case is not allowed .... using kind of polymorphism now

@SpacePossum
Is there anything still todo from my side or does the merge just takes some time/timing?
Greetings Jan

@jg-development what about this comment?

Can somebody give me an update for this.... waiting for approval about 1 1/2 month now

Sorry for the long wait, we are trying to catch up
(@julienfalque  maybe you can review again?)

hi,
any updates on this pull?

Hi @julienfalque ,
I did the changes as requested/reviewed.

any updates? all changes are made

seriously guys ... i am doing this for over 6 months now.
approved nearly two month, but everytime I has to recheck, rebase or migrate to new standards.
I am getting tired of this ... will this anytime merged or should we just reject this?

ok ... removed all the merge commits ... rebased and updated the branch.
can this be merged? it was approved by @TomasVotruba and all is green.

I'm only contributor here, but it would be nice not to keep PRs rotten

+1 for merging plz

Hello @julienfalque
Symfony community would greatly benefit from this fixer as it's moving towards type hinted source code like you can see here:

https://github.com/symfony/symfony/pull/33154
https://github.com/symfony/symfony/issues/32179

Is there anything we could do to make the final push here ?
Thanks everyone for your hard work in order to make it happen.
/cc @derrabus @nicolas-grekas

@tigitz
thx for the support ... I am trying it for month now, but no reaction.
I am currently using the fixer in our company without any problems

@jg-development thanks for your work, hopefully a new dynamic with Symfony community support behind will help move things forward here. I'm sure maintainers would love to take care of this feature when they'll find the right moment for them :slightly_smiling_face:
Meanwhile, I've tried your fixer on symfony codebase and here's a test case that fails:

            'union type containing a scalar' => [
                '<?php /** @param int|stdClass $bar */ function my_foo($bar) {}',
            ],

It generates function my_foo(intstdClass$bar).
Seems like union types containing at least 1 scalar fails to be properly fix.

@tigitz
wow ... an int OR a stdClass as a param .... never thought of THAT ;-)

@jg-development haha I understand your surprise but it's actually a dummy example to show that every union type having at least a single scalar fails, like the more "real life" example of string|array

@tigitz
ok I added a change for multiple types exept nullable and iterable plus array.
plz recheck maybe I forgot something.

Some ideas, I didn't check how they work now:
array|\Traversable => iterable
Foo[] => array
array|Foo[] => array
iterable|Foo[] => iterable
iterable<Foo> => iterable
array<Foo> => iterable
all these rules except the first should keep the annotation in place to not remove useful info

array|\Traversable => iterable ==> now supported
Foo[] => array ==> already works
array|Foo[] => array ==>  now supported
iterable|Foo[] => iterable ==> now supported
iterable => iterable ==> not supported
array => array ==> not supported
Currently the generics are not supported. You can ad a pull request to it, if you want to.

Thanks @jg-development !
Another small failing test case:

@tigitz
that is true. I have no coice to count the number of different param types here.
I added the commit and the test given by you.

Great !
Last one I can infer from my tests of your fixer on symfony code base:
'reference symbol' => [
                '<?php /** @param array $bar */ function my_foo(array &$bar) {}',
                '<?php /** @param array $bar */ function my_foo(&$bar) {}',
            ],
            'reference symbol in php doc' => [
                '<?php /** @param array &$bar */ function my_foo(array &$bar) {}',
                '<?php /** @param array &$bar */ function my_foo(&$bar) {}',
            ],

Gives respectively:
--- Expected
+++ Actual
@@ @@
-'<?php /** @param array &$bar */ function my_foo(array &$bar) {}'
+'<?php /** @param array &$bar */ function my_foo(&$bar) {}'

--- Expected
+++ Actual
@@ @@
-'<?php /** @param array $bar */ function my_foo(array &$bar) {}'
+'<?php /** @param array $bar */ function my_foo(&array $bar) {}'

It should be :ok_hand: after that

@tigitz
Not a nice solution in the commit, but it works

You're going to hate me :stuck_out_tongue: , here's 3 new failing cases:
'scalar type and array of same scalar type' => [
                '<?php /** @param string|string[] $bar */ function my_foo($bar) {}',
            ],
            'scalar type and array' => [
                '<?php /** @param string|array $bar */ function my_foo($bar) {}',
            ],
            'union type containing null and non scalar type' => [
                '<?php /** @param string|Transition|null $bar */ function my_foo($bar) {}',
            ],

Again, thanks for your work, we're getting closer :wink:

@tigitz
ok last one was a bit tricky but I commited it

Found another failing one:
'non scalar type or array' => [
                '<?php /** @param array|InputDefinition $bar */ function my_foo($bar) {}',
            ],

--- Expected
+++ Actual
@@ @@
-'<?php /** @param array|InputDefinition $bar */ function my_foo($bar) {}'
+'<?php /** @param array|InputDefinition $bar */ function my_foo(arrayInputDefinition $bar) {}'

@tigitz
fixed this too

Great, now onto variadics :slightly_smiling_face:
There's different way to express them through phpdoc, most standards (PSR5 and phpDocumentator) don't take them into accounts. However PHPStorm has a faire range of support as documented here: https://stackoverflow.com/a/53804818 so I think it would be really beneficial to add a preliminary support at least.
Here are two minimal cases:
'variadic param type dot notation' => [
                '<?php /** @param string ...$bar */ function my_foo(string ...$bar) {}',
                '<?php /** @param string ...$bar */ function my_foo(...$bar) {}',
            ],
            'variadic param type array notation' => [
                '<?php /** @param string[] $bar */ function my_foo(string ...$bar) {}',
                '<?php /** @param string[] $bar */ function my_foo(...$bar) {}',
            ],

I guess there could be some edge cases in combination with & and array|\Traversable ...$bar but I would suggest to restrain from going to deep for this first version

@tigitz
is the second example correct?
@param string[] $bar => string ...$bar
shouldnt that be array ...$bar

I think we are coming to the point, that this fixer should finally be merged.
The superspecial features shouldn´t be part of the initial fixer.
Can this be merged now?

@tigitz
is the second example correct?
@param string[] $bar => string ...$bar
shouldnt that be array ...$bar

Yes you're totally right, my mistake comes from my previous reasoning:
<?php

/** @var string[] $strings **/
$strings = ['foo','bar'];

function stringTyped(string ...$strings) {};
function arrayTyped(array ...$strings){};

stringTyped($strings); // KO
stringTyped(...$strings); // OK
arrayTyped($strings); // OK

On the expected input->output of this fixer it LGTM :+1:
One thing to note or maybe warn users from is, people tend to document a narrower type than what the real implementation allows:
class Foo extends \ArrayAccess {
    /**
     * @param string $name
     */
    public function offsetGet($name){}
}

So the fixer will output :
class Foo extends \ArrayAccess {
    /**
     * @param string $name
     */
    public function offsetGet(string $name){ }
}

Which breaks declaration compatibility with ArrayAccess::offsetGet($offset)
Symfony code base "suffers" from this in some places but it's a matter of "should the doc be the strict reflection of what PHP runtime would allow ? or should it be what would the programmer expects as a type when he designed its signature".
In the case of the latter, obviously doing a straight forward translation from doc to type the same way this fixer is doing will lead to problems like highlighted above.

ok guys .... this is waiting about a year now.
can this PLEASEEEEEE be merged into master?

@jg-development Please be patient, merging this PR requires more review from PHP CS Fixer team. This is done on free time and we do not always have enough. I do want this to be merged as much as you do, and I'm pretty sure it will be done at some point :)

    /**
     * @param string $locale
     * @param null   $style
     * @param null   $pattern
     *
     * @return \NumberFormatter
     */
    abstract protected function getNumberFormatter($locale = 'en', $style = null, $pattern = null);

gets fixed to
    /**
     * @param string $locale
     * @param null   $style
     * @param null   $pattern
     *
     * @return \NumberFormatter
     */
    abstract protected function getNumberFormatter(string $locale = 'en', ? $style = null, ? $pattern = null);

    /**
     * Sorts files and directories by name.
     *
     * This can be slow as all the matching files and directories must be retrieved for comparison.
     *
     * @param bool $useNaturalSort Whether to use natural sort or not, disabled by default
     *
     * @return $this
     *
     * @see SortableIterator
     */
    public function sortByName(/* bool $useNaturalSort = false */)
    {
        $useNaturalSort = 0 < func_num_args() && func_get_arg(0);

        $this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME;

        return $this;
    }

to
    /**
     * Sorts files and directories by name.
     *
     * This can be slow as all the matching files and directories must be retrieved for comparison.
     *
     * @param bool $useNaturalSort Whether to use natural sort or not, disabled by default
     *
     * @return $this
     *
     * @see SortableIterator
     */
    public function sortByName(/* bool $useNaturalSort = false */)
    {
        bool $useNaturalSort = 0 < func_num_args() && func_get_arg(0);

        $this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME;

        return $this;
    }

@ see https://github.com/symfony/symfony/blob/4.4/src/Symfony/Component/Finder/Finder.php#L441

I think the two cases that cause lint errors can be prevented and patched in this PR, can you work on this @jg-development ? Looking very promising so would like to wrap up these two cases and merge this as experimental feature :)

@SpacePossum
Hi,
I added to tests for your requirements and fixed it.
see https://github.com/jg-development/PHP-CS-Fixer/commit/7aa35177015891afe8a4a3e8f54fbefca4be716d
Greetings Jan

Thanks for the fast fix!
May I bother you to ask for a rebase and squash to one commit, I know this isn't what we typically do during review (or even ask not do :blush: ), but since I think this is close to merging it would help me a lot to see one clean commit on the lasted of master here.

@SpacePossum
what do you exactly mean? all my commits squash into to one commit?

@SpacePossum
finally all in one commit

@SpacePossum
ok .... the diff now looks good. ready to merge

it seems I can push the squashed commit back to your master, so I'll merging using;
https://github.com/FriendsOfPHP/PHP-CS-Fixer/pull/4583
you are still the author of the commit

Thanks @jg-development for all the work and patience, great to have this :D


staging-wifi-12512-support-eap104-ethernet-phy-check

for https://telecominfraproject.atlassian.net/browse/WIFI-12512

@tanyasingh-ec please enhance the commit message to explain that the tool does and why it is needed


Mouse teleporting

Hyprland Version
v0.29.1-33-g66482747
Bug or Regression?
Bug
Description
Mouse is teleporting on blender when trying to pull a menu
How to reproduce
Open blender (flatpak) and drag a menu to merge it
Crash reports, logs, images, videos
No response

https://github.com/hyprwm/Hyprland/assets/31055847/8133be2d-1e8e-4c22-9b50-e27ac63e812d

suspicious version, can you try updating to the latest git?

patch.txt
would you please be so kind to attempt at verifying whether this software patch fixes the aforementioned issue?

Hello,
I just wanted to add my experience as well. Me too since yesterday I am facing a similar problem on Blender. When I click on anything on Shader Editor window or properties panel or when I try to add or remove workspace, my mouse jumps to the top left corner. I tried it both with:

Blender 3.6 LTS downloaded from the Blender web site
Flatpak Blender 3.6
Blender 4.0 alpha

And the problem happens on all of them. I have this problem on both of my laptops running endevouros and hyprland:

Lenovo Legion 7 with AMD Ryzen 5800H CPU and Nvidia RTX Gpu
Lenovo Yoga Slim 7 Pro with AMD Ryzen 6800HS Cpu and integrated AMD Gpu

I have downloaded the path.txt file but I am still a Linux noob on these stuff ( 8 months of using Linux ) so I wouldn't know how to apply it to report back. Should I run those on terminal? Should I run it like a script by making it executable witch sudo chmod +x ?

google is your friend

I had a similar issue (GuildWars2 running through steam/proton) would move the mouse randomly to top left screen after latest updates.
I applied this patch and it has helped a little, but now the mouse moves to center of the screen (like in the video by OP) instead of top left. But at least when it does it I don't constantly open up the menu over and over

that... should not be the behavior of the patch.

I was experiencing this same issue with another application, Looking Glass (a sort of remote viewer for Windows VMs).
On the latest release (0.29.1) the cursor would teleport to 0x0 of the monitor whenever it exited the viewing area. On master it would either fail to escape at all or be teleported back to center.
But I'm happy to report that after building with the patch linked above the mouse seems to be behaving as expected and the issue is now resolved (for me).

pushed the patch, I consider this closed


Long shot: create client for Andoid and iOS

I know this is not a bug and perhaps a long shot but it would really help to further promote this tool if a client is available for Android and iOS.
All the other slack wannabe's have it and I must say that the browser on my phone is not ideal - it works but logging in does not work 100% => whenever I fill in my credentials and press Login, the screen is enlarged where I pressed and then I have to press login again.
An app which stores some specific settings and have Android/iOS notification would definitely be much more appealing to must people and again; if this should be the BYOS slack killer: all other cloud groupchat apps have an app ;)

Someone is actually working on an Android application right now, though it's probably more likely that you would use an existing XMPP / Jabber client to connect to LCB.

An xmpp client is not the same but I hope a native lets-chat app will arise
soon.
Can I follow its progress somewhere?
Sent with AquaMail for Android
http://www.aqua-mail.com
On 25 maart 2015 20:44:57 Ramanan Sivaranjan<EMAIL_ADDRESS>wrote:

Someone is actually working on an Android application right now, though
it's probably more likely that you would use an existing XMPP / Jabber
client to connect to LCB.

Reply to this email directly or view it on GitHub:
https://github.com/sdelements/lets-chat/issues/374#issuecomment-86188487

@chiel1980 we would love mobile clients as well, but it's basically work someone else can probably do external to us. The APIs to talk to the server are well documented.

Native mobile Lets Chat :+1:
Someone else writing it :+1:
@chiel1980 Thanks for the idea - I am going to close this issue (The implementation would have to live in another repo even if we were going to do it anyways)


lookup function to get pre-declared dimvars anywhere

Avoid carrying dim vars in config dictionary. Just look them up wherever needed by name.
update size of dim vars.

Added get_dim_vars in 2c57d9cd7bf9f1841a3b04a83546b512b57a186b.


Allow to retrieve nodes without dgraph.type values

Currently, only data from nodes with dgraph.type set can be retrieved. This can be improved in the following ways:

[ ] seed predicate
[x] predicate partitioning
[x] better Dgraph query

Seed predicate
The dgraph.type predicate is used as a seed to find all existing nodes, assuming all nodes have this predicate defined. If a graph as a different predicate assigned to all nodes, than that other predicate could be used as a seed.
Predicate partitioning
With a predicate partitioner #3, #22 we can retrieve all nodes that have the given predicates. This allows to retrieve the entire graph given the list of all existing predicates (or a subset due to projection).
Ask Dgraph devs
Ask for alternative ways to query for all existing nodes.

Predicate partitioning proved to be a good solution, not going for the seed predicate.


Add Dokeop provider

Hi
Thanks for your fantastic client !
I wrote a provider for my service named Dokeop

Just a tiny note:
There's no need to use League as the root namespace for your package. In fact, it's best to use your own, in case there were ever conflicts in the future, like if The PHP League decided to provide its own League\OAuth2\Client\Provider\Dokeop (we won't, but this is an example).

I agree for the namespace, I've just made a release with my root namespace.


SW-5797: Missing table columns for application console

This PR includes changes to add missing table columns & filters to the applications table on the console side.
Tasks

[ ] Populate Country column with data

Screenshots
Before

After

Circling back to this PR, @tommylau523 do you have bandwidth available to add countryCode to the ApplicationPayload?

Circling back to this PR, @tommylau523 do you have bandwidth available to add countryCode to the ApplicationPayload?

Missed this! I will add it today!

@tommylau523 can you also add type to ApplicationPayload? I added it client-side to ApplicationRow but then searching/sorting doesn't work correctly in the table because it happens prior to the client-side data changes.

@joshbuchea For the type, we can do some FE parsing for that. Essentially, they are by status and I think only "Not Submitted" and "Failed Pre-screen" will be in the Pre-screen types.
I think it is worth checking with product folks to see if we should remove it. Since applications in "Not Submitted" are not even supposed to show up on this table. It doesn't really make sense to me to have a column and filter that just checks if a status is equal to one option.

@joshbuchea @tommylau523 Based on the above information, if it was up to me, I would say, remove the Type column and filter from the Applications table.

@jenniferyimTF posted my comment before I noticed yours, I'll go ahead and remove the Type column & filter. Thanks for following up here in GitHub 🙌


[Bug]: Umami Analytics is shown as unhealthy

Description
The umami service is shown as unhealthy.
Minimal Reproduction (if possible, example repository)
https://github.com/coollabsio/coolify/blob/467c826c04df3fe4b93f5465a8f1238c23cf603a/templates/compose/umami.yaml#L7-L30
This is the standard tempalte I deployed. The umami service is missing a healthcheck. I added it like this in the compose file:
   healthcheck:
      test:
        - CMD-SHELL
        - 'curl https://umami.wulf-industries.com/api/heartbeat'

I would have contributed a fix for this as a PR but I don't know how it works with the URL (where is it defined etc.).
Exception or Error
No response
Version
v4.0.0-beta.239

Thanks, I've updated the one-click service with the healthcheck url!


Define (typedef) simsimd_f16_t even when SIMSIMD_NATIVE_F16 is passed in externally

E.g., USearch depends on this behaviour and expects simsimd to define
simsimd_f16_t when passing in SIMSIMD_NATIVE_F16=1 1
So far this had not caused issues because either USEARCH_USE_FP16LIB was set to true or (in benchmarks) simsimd.h was included directly, which resulted in this logic in simsimd being evaluated before compilation got to index_plugins.hpp#L50.

:tada: This PR is included in version 3.7.5 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


CIRCLE-9621: Test Results Service Should Parse .junit files as if they are .xml

Looks like it worked! :tada:


Proposed rule to avoid wrapping nil error.

As per discussion on https://github.com/thanos-io/thanos/pull/2621/files#r427146885
Signed-off-by: Bartlomiej Plotka<EMAIL_ADDRESS>

I'm very torn on these. The first time I saw the errors.Wrap function used I was also kind of surprised, but once you know it, it's actually a nice tool to write precise and short code that clearly describes the error path. I mean .. these APIs handle these cases in that way intentionally.
I won't block this but I personally prefer to use these APIs to their full extend.

yup @brancz I only want to start discussion. Let's not merge until we all are happy.

BTW @brancz we were thinking about writing our own error pkg. In this project I was thinking to literally return error on nil. That's why the whole discussion.
This will make sure we don't panic: https://github.com/thanos-io/thanos/pull/2630

Another argument I should put maybe to the list that nil comparison is hard. Sometimes you have variable not equal to nil but to Type(nil).. etc

I don't have a strong opinion on this.
I personally find easier to read an explicit if err != nil (like this proposal outlines) but I also agree with @brancz that once you get used to the fact that wrappers handle nil error, then it's pretty convenient to use.

Just for you to be aware I broke my own rule in Prometheus and could not stop writing:
if err != nil {
			merr := tsdb_errors.MultiError{err}
			merr.Add(primary.Close())
			for _, q := range secondaries {
				merr.Add(q.Close())
			}
			return nil, merr.Err()
		}

:smiley: I think I will definitely lose the rule for MultiTSDB I like it. But I would still keep this rule for Wraps (:

I see it the other way around :upside_down_face:


rx_bloc example

An example that shows how the todo app can be build with https://pub.dev/packages/rx_bloc

The work on this sample has been  already started.
https://github.com/Prime-Holding/flutter_architecture_samples/tree/rx-bloc-library/rx_bloc_library/lib


URL is validated as true if contains brackets or apostrophe signs

Hello,
I am not sure if this is the desired behaviour so I just wanted to check with you. We have had an issue that came up where we wanted to fix a valid cross-site scripting vulnerability in our web application code where the following malicious code – including apostrophe (') and a round bracket sign ( ) )– was injected:
https://example.org?q=search');alert(document.domain);
But when tried to use the validators.url() function it accepts the above as True :
>>> validators.url("https://example.org?q=search');alert(document.domain);")
True

Apparently this should not happen. The desired behaviour of the url() routine is would be False in this case. Do I overlook something or is the above accepted? Let me know if I am missing something or you need further information. My version of validators is 0.23.2 on Python 3.9.6 .
Thank you,
Miklos

Hey, thanks for bringing this up. Internally validators.url() uses Python's urllib.parse.parse_qs function. The behavior of parse_qs changed in Python 3.9.2. See for yourself:
Python 3.9.1 (default, Mar 21 2024, 06:40:47)
[GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from urllib.parse import parse_qs
>>> parse_qs("q=search');alert(document.domain);", strict_parsing=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ...
  raise ValueError("bad query field: %r" % (name_value,))
ValueError: bad query field: 'alert(document.domain)'

Python 3.9.2 (default, Mar 21 2024, 06:39:21)
[GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from urllib.parse import parse_qs
>>> parse_qs("q=search');alert(document.domain);", strict_parsing=True)
{'q': ["search');alert(document.domain);"]}

If you can tell me why, I may be able to resolve it.

Ah OK thanks. Leave it then to upstream if this gets their way and they will probably fix it.


[Bug]: langchain, postgresql and pgvector looks up answer using distance, not id - always returns None

When using gptcache w/ langchain, postgresql and pgvector. I'm running into an issue where the correct answer is being found, but the search in the data manager is looking up the data by the distance (0.0) instead of looking up the id.
def init_gptcache(cache_obj: Cache, llm: str):
    hashed_llm = get_hashed_name(llm)
    onnx = Onnx()
    cache_base = CacheBase("postgresql", sql_url=settings.DATABASE_URL)
    vector_base = VectorBase(
        "pgvector",
        url=settings.DATABASE_URL,
        collection_name="gptcache_" + hashed_llm,
        dimension=onnx.dimension,
    )
    data_manager = get_data_manager(cache_base, vector_base)
    init_similar_cache(
        cache_obj=cache_obj,
        data_manager=data_manager,
        pre_func=get_input,
        embedding=onnx,
    )

langchain.llm_cache = GPTCache(init_gptcache)

res_data is passed into the data managers get_scalar_data as a <class 'sqlalchemy.engine.row.Row'> containing:
(<gptcache.manager.vector_data.pgvector._get_model_and_index.<locals>.VectorStoreTable object at 0x7f917a4f2ce0>, 0.0)
get_scalar_data uses res_data[1] which is representing the added distances column value from the previous search_data step in the adapter, not the id.
cache_data = self.s.get_data_by_id(res_data[1[)
https://github.com/zilliztech/GPTCache/blob/8f7d36a97ca5cd55930a73323ea67c6fbd607e4f/gptcache/manager/data_manager.py#L341C56-L341C56
A simple fix that shows the correct answer in my debugger is:
cache_data = self.s.get_data_by_id(res_data[0].id)
but I imagine this has additional impacts so likely there is something that needs to be done with the search function for pgvector
UPDATE:
Taking a quick look, I can see faiss returns return list(zip(dist[0], ids)) from its search function, which makes sense whereas the pgvector search function doesn't quite lineup. Likely just an edit here is needed to match up the formats
with self._session() as session:
    session.execute(text(f"SET LOCAL ivfflat.probes = {self.index_params['params']['probes'] or 10};"))
    search_result = self._query(session).add_columns(
        similarity.label("distances")
    ).order_by(
        similarity
    ).limit(top_k).all()

return search_result

https://github.com/zilliztech/GPTCache/blob/8f7d36a97ca5cd55930a73323ea67c6fbd607e4f/gptcache/manager/vector_data/pgvector.py#L145

@RayceRossum Thanks your feedback. And i will try to fix it

@RayceRossum the 0.1.39 has been released, and you can try it. Looking forward to your feedback.

@SimFG, this is still broken. I believe it is backwards. id should be res_data[1], right now you have res_data[0] as the id.
            ).order_by(
                similarity
            ).limit(top_k).all()
            search_result = [(r[0].id, r[1]) for r in search_result]

        return search_result

I've tested this on my end and lookup seems to be working correctly aside from now running into this issue with langchain generating Generation instead of ChatGeneration when using GPTCache and then putting those Generations into a ChatResult when it should be using ChatGenerations into a ChatResult.
https://github.com/langchain-ai/langchain/pull/8603

@RayceRossum I'm so sorry. It was my carelessness.

@RayceRossum I have fixed it. Thanks your feedback, and i will close the issue.


Pls

Username or password send me pls 😔

Check the code... It's looking for :
Username: hacker
Password: wasii


Fail to compare servers by manufacturer_id

I need to create a query to compare which servers have high temperature, but only HP servers.
For instance:
If it is HP the temperature should NOT be higher than 40.
If it is Supermicro, it should not be higher than 50.
(ipmi_bmc_info{manufacturer_id="Hewlett-Packard (11)",job="ipmi"} == 1) and (ipmi_temperature_celsius{name="02-CPU 1",job="ipmi"} > 40)
I created a query, but it does not work. I would appreciate to know if it is a bug or I am crossing the data wrong.

I am just making this up, the exact details depend on how your data is structured, but you will want something along these lines:
ipmi_temperature_celsius{name="02-CPU 1",job="ipmi"} * on (instance) group_left (manufacturer_id) ipmi_bmc_info{manufacturer_id="Hewlett-Packard (11)"}

This should (or is supposed to, again, I am making this up) give you the temperature of all HP servers (because ipmi_bmc_info is always 1, so the multiplication doesn't do anything).
All this has however nothing to do with the exporter. If the data is there you will have to find the right query. I admit the documentation is sparse. The #prometheus IRC channel might be a good place to get more help if you need it.


Fix labels for AR

Current labels for selected nodes don't work well in AR.
Need to:

Always keep labels at bottom of screen, even when they are entered now (i.e. on iPad)
Have stronger indicator of which node is selected (highlight from original version seems to not be working, maybe re-enabling that will be good enough, if not, may need to draw something else in 3D)

Labels are now functioning reasonably again, including not centring in the view or having the arrow on the iPad. I think the current form is fine. Filing a separate bug for any changes to highlighting selected node.


Properly require jQuery in CommonJS environment

Currently, jQuery is required as require('jQuery') but it should be required as require('jquery').

Thanks!


migrate to controller-runtime v0.7.0

This brings CreateOrPatch: https://github.com/kubernetes-sigs/controller-runtime/pull/850
We can the remove our homegrown CreateOrUpdate

we are at v0.10.0 already


Package events not firing / not being captured

Description
Seems like this package's events are not firing for me, or rather, I'm unsuccessful in capturing those events.

Actual behavior
Events not captured
Expected behavior
Events captured

Information

hyn/multi-tenant version: 5.2.6
laravel version: 5.6.29
database driver and version: mysql
php version: 7.2

tenancy.php config
    'models' => [
        /**
         * Specify different models to be used for the global, system database
         * connection. These are also used in their relationships. Models
         * used have to implement their respective contracts and
         * either extend the SystemModel or use the trait
         * UsesSystemConnection.
         */

        // Must implement \Hyn\Tenancy\Contracts\Hostname
        'hostname' => \Hyn\Tenancy\Models\Hostname::class,

        // Must implement \Hyn\Tenancy\Contracts\Website
        'website' => \Hyn\Tenancy\Models\Website::class
    ],
    'website' => [
        /**
         * Each website has a short random hash that identifies this entity
         * to the application. By default this id is randomized and fully
         * auto-generated. In case you want to force your own logic for
         * when you need to have a better overview of the complete
         * tenant folder structure, disable this and implement
         * your own id generation logic.
         */
        'disable-random-id' => false,

        /**
         * The random Id generator is responsible for creating the hash as mentioned
         * above. You can override what generator to use by modifying this value
         * in the configuration.
         *
         * @warn This won't work if disable-random-id is true.
         */
        'random-id-generator' => Hyn\Tenancy\Generators\Uuid\ShaGenerator::class,

        /**
         * Enable this flag in case you're using a driver that does not support
         * database username or database name with a length of more than 32 characters.
         *
         * This should be enabled for MySQL, but not for MariaDB and PostgreSQL.
         */
        'uuid-limit-length-to-32' => env('LIMIT_UUID_LENGTH_32', true),

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant specific files, including media, packages, routes and other
         * files for this particular website.
         *
         * @info If not set, will revert to the default filesystem.
         * @info If set to false will disable all tenant specific filesystem auto magic
         *       like the config, vendor overrides.
         */
        'disk' => 's3',

        /**
         * Automatically generate a tenant directory based on the random id of the
         * website. Uses the above disk to store files to override system-wide
         * files.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-directory' => true,

        /**
         * Automatically rename the tenant directory when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move files accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-directory' => true,

        /**
         * Automatically deletes the tenant specific directory and all files
         * contained within.
         *
         * @see
         * @info set to true to enable.
         */
        'auto-delete-tenant-directory' => false,

        /**
         * Time to cache websites in minutes. Set to false to disable.
         */
        'cache' => false,
    ],
    'hostname' => [
        /**
         * If you want the multi tenant application to fall back to a default
         * hostname/website in case the requested hostname was not found
         * in the database, complete in detail the default hostname.
         *
         * @warn this must be a FQDN, these have no protocol or path!
         */
        'default' => env('TENANCY_DEFAULT_HOSTNAME'),
        /**
         * The package is able to identify the requested hostname by itself,
         * disable to get full control (and responsibility) over hostname
         * identification. The hostname identification is needed to
         * set a specific website as currently active.
         *
         * @see src/Jobs/HostnameIdentification.php
         */
        'auto-identification' => env('TENANCY_AUTO_HOSTNAME_IDENTIFICATION', true),

        /**
         * In case you want to have the tenancy environment set up early,
         * enable this flag. This will run the tenant identification
         * inside a middleware. This will eager load tenancy.
         *
         * A good use case is when you have set "tenant" as the default
         * database connection.
         */
        'early-identification' => env('TENANCY_EARLY_IDENTIFICATION', true),

        /**
         * Abort application execution in case no hostname was identified. This will throw a
         * 404 not found in case the tenant hostname was not resolved.
         */
        'abort-without-identified-hostname' => env('TENANCY_ABORT_WITHOUT_IDENTIFIED_HOSTNAME', true),

        /**
         * Time to cache hostnames in minutes. Set to false to disable.
         */
        'cache' => false,

        /**
         * Automatically update the app.url configured inside Laravel to match
         * the tenant FQDN whenever a hostname/tenant was identified.
         *
         * This will resolve issues with password reset mails etc using the
         * correct domain.
         */
        'update-app-url' => true,
    ],
    'db' => [
        /**
         * The default connection to use; this overrules the Laravel database.default
         * configuration setting. In Laravel this is normally configured to 'mysql'.
         * You can set a environment variable to override the default database
         * connection to - for instance - the tenant connection 'tenant'.
         */
        'default' => env('TENANCY_DEFAULT_CONNECTION'),
        /**
         * Used to give names to the system and tenant database connections. By
         * default we configure 'system' and 'tenant'. The tenant connection
         * is set up automatically by this package.
         *
         * @see src/Database/Connection.php
         * @var system-connection-name The database connection name to use for the global/system database.
         * @var tenant-connection-name The database connection name to use for the tenant database.
         */
        'system-connection-name' => env('TENANCY_SYSTEM_CONNECTION_NAME', Connection::DEFAULT_SYSTEM_NAME),
        'tenant-connection-name' => env('TENANCY_TENANT_CONNECTION_NAME', Connection::DEFAULT_TENANT_NAME),

        /**
         * The tenant division mode specifies to what database websites will be
         * connecting. The default setup is to use a new database per tenant.
         * In case you prefer to use the same database with a table prefix,
         * set the mode to 'prefix'.
         *
         * @see src/Database/Connection.php
         */
        'tenant-division-mode' => env('TENANCY_DATABASE_DIVISION_MODE', 'database'),

        /**
         * The database password generator takes care of creating a valid hashed
         * string used for tenants to connect to the specific database. Do
         * note that this will only work in 'division modes' that set up
         * a connection to a separate database.
         */
        'password-generator' => Hyn\Tenancy\Generators\Database\DefaultPasswordGenerator::class,

        /**
         * The tenant migrations to be run during creation of a tenant. Specify a directory
         * to run the migrations from. If specified these migrations will be executed
         * whenever a new tenant is created.
         *
         * @info set to false to disable auto migrating.
         *
         * @warn this has to be an absolute path, feel free to use helper methods like
         * base_path() or database_path() to set this up.
         */
        'tenant-migrations-path' => database_path('migrations/tenant'),

        /**
         * The default Seeder class used on newly created databases and while
         * running artisan commands that fire seeding.
         *
         * @info requires tenant-migrations-path in order to seed newly created websites.
         *
         * @warn specify a valid fully qualified class name.
         */
        'tenant-seed-class' => Database\Seeder\Tenant\TenantDatabaseSeeder::class,
//      eg an admin seeder under `app/Seeders/AdminSeeder.php`:
//        'tenant-seed-class' => App\Seeders\AdminSeeder::class,

        /**
         * Automatically generate a tenant database based on the random id of the
         * website.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database' => true,

        /**
         * Automatically generate the user needed to access the database.
         *
         * @info Useful in case you use root or another predefined user to access the
         *       tenant database.
         * @info Only creates in case tenant databases are set to be created.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database-user' => true,

        /**
         * Automatically rename the tenant database when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move databases accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-database' => true,

        /**
         * Automatically deletes the tenant specific database and all data
         * contained within.
         *
         * @info set to true to enable.
         */
        'auto-delete-tenant-database' => env('TENANCY_DATABASE_AUTO_DELETE', false),

        /**
         * Automatically delete the user needed to access the tenant database.
         *
         * @info Set to false to disable.
         * @info Only deletes in case tenant database is set to be deleted.
         */
        'auto-delete-tenant-database-user' => env('TENANCY_DATABASE_AUTO_DELETE_USER', false),

        /**
         * Define a list of classes that you wish to force onto the tenant or system connection.
         * The connection will be forced when the Model has booted.
         *
         * @info Useful for overriding the connection of third party packages.
         */
        'force-tenant-connection-of-models' => [
//            App\User::class
        ],
        'force-system-connection-of-models' => [
//            App\User::class
        ],
    ],

    /**
     * Global tenant specific routes.
     * Making it easier to distinguish between landing and tenant routing.
     *
     * @info only works with `tenancy.hostname.auto-identification`.
     */
    'routes' => [
        /**
         * Routes file to load whenever a tenant was identified.
         *
         * @info Set to false or null to disable.
         */
        'path' => base_path('routes/tenants.php'),

        /**
         * Set to true to flush all global routes before setting the routes from the
         * tenants.php routes file.
         */
        'replace-global' => false,
    ],

    /**
     * Folders configuration specific per tenant.
     * The following section relates to configuration to files inside the tenancy/<uuid>
     * tenant directory.
     */
    'folders' => [
        'config' => [
            /**
             * Merge configuration files from the config directory
             * inside the tenant directory with the global configuration files.
             */
            'enabled' => true,

            /**
             * List of configuration files to ignore, preventing override of crucial
             * application configurations.
             */
            'blacklist' => ['database', 'tenancy', 'webserver'],
        ],
        'routes' => [
            /**
             * Allows adding and overriding URL routes inside the tenant directory.
             */
            'enabled' => false,

            /**
             * Prefix all tenant routes.
             */
            'prefix' => null,
        ],
        'trans' => [
            /**
             * Allows reading translation files from a trans directory inside
             * the tenant directory.
             */
            'enabled' => false,

            /**
             * Will override the global translations with the tenant translations.
             * This is done by overriding the laravel default translator with the new path.
             */
            'override-global' => true,

            /**
             * In case you disabled global override, specify a namespace here to load the
             * tenant translation files with.
             */
            'namespace' => 'tenant',
        ],
        'vendor' => [
            /**
             * Allows using a custom vendor (composer driven) folder inside
             * the tenant directory.
             */
            'enabled' => false,
        ],
        'media' => [
            /**
             * Mounts the assets directory with (static) files for public use.
             */
            'enabled' => false,
        ],
        'views' => [
            /**
             * Adds the vendor directory of the tenant inside the application.
             */
            'enabled' => false,

            /**
             * Specify a namespace to use with which to load the views.
             *
             * @eg setting `tenant` will allow you to use `tenant::some.blade.php`
             * @info set to null to add to the global namespace.
             */
            'namespace' => null,

            /**
             * If `namespace` is set to null (thus using the global namespace)
             * make it override the global views. Disable to
             */
            'override-global' => true,
        ]
    ]

Relevant Code
EventServiceProvider.php
protected $listen = [
        // Hyn Tenancy Events
        Identified::class => [
            ActivatesPublicDisk::class
        ],
        NoneFound::class => [
            ActivatesPublicDisk::class
        ],
        Switched::class => [
            ActivatesPublicDisk::class
        ],
];

    public function boot()
    {
        parent::boot();

        Event::listen('Hyn\Tenancy\Events\*', function ($eventName, array $data) {
              // Never gets in here
              print_r($eventName);
        });
        Event::listen('*', function ($eventName, array $data) {
            // Other non hyn/multi-tenant events show, but nothing from this package
            print_r($eventName);
        });
    }

EventServiceProvider.php
class ActivatesPublicDisk
{
    public function __construct(Factory $filesystem)
    {
        dd('ccc'); // This never shows
        $this->filesystem = $filesystem;
    }
}

I've also tried adding adding some dd() inside WebsiteEvent.php and Identified.php, and those are triggered and show.
Also, I do get data from the tenant tables, so the tenant idenfication part must be working.
Hopefully that's enough information, I'll update as I find more, thanks!

Just a wild guess but:
Event::listen('Hyn\Tenancy\Events\*', function ($eventName, array $data) {
              // Never gets in here
              print_r($eventName);
        });

If I'm not mistaken FQCN in strings are prefixed with a \. Can you try:
Event::listen('\Hyn\Tenancy\Events\*', function ($eventName, array $data) {
              // Never gets in here
              print_r($eventName);
        });

Unfortunately tried that, but still no luck

Can you post your .env values (except database information).

Sure, they are pretty much the default:
TENANCY_DEFAULT_HOSTNAME=demo.api.whispli.test
TENANCY_CONNECTION=system
TENANCY_HOST=<IP_ADDRESS>
TENANCY_PORT=3306
TENANCY_DATABASE=tenancy
TENANCY_USERNAME=
TENANCY_PASSWORD=

Hey @luceos I seem to have found the solution for my case:
If I disable package auto-discovery for this package, and manually register Hyn\Tenancy\Providers\TenancyProvider::class in config/app.php after the EventServiceProvider
then it works
Might be a bug with the auto-discovery here

This.. is extremely confusing! 😂

Hi @DennisOng and @luceos ,
Thankfully I am not the only one with this kind of problem. For some reason the events fired by this package are not being captured in the App\Providers\EventServiceProvider. Not out-of-the-box anyways.
When I discover more I report back. Or perhaps I read an answer here in time... ^_^
Success!

I am sorry I was not correct in my last post: the Hyn*\Events are fired and can be listened for in \App\Providers\EventServiceProvider.
It is only confusing in what order, when is what fired!?
This is what I observe:
in App\Providers\EventServiceProvider
    public function boot()
    {
        parent::boot();

        Event::listen('Hyn\*', function ($eventName, array $data) {

            dump($eventName, $data);
        });
    }

Two urls are pointing to the webserver. One url is defined as Hostname for a Website, the other url is not defined and so will not be identified by the tenant system.
The none identified tenant url does show events fired by Hyn\Tenancy:

But the identified tenant url shows no events from Hyn\Tenancy!
This package holds a lot of secrets for me yet... Perhaps @luceos you notice something that is helpful here?

Further more, var_dumping from \Illuminate\Events\Dispatcher in the fire() method, the Hyn\Tenancy events are showing up correctly!
So this must have something to do with the order in which all things are flowing...

I looked at this last night but found no cause yet..

Do you also experience the problematic behavior?

@ametad can you compare your tenancy.php with the one from @DennisOng to check for overlap? So that I can see what  you both configured to get at this state?

Yes of course, here it is:
LIMIT_UUID_LENGTH_32=true
TENANCY_DEFAULT_CONNECTION=tenant
TENANCY_EARLY_IDENTIFICATION=true

Most of config/tenancy.php is the same, the things that are different in my file:
    'website' => [
        'disk' => null,
    ],
    'hostname' => [
        'abort-without-identified-hostname' => false,
    ],

To be thorough: website.cache and hostname.cache are both false.

I was thinking, because the events does only not show up (at least in the EventServiceProvider) in the early identified hostnames, perhaps the problem is te be found somewhere here(?):
/**
         * In case you want to have the tenancy environment set up early,
         * enable this flag. This will run the tenant identification
         * inside a middleware. This will eager load tenancy.
         *
         * A good use case is when you have set "tenant" as the default
         * database connection.
         */
        'early-identification' => env('TENANCY_EARLY_IDENTIFICATION', true),

So perhaps in the above described middleware?

I've spend some time with @ametad trying to validate two candidate causes of this issue.

Listeners might be returning false, blocking the event from travelling further down the chain.
Another dispatcher is rebound somewhere in the startup cycle.

What we discovered was that once the Laravel app is booted, the number of listeners for the "Identified" amount reset back to 0, which before (during registration of providers) was 7.
Keep you posted.

It looks like there is a work around; don't auto discover hyn/multi-tenant. Like this:
composer.json
    "extra": {
        "laravel": {
            "dont-discover": [
                "hyn/multi-tenant"
            ]
        }
    },

config/app.php
    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
    // .. etc ..
        Illuminate\View\ViewServiceProvider::class,

        /*
         * Package Service Providers...
         */
        \Hyn\Tenancy\Providers\TenancyProvider::class,

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

    ],

I see this work around is mentioned before @DennisOng . Credits to you!
But why the need of declaring after the EventServiceProvider? Registered Listeners/Subscribers in third party package can listen to Hyn\\* events with config above.

Hmm that's interesting @ametad , I had assumed that the issue was caused by the order these are booted/registered, but from what you're saying this is not really the case, good to know!

To be clear: I did NOT ignore 3rd party. Because my test of listening to Hyn* events was done in a package  that was auto discovered. I call this package 3rd party, because it was required by Composer.
(Although the code is of my own and resides on a subdirectory, Composer require does make a symlink to this code and place it in the vendor directory. Hence I call it 3rd party)

I run into the same issue, disabling auto-discover worked for me as DennisOng described. For me it worked only when I load the TenancyProvider after EventServiceProvider too.
For me it looks like some kind of loading order issue. Multi-tenant seems to call all the events before the App\Providers\EventServiceProvider has been booted. So my listener, for example Hyn\Tenancy\Events\Database\ConfigurationLoaded, is registered too late.
If I use console commands, the loading order seems to be right and it will work even with auto-discover.


Graphs shouldn't fail if database is down

Currently before updating graphs it fetches all apps that will be graphed, however if database is down, this fails. Since graphs are stored in rrd files, this is the only step where database failure prevents any new data on graphs, it could be avoided.
Either cache last result in a file, or simply list existing *.rrd files to build appid list as a fallback.

Done.


Not debugging

Issue Type: Bug
After 1.46 updates i m unable to debug. Debuger does not stops at break points. In my case its a single js file with nodejs
VS Code version: Code 1.48.0 (db40434f562994116e5b21c24015a2e40b2504e6, 2020-08-13T07:50:42.600Z)
OS version: Windows_NT x64 6.1.7601

System Info

Item
Value

CPUs
Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz (4 x 3093)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: unavailable_offprotected_video_decode: unavailable_offrasterization: unavailable_offskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
5.97GB (1.08GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions: none

Please collect a trace log using the following instructions:

If you're able to, add "trace": true to your launch.json and reproduce the issue. The location of the log file on your disk will be written to the Debug Console. Share that with us.
⚠ This log file will not contain source code, but will contain file paths. You can drop it into https://microsoft.github.io/vscode-pwa-analyzer/index.html to see what it contains. If you'd rather not share the log publicly, you can email it to<EMAIL_ADDRESS>
/needsMoreInfo


Anvil event listeners don't handle focus properly

Anvil version: 0.4.0
Trying to set a listener for onFocusChange or onTextChanged on an EditText via Anvil does not work properly. Each time the listener gets called the EditText loses focus, even with an empty handler body.
This has been isolated to an Anvil issue, as my workaround to manually set the listener via Anvil.currentView<EditText>().onFocusChangeListener = MyChangeListener() works fine.
This is reproducible on multiple versions of Android on both physical and virtual devices.

I detected the same issue. My workaround is to set it on the init method:
init(() -> {    Anvil.currentView().setOnFocusChangeListener((v, focus) -> { //my logic here                          });                     });
With the onTextChanged I haven't found a passable solution yet. All the solution that come to my mind add to much boilerplate to the code.


[5.7] Don't override button link color in doc hero

Rationale: Fixes a visual regression where the sample code download button is difficult to read and appears disabled.
Risk: Low
Risk Detail: Only a single CSS selector change.
Reward: High
Reward Details: Fixes noticeable UX issue with all sample code pages.
Original PR: https://github.com/apple/swift-docc-render/pull/114
Issue: rdar://90999537
Code Reviewed By: @dobromir-hristov, @hqhhuang
Testing Details: Visually tested example sample code pages impacted by bug.

@swift-ci test


crypto: Support libnettle 3.4+ without warnings

libnettle 3.4 changed the base64 API to make the args
accept char instead of uint8_t. This causes compile time
warnings (and errors if you compile without -fpermissive),
so wrap the functions for newer versions of nettle to
silence those warnings.

Can we drop support for versions less than 3? 3.0 was released in June 2014.

It doesn't build with gcc on travis.

is the travis failure meaningful? can we merge that or does it require some further changes?

Can we drop support for versions less than 3? 3.0 was released in June 2014.

Even Debian stable is shipping libnettle 3.3. :pencil:

<illwieckz> `Ishq, what is your thought on this?
<Ishq> illwieckz: As for that PR, if its not building on travis, we should fix travis.


filter_expressions and expression_attribute_values

Any plans to implement filter_expressions for q()?

I don't have plans to implement this, but it would be great to have if you want to put together a PR. Otherwise I'll implement when I need them.

Has been implemented


Updating Terminal and Adding Sequence Search

Added support for sequence search. Updated Terminal class to allow for various types of search. Before, Terminal class only accepted attribute search parameters. Now, Terminal class accepts a dictionary of parameters from various search types. Parameters are specified by child classes dedicated to a search type. Documentation, notebook, and tests update to align with changes.

Thanks @brindakv. @rushambhatt you can feel free to merge this when you return. In the meantime, @santiblaumann feel welcome to create a separate PR (into staging) for the seqmotif search.


DCOS-47960 Publish nightly dcos-ui as "nightly" instead of "2.24.4"

Testing
Not really testable as this is done on merge
Trade-offs
N/A
Dependencies
dcos-ui-update-service #24 will need to merge and land before these nightly versions can be installed. but that shouldn't prevent this from merging
Screenshots
N/A

:tada: This PR is included in version 2.51.4 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[RFC] Allow to set a rootDir in untool

Current status
Right now untool deduces the rootDir from the found (from pwd and up) package.json.
From this process the configuration is loaded using cosmiconfig. This part is not overridable.
Problem
This behaviour is a bit too static.
The first issues arose during unit testing where we currently need to spawn the test in a separate process.
On a broader view this right now prevents integrating untool in a programatic way where the scope is not the current directory. E.g. initalize an untool instance as part of a program where the start-folder should not be the current directory.
Solution
It would be good to set the rootDir from outside and respect this during each and every initialize step (cosmiconfig, webpack, ...)

This was most recently discussed in and around #366. Short version: it is complicated, and might turn out to be quite a bit of effort, especially if we want to implement this in an architecturally appropriate way.
Nevertheless, I continue to completely agree with the reasoning behind this idea.


Adding space as an "KEYBOARD ACTIONS" that calls confirm() just like Enter

I guess the title says it, would be really nice that space would do the same as enter for keyboard actions. :)

@Pecka40
Oh yeah, Adding SPACE will be nice :)
i will add it soon.
Thanks for pointing that out.

Feature is added


Dashboard template not working on MS Edge.

Hi!
The dashboard template isn't working on MS Edge. Everytime i try to launch it, the brower stops to work.

@jonathanperis That should never be happening, no matter what code you give to a browser. I’ll have to assume that this is a bug with IE Edge. Nothing we can do about that, sorry.


Not able to enable on Portal or using PowerShell cmdlet

I get below error when i try to enable on Portal
"Updated monitoring configuration has failed for cluster: xxxxx. Ensure cluster is in 'running' state and valid OMS workspace"
When i try to run the powershell cmdlet, i get below error,
ErrorInfo                                              State RequestId                            StatusCode

Microsoft.Azure.Management.HDInsight.Models.ErrorInfo Failed c7cd75c1-a1fa-4b68-8b3a-140ecfc03a2c         OK

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

ID: 6015786a-01a5-c01d-82bb-f375b5dc3a00
Version Independent ID: 704bde40-76d9-e261-e0e0-ef7e5de6724b
Content: Use Log Analytics to monitor Azure HDInsight clusters
Content Source: articles/hdinsight/hdinsight-hadoop-oms-log-analytics-tutorial.md
Service: hdinsight
GitHub Login: @JasonWHowell
Microsoft Alias: jasonh

@kavi99506 That sounds like something going on in the backend in HDInsight. Please work with Azure support to troubleshoot further if you need a sure answer. The docs team doesn't have access to your cluster unfortunately. Thanks, Jason

@kavi99506 if this problem is still occurring, please open a thread in the forums:
https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=hdinsight
Please include what Powershell commands you are running.