Working towards best practices for packages based on dask

This topic was brought up by @mrocklin on twitter: what best practices and guidelines should packages that depend on dask and other pydata packages follow? This was specifically brought up when talking about Satpy which is highly dependent on xarray DataArrays using dask arrays underneath. So the question is, what kind of things could be presented/documented to people wanting to build a package dependent on these dask/xarray/others. Some initial thoughts and questions I had:

How/when to allow the user to define their own chunk sizes? With semi-recent updates for 'auto' chunking and setting chunks based on in-memory size this is easier, but still requires asking users to understand some low-level implementation details of a package.
How/when should number of workers be configured by the package's user? Things like OMP_NUM_THREADS and DASK_NUM_WORKERS (or the related dask.config.set parameter).
If the package wants to take the advantage of a distributed client (submit, gather, etc) what should the user be required to provide? Is it bad practice to use get_client inside the package's utilities to get any configured client? Should a user be required to provide a client? If not provided can/should a package create a local client? Is that too much magic happening without the user's knowledge (creating sub-processes, etc)?

What other areas could these best practices include?
CC @mraspaud (satpy core developer)

How/when to allow the user to define their own chunk sizes? With semi-recent updates for 'auto' chunking and setting chunks based on in-memory size this is easier, but still requires asking users to understand some low-level implementation details of a package.

I would say that this depends on the technical sophistication of your users.  Assuming that that sophistication is sometimes low, I would say that you should probably expose chunking optionally, and otherwise should help to provide guides to dask's auto-chunking if possible.  Assuming that you're dealing with geotiffs it would be good to use the tile size to inform automatic chunking.
https://github.com/dask/dask/blob/4898c75908587a1c3686f9c87d7150dd9cf0d379/dask/array/core.py#L2313
This is done in an old PR to Xarray, which might be interesting.
https://github.com/pydata/xarray/pull/2255/files#diff-6364b203943c799516f9ecba19e1b119R326

How/when should number of workers be configured by the package's user? Things like OMP_NUM_THREADS and DASK_NUM_WORKERS (or the related dask.config.set parameter).

I think that downstream libraries should probably avoid setting this if possible.  Creating the scheduler/client should be orthogonal from libraries that create computations.

If the package wants to take the advantage of a distributed client (submit, gather, etc) what should the user be required to provide? Is it bad practice to use get_client inside the package's utilities to get any configured client? Should a user be required to provide a client? If not provided can/should a package create a local client? Is that too much magic happening without the user's knowledge (creating sub-processes, etc)?

Ideally, they don't have to use submit/gather, and can just use dask.compute/dask.persist.  This makes them usable by the broadest set of Dask schedulers.
Of course, as your questions poses, this may not always be possible.  I think that using get_client, as you suggest, is probably best.

So it sounds like to summarize your answers:

It'll be a case by case decision on how/when chunking is specified by package users. In most cases and if done correctly the package should be able to auto-chunk in most cases using normalize_chunks with optional overrides by the user.
Packages point to dask docs.
I was thinking of non-array cases where we have utilities using futures and/or complex delayed functions. All or most of the dask-ness of the utility are hidden from the user except for "you can run this on a cluster if you pass a dask client to the client keyword argument".

Few more (euro) cents from another Pytroll core dev. As I'm more concentrated on the operational satellite processing chains, there are some points that I need to consider all the time, both when writing the software and when setting things up. Below are some thoughts that came to mind when I read the 3-item list @djhoese started with.
There can be several completely independent chains (we at FMI have 10+) running, and some of them need to share resources. So the chains need to be constrained in CPU and/or RAM usage. The first means setting both OMP_NUM_THREADS and DASK_NUM_WORKERS, and the other both DASK_NUM_WORKERS and the chunk size. The CPU limitation is exact. RAM limitation depends a lot on the implementation and use case. With "simple" array operations where chunks are constant, it can be controlled with some precission. With Satpy it depends if reprojection is done, which resampling method is used, if the resampling uses caching, what the output is (JPG, GeoTIFF, NetCDF, ...), what's the originating data, and so on and so on.
As Dask by default uses all the resources available, we Pytroll devs need to advice the users with things like (a bit exaggerated, but not by much) "Try if PYTROLL_CHUNK_SIZE=1024 OMP_NUM_THREADS=1 DASK_NUM_WORKERS=4 BLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 script.py works better." Naturally these depend on the use case.
I guess the point here is: we (the library/application devs) need a simple way to give the user control over the amount of resources the software takes.

I guess the point here is: we (the library/application devs) need a simple way to give the user control over the amount of resources the software takes.

 So maybe it isn't something that dask can do to help any more than it already is, but that best practices would need to discuss this as something people should be concerned about.

Great stuff in here, thanks for starting this issue!
I have one thing I would like to bring up, it's related to IO. In our application (satpy), we do read a lot of data from disk and write at least as much to disk when we're done. However, it's not really practical for us (at my work place) to have these data on shared storage as the data volume is too big and would slow down the entire network, so we have the data locally on the servers. On the other hand, we need to balance the load of our servers, so dask.distributed would be very handy, but I'm not sure how to handle the reading and writing parts as they can only be done on one of the machines. I know that workers can be assigned some flags to represent the resources they have access to, but how do we set this up transparently in a library (satpy) that have to be runable both with and without dask.distributed ? And more generally how can we activate distributed be added transparently to the library ? (I think that last question was also raised indirectly by @djhoese)

I would encourage satpy to not make constraints about setting up Dask workers.  I think that this is handled best on an application by application basis.

There can be several completely independent chains (we at FMI have 10+) running, and some of them need to share resources. So the chains need to be constrained in CPU and/or RAM usage

Can they all use the same dask cluster?  If so, that would load balance for you.

but I'm not sure how to handle the reading and writing parts as they can only be done on one of the machines

Typically people use a network file system for this sort of thing.  If I/O is a bottleneck then you might consider compression, nicer file formats, doing more computation per run, or something similar.

I thought of some new ones this weekend and an update on another:
2a. A lot of scientific libraries that can benefit from dask are usually wrapping old fortran or C code that is fast because of how it is implemented. Some also use OpenMP, but they are part of the existing users' workflow. Blindly setting things like OpenMP or BLAS number of threads could have major performance penalties on these libraries. Perhaps suggesting sub-library developers to take advantage of projects like https://github.com/joblib/threadpoolctl may be a good suggestion. I've never used it myself, but discovered it when worrying about how Satpy uses the pykdtree library (OpenMP-based). If we access pykdtree from dask workers there isn't a real need for OpenMP...but what if it is faster (leading to profiling, benchmarks, etc only to find it doesn't make a big difference)?

How to make a sub-library work for both numpy users, dask users, and xarray users. In most cases numpy and dask arrays should work pretty well together with __array_function__.  things like blockwise operations or having to do delayed functions as workarounds for non-vectorized operations can make interfaces complicated. Similarly, having the same interface work with xarray objects can be difficult when you want to maintain .attrs (which get lost on most operations), .dims, etc. This could result in 3 separate implementations of the same functionality or even 4 if you want to throw a numba jit'd version in the mix. I'm not saying that this is necessarily something dask/xarray devs should be concerned about but it can hinder libraries migrating code to be dask/xarray friendly. Side question: Can blockwise be used as a decorator?

Some low level C/fortran libraries are used for reading/writing files and may not be multi-process or multi-thread safe. This makes the sub-library developer have to worry about what dask scheduler the user is using and to choose the most performant method of using these libraries. In Satpy's case we got around some of this by using a thread lock on da.store with rasterio. I think xarray has come up with fancier ways of handling this, but I haven't had time to investigate. Best practices could either help or layout issues like this. Or if there is an easy way to check the scheduler being used or if there is an easy way to tell users "you must create your X library jobs like this so that this entire dask task graph gets run on one threaded worker on a single node" then that could work too. It is something I've wanted to play with more in Satpy but haven't had time.

Another one based on https://github.com/dask/distributed/pull/2671. How to write tests (pytest or unittest only) that need to use a distributed Client. When trying to do it in Satpy tests I run in to issues with ports remaining open and not being able to reopen them.

When trying to do it in Satpy tests I run in to issues with ports remaining open and not being able to reopen them.

Were you doing anything fancy, like trying to reuse an event loop or state between tests? Or were you just using the public API? I would think that things would be fine as long as you're closing the cluster down between tests. Reports otherwise would be welcome.

No, nothing too fancy. When I originally wrote the tests I noticed that dask's own tests had some pytest fixtures for handling things so I assumed that might be necessary and just mocked the Client in my tests. I was creating a LocalCluster with 1 worker, creating a Client with that cluster, then after using them I would run .close() on both.
I should note, it passed locally just fine but on Travis it would fail.
Here's the error:

BUG:asyncio:Using selector: EpollSelector

DEBUG:asyncio:Using selector: EpollSelector

/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/dashboard/core.py:72: UserWarning:

Port 8787 is already in use.

Perhaps you already have a cluster running?

Hosting the diagnostics dashboard on a random port instead.

  warnings.warn("\n" + msg)

/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/dashboard/core.py:75: ResourceWarning: unclosed <socket.socket fd=30, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('<IP_ADDRESS>', 0)>

  raise

ERROR:asyncio:Task exception was never retrieved

future: <Task finished coro=<_wrap_awaitable() done, defined at /home/travis/miniconda/envs/test/lib/python3.6/asyncio/tasks.py:530> exception=RuntimeError('\n        An attempt has been made to start a new process before the\n        current process has finished its bootstrapping phase.\n\n        This probably means that you are not using fork to start your\n        child processes and you have forgotten to use the proper idiom\n        in the main module:\n\n            if __name__ == \'__main__\':\n                freeze_support()\n                ...\n\n        The "freeze_support()" line can be omitted if the program\n        is not going to be frozen to produce an executable.',)>

Traceback (most recent call last):

  File "/home/travis/miniconda/envs/test/lib/python3.6/asyncio/tasks.py", line 537, in _wrap_awaitable

    return (yield from awaitable.__await__())

  File "/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/nanny.py", line 243, in start

    response = await self.instantiate()

  File "/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/nanny.py", line 325, in instantiate

    result = await self.process.start()

  File "/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/nanny.py", line 490, in start

    await self.process.start()

  File "/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/process.py", line 33, in _call_and_set_future

    res = func(*args, **kwargs)

  File "/home/travis/miniconda/envs/test/lib/python3.6/site-packages/distributed/process.py", line 190, in _start

    process.start()

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/process.py", line 105, in start

    self._popen = self._Popen(self)

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/context.py", line 291, in _Popen

    return Popen(process_obj)

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/popen_forkserver.py", line 35, in __init__

    super().__init__(process_obj)

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/popen_fork.py", line 19, in __init__

    self._launch(process_obj)

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/popen_forkserver.py", line 42, in _launch

    prep_data = spawn.get_preparation_data(process_obj._name)

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/spawn.py", line 143, in get_preparation_data

    _check_not_importing_main()

  File "/home/travis/miniconda/envs/test/lib/python3.6/multiprocessing/spawn.py", line 136, in _check_not_importing_main

    is not going to be frozen to produce an executable.''')

RuntimeError:

        An attempt has been made to start a new process before the

        current process has finished its bootstrapping phase.

        This probably means that you are not using fork to start your

        child processes and you have forgotten to use the proper idiom

        in the main module:

            if __name__ == '__main__':

                freeze_support()

                ...

        The "freeze_support()" line can be omitted if the program

        is not going to be frozen to produce an executable.

No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.

Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received

So it is likely in the way we are starting our tests (using python setup.py test to run a unittest suite) that is causing the error. If I have time to get back to it I'll file a separate github issue.

When I originally wrote the tests I noticed that dask's own tests had some pytest fixtures for handling things so I assumed that might be necessary and just mocked the Client in my tests.

Those are documented at https://distributed.dask.org/en/latest/develop.html#writing-tests. If you're making assertions about the cluster, it may be helpful to use those helpers, but otherwise they may be too tricky to use.

If I have time to get back to it I'll file a separate github issue.

We have one similar to this already. It's about creating a LocalCluster at the top-level of a python script. I'm not familiar with what setup.py test does unfortunately.

I'm not familiar with what setup.py test does unfortunately.

It's deprecated (as far as I understand), but essentially calls unittest with the test suite specified in setup.py.

Perhaps suggesting sub-library developers to take advantage of projects like https://github.com/joblib/threadpoolctl may be a good suggestion. I've never used it myself, but discovered it when worrying about how Satpy uses the pykdtree library (OpenMP-based).

Just an FYI, scikit-learn is dealing with similar issues: https://github.com/scikit-learn/scikit-learn/issues/14979.


Is it possible to use through with multiple pivot tables?

In the case I would like to support with through, I have a standard many-to-many relation, in which a join table has foreign keys to tables A and B -- then, I also have a table C, which has a foreign key to B. Is it possible to create a Bookshelf relation between C and A with through?

Not currently, there is a PR for this feature but it is incomplete/abandoned.

Closing this for lack of activity. If you feel like you didn't get your issue answered properly let us know and we'll reopen it.


Client Allocation Request for: Kevin Huynh

Client Allocation Questions
Core Information

Name: Kevin Huynh
Website / Social Media: health.ucsd.edu
Region: North America
DataCap Requested: 5TiB
Addresses to be Notarized: f1jvkxpoj3bvrq5bs6kjmmnri65xidvu3sradlooq
Notary Requested: philippbanhardt

Would like to store reference human genome and other famous bioinformatic databases (e.g., UK BioBank, etc.)
(I'm an MD/MBA candidate at UC San Diego School of Medicine. I believe in using strong archival layers in the webstack to propagate scientific datasets in perpetuity.)

Hey @kemihu - thanks for your request. Can you kindly add more information / context here on:

yourself , e.g. include links to social media / news mentions, miner IDs that are affiliated with you etc
your history working on IPFS / Filecoin, e.g. notable contributions to the community, type of engagement shown over time etc
type, size, source and your relationship with the data you (and by extension other Discover participants) are looking to store on Filecoin, e.g. public data vs private data, who owns the data / license, etc
how you intend to store the data on Filecoin, e.g. redundancy, location / miner preferences, etc

Thanks

I’m a North American medical professional deeply engaged with Filecoin, having first participated in the SAFT offering by Protocol Labs in 2017, now actively in the Slack supporting small and medium miners. I’m investing most of my personal money and all of the time I have left after my primary career (medicine / surgeon-in-training) into the Filecoin ecosystem.  I want to support Filecoin development and the supply side as a miner to bring forth democratized data systems on the open web stack, for personal philosophical reasons. I think the original Filecoin vision is closely aligned with that of academic research and the pursuit of knowledge (which requires hugely democratized, archived, unadulterated data). I actively joined the Filecoin community in September, predominantly in the open Slack (username: kemihu).

Running miner : f066596
Actively participating and helping on Filecoin Slack (my server workshop is a hardware playground, experimenting with all enterprise, prosumer, and consumer parts, then reporting back to the community all of my cost-effective ways to lower the mining barrier to entry -- to advance Filecoin beyond its esoteric demands)
Participating in the current Protocol Labs MinerX Fellowship program, to find pain points in the mining experience and to serve as a test bed for true online and offline client deals
In my life that was pre-medicine / pre-Filecoin-mining, I ran an alternative investments hedge fund, Noris Capital, who invited and headlined Filecoin by having Protocol Labs actively participate and present at our annual SF Blockchain Week, the largest blockchain conference in North America.
https://sfblockchainweek.io/
https://www.prnewswire.com/news-releases/unitize-blockchain-conference-reveals-additional-speakers-and-finalized-agenda-301087669.html

Recap: I spent years in finance, focused on blockchain ventures, then U.S. healthcare as a medical professional. However, my passion for Filecoin makes it my dominant focus beyond medicine. I plan to advance the use of decentralized solutions within healthcare, biotech, and allied verticals to unlock the potential of human science when data is presented in this new, more flexible paradigm, that is Filecoin.
https://www.linkedin.com/in/kevinforthehuynh/
UCSC Genome Browser: public dataset (total size : >10TiB) : https://genome.ucsc.edu/
(ftp://hgdownload.soe.ucsc.edu/goldenPath/)
UCSC is a public good and is one of the world’s preeminent genome databases (if not, at least, the United States’ most well-known), capturing the complete genome of several reference humans as well as all major research model organisms. This dataset is a public good that must be stored in perpetuity for future academic researchers globally.
This is one of the most useful bioinformatics datasets, and must be made available quickly to all. At my best estimation, there should be:

1+ copy of the dataset
Miners with fast retrieval in geographical regions that include any nations with open research standards
Low / near-zero price
I plan to store this to the network, location disseminated through IPFS pinning nodes. I’d like to store these data on 2 or more miners within North America, at first, given the demand to access these genomes predominantly at American research universities.
I’m so excited at the idea of storing society’s most important data on Filecoin. As someone in medicine, I see the potential as virtually limitless – invaluable to research.

Thanks for the clarification @kemihu. Are you OK posting here links to the deal transactions made as a verified client?

100% @philippbanhardt . That should be the case given the mission of this project.

@philippbanhardt: Bump. Were you able to find my contributions to the community / see slack?

Request Approved
Your Datacap Allocation Request has been approved by the Notary
Message sent to Filecoin Network

bafy2bzacedpxsukomf36wdtspryrgvksxbpy7szp5ui6hwc3yumaxpjxekdjc

Address

f1jvkxpoj3bvrq5bs6kjmmnri65xidvu3sradlooq

Datacap Allocated

5TiB

You can check the status of the message here: https://filfox.info/en/message/bafy2bzacedpxsukomf36wdtspryrgvksxbpy7szp5ui6hwc3yumaxpjxekdjc


Unable to Install-Module 'PowerShellGet' from an Azure DevOps build pipeline

So I'm running a build pipeline in Azure DevOps and one of the steps requires to install various packages, some from PSGallery and some from an internal feed. In order to do that the first thing I do is:
Install-Module 'PowerShellGet' -AllowClobber -RequiredVersion "2.2.5" -Force -Repository 'PSGallery' -SkipPublisherCheck
Install-Module 'PackageManagement' -Force -AllowClobber -RequiredVersion '1.4.3' -Repository 'PSGallery' -SkipPublisherCheck

After that I should be able to install the remaining packages.
The problem is that sometimes, PowerShellGet updates and sometimes it doesn't. Which makes it a pain to debug and determine what works and what doesn't.
I know a bug report should have a deterministic repro step process, but I don't have one. Sometimes it fails and sometimes it doesn't.
I have seen this fail in the past and I've resolved it by simply opening a new PowerShell instance, but that's not possible (Or at least I don't know how to do it) in an Azure DevOps build pipeline.
Steps to reproduce
Install-Module 'PowerShellGet' -AllowClobber -RequiredVersion "2.2.5" -Force -Repository 'PSGallery' -SkipPublisherCheck
Install-Module 'PackageManagement' -Force -AllowClobber -RequiredVersion '1.4.3' -Repository 'PSGallery' -SkipPublisherCheck

if it fails, it fails with the following warning:
WARNING: The version '1.4.7' of module 'PackageManagement' is currently in use. Retry the operation after closing the
applications.

Expected behavior
After running the install the following code should output "2.2.5" as the version
$module = Get-Module PowerShellGet
Write-Host "PowerShellGet version: "
Write-Host $module.Version.ToString()

Actual behavior
Sometimes it outputs 2.2.5 and sometimes <IP_ADDRESS>. Which means it has failed to update.

Also do you mind running
Install-Module 'PowerShellGet' -AllowClobber -RequiredVersion "2.2.5" -Force -Repository 'PSGallery' -SkipPublisherCheck -Debug -Verbose
and including the output.
Is there a particular reason you need to install PackageManagement 1.4.3? You also do not need to install PackageManagemnt because PowerShellGet installs it. This might be causing your issue because you are installing a lower version of PackageManagement than what is required on PowerShellGet (PackageManagment 1.4.7).

Hi @StevenBucher98, the environment is defined here
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/powershell
Running $PSVersionTable outputs the following information
Name                           Value
----                           -----
PSVersion                      5.1.19041.1237
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1237
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Is there a particular reason you need to install PackageManagement 1.4.3?

I'm not sure, I inherited this script so I'm cautious about making changes. Didn't know I didn't need it.
So I removed the explicit installation of PackageManagement and tried to run only Install-Module 'PowerShellGet' -AllowClobber -RequiredVersion "2.2.5" -Force -Repository 'PSGallery' -SkipPublisherCheck -Debug -Verbose
It failed with the following output (Sorry, it's quite long)

'https://www.powershellgallery.com/api/v2/FindPackagesById()?id='PowerShellGet'&$skip=80&$top=40'.
DEBUG: 00:00:00.7365119 Completed downloading
'https://www.powershellgallery.com/api/v2/FindPackagesById()?id='PowerShellGet'&$skip=40&$top=40'.
DEBUG: 00:00:00.7403986 '27' packages received in the last request.
DEBUG: 00:00:00.7678082 Completed downloading
'https://www.powershellgallery.com/api/v2/FindPackagesById()?id='PowerShellGet'&$skip=160&$top=40'.
DEBUG: 00:00:00.7691139 '0' packages received in the last request.
DEBUG: 00:00:00.8493214 Completed downloading
'https://www.powershellgallery.com/api/v2/FindPackagesById()?id='PowerShellGet'&$skip=120&$top=40'.
DEBUG: 00:00:00.8507191 '0' packages received in the last request.
DEBUG: 00:00:00.9136121 Completed downloading
'https://www.powershellgallery.com/api/v2/FindPackagesById()?id='PowerShellGet'&$skip=80&$top=40'.
DEBUG: 00:00:00.9149540 '0' packages received in the last request.
VERBOSE: Total package yield:'1' for the specified package 'PowerShellGet'.
DEBUG: 00:00:00.9175560 Completed iterating for 'PowerShellGet'.
DEBUG: 00:00:01.0978328 Done calling powershell «Find-Package» «PSModule»
DEBUG: 00:00:01.1209438 Calling New() : MethodName = 'GetInstalledPackages'
DEBUG: 00:00:01.1221484 SkipPublisherCheck: True
DEBUG: 00:00:01.1229892 ProviderName: PowerShellGet
DEBUG: 00:00:01.1238275 MessageResolver: Microsoft.PowerShell.PackageManagement.Cmdlets.GetMessageString
DEBUG: 00:00:01.1246763 RequiredVersion: 2.2.5
DEBUG: 00:00:01.1255074 Source: PSGallery
DEBUG: 00:00:01.1263344 AllowClobber: True
DEBUG: 00:00:01.1271587 Force: True
DEBUG: 00:00:01.1279869 Debug: True
DEBUG: 00:00:01.1287135 Scope: AllUsers
DEBUG: 00:00:01.1294122 Verbose: True
DEBUG: 00:00:01.1300991 Type: Module
DEBUG: 00:00:01.1307833 Name: PowerShellGet
DEBUG: 00:00:01.1318035 INVOKING PowerShell Fn Get-InstalledPackage with args PowerShellGet, 2.2.5, ,  that has length
4
DEBUG: 00:00:01.1415317 In PowerShellGet Provider - 'Get-InstalledPackage'.
DEBUG: 00:00:01.1425397 OPTION: SkipPublisherCheck => True
DEBUG: 00:00:01.1433507 OPTION: ProviderName => PowerShellGet
DEBUG: 00:00:01.1441512 OPTION: MessageResolver => Microsoft.PowerShell.PackageManagement.Cmdlets.GetMessageString
DEBUG: 00:00:01.1449476 OPTION: RequiredVersion => 2.2.5
DEBUG: 00:00:01.1457317 OPTION: Source => PSGallery
DEBUG: 00:00:01.1465230 OPTION: AllowClobber => True
DEBUG: 00:00:01.1473053 OPTION: Force => True
DEBUG: 00:00:01.1481583 OPTION: Debug => True
DEBUG: 00:00:01.1489707 OPTION: Scope => AllUsers
DEBUG: 00:00:01.1497621 OPTION: Verbose => True
DEBUG: 00:00:01.1505479 OPTION: Type => Module
DEBUG: 00:00:01.1513315 OPTION: Name => PowerShellGet
DEBUG: 00:00:01.2754269 PowerShell Script 'PSModule' Function 'Get-InstalledPackage' returns null.
DEBUG: 00:00:01.2767131 Done calling powershell «Get-InstalledPackage» «PSModule»

It has failed because getting the version with  Get-Module PowerShellGet outputs <IP_ADDRESS> instead of 2.2.5
Let me know if you need any more info
Thanks for looking into this

Thanks @santanor for the outputs! Do you mind confirming that PowerShellGet 2.2.5 has been installed by running
Get-Module PowerShellGet - ListAvailable
If you do see it in the list then you can try importing that specific version into your PS Session by running
Import-Module PowerShellGet -Version "2.2.5"
Then try Get-Module PowerShellGet - ListAvailable and can double check with (Get-command find-module).Module that both indicate that PowerShellGet v2.2.5 is installed and being utilized.

Also, for your reference, the Get-Module command only shows what is imported in your current PS Session. Using 'Get-Module PowerShellGet -ListAvailable' is a better way to check if a particular module is installed.


Ensure http server works in windows, add pdf thumbnail + link for doc type

also, modify unit tests to be modules and to use relative imports of utils and conftest (needed for them to work without in non-dev env)

This change is


internal dependency is considered external

gradle.dependencies.expose-api: Do not expose external dependencies as 'api' without good reason.: 2 issue(s) (0 suppressed):
  8fe785d4: Dependency 'io.cloudflight.conto:conto-signature-api' in project ':contract-client' is transitively exposed as 'api'.
  a58dc349: Dependency 'io.cloudflight.conto:conto-signature-api' in project ':contract-client' transitively exposes all runtime dependencies. Declare the dependency as "api ('io.cloudflight.conto:conto-signature-api') { transitive = false }" or add a plausible verification reason if this is intentional.
  see https://docs.cloudflight.io/io.cloudflight.cleancode.verifier/cleancode-verifier-gradle/0.13.1#dependencies-expose-api for more details and reasoning behind

A dependency built in our own environment with the help of the gradle autoconfigure plugin shall not be considered "external"

As it concerns a different repo and not this one I close this issue

I'm experiencing a bug that was introduced by pulling things apart. I don't think that this can be solely connected to only the internal part, nevertheless here is the link to the jira ticket for later reference: https://jira.cloudflight.io/browse/CBP-543


Update Get-SPOUnifiedGroup.md

Add detail for #4606

Docs Build status updates of commit 73e5e22:
:clock10: Full build: the average full build time is 12 min(s) 2 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 73e5e22:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Get-SPOUnifiedGroup.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit a1967e0:
:clock10: Full build: the average full build time is 12 min(s) 3 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit a1967e0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Get-SPOUnifiedGroup.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 4844c0d:
:clock10: Full build: the average full build time is 12 min(s) 3 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 4844c0d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-online/Get-SPOUnifiedGroup.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Unable to add the user journey on the signup sign in

[Enter feedback here]

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

ID: 781ff5da-dba7-1be3-b310-e74ddf3bbce0
Version Independent ID: d904416e-c5ba-89dd-c6d6-b8e6375b9c63
Content: REST API claims exchanges - Azure Active Directory B2C
Content Source: articles/active-directory-b2c/custom-policy-rest-api-claims-exchange.md
Service: active-directory
Sub-service: b2c
GitHub Login: @msmimart
Microsoft Alias: mimart

@Arjunguanas Thank you for your query . We use azure-docs repository for capturing feedback on the documentation . For any issues which may require troubleshooting we suggest you to post on the Microsoft QnA where we have a vibrant community of Azure experts who can help you on the query. We will try to help you with your query however if it requires detailed troubleshooting , We would suggest you to post it on the Microsoft QnA forums.

@Arjunguanas We will be closing this now, if you are still getting any error, please share the error so that we can help you accordingly.


graph conditional handles

Is there any information if graph conditional handles will be available in hip . A lot of Cuda 12.2 features aren't yet available in hip. But on hipblas there's lots of progress in mainline . Is there any info on this

@anishsheikh Do you still need assistance with this ticket? Thanks!

Unfortunately no, when i needed to know, i was working, now the female pm whom i was gonna suggest, have 2 children already,
and happily married left the job. has been an eternity. but thanks


[wip] feature - login api

Github Issue URL/Tags (required)
What's this PR do? Please give a technical summary (required)

[x] login api

Any references (stackoverflow …) (optional)

:+1: There are no linter violations.


Fix typo in clarity docs

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

A typo found in clarity docs under Dropdowns>Nested Menu> Description.
Expected behavior

"ine" in the last bullet should be "line".

Environment details

Angular version: 4.x.x

Clarity version:

OS and version:

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

Fixed https://github.com/vmware/clarity/commit/647a63906a788c51bc2a940420be45559023bc9a


[2.6.3] pass typers to norman stores

rancher/rancher#34721
rancher/rancher#30718
rancher/rancher#25487
See https://github.com/rancher/norman/pull/402 for details

@thedadams @snasovich @rmweir I had to change the resources, the inline json tag fixed the nested template object but it would overwrite the object meta fields with blank ones causing issues with the schema changes.  I tested these changes and it does not break anything because as far as the crd is concerned those fields were always there so the data did not change.


Record rule and Alert rule expression needs to take dynamic values for the labels

Record rule and Alert rule expression needs to take dynamic values for the labels
Example:
MetricName{"labels"=}
runtime generated value is not known during deployment time.
Required a promQL expression dynamic value for labels of metric
sum(MetricName{"labels"=})
Same for Alert Rules expression.

This sounds more like a usage question, PromQL is already powerful enough for any label handling you should need.
It makes more sense to ask questions like this on the prometheus-users mailing list rather than in a GitHub issue. On the mailing list, more people are available to potentially respond to your question, and the whole community can benefit from the answers provided.


Mention commandline options in readme

Thanks, I'll merge this in now and open a separate issue to improve the documentation later.


Cloudflare DNS-Validation almost fails

Describe the bug
Cloudflare DNS-Validation almost fails.

To Reproduce
It is a fresh "install" of win-acme on my Windows-Homeserver, where win-acme wasn't run before.
Platform:

OS: [Windows server 2022, English]
Version: [win-acme.v<IP_ADDRESS>1.x64.pluggable, plugin.validation.dns.cloudflare.v<IP_ADDRESS>1]

Additional context
Having that problem before, I remembered to look for:
"PreValidateDns": true,
But that was already set by default.

It would be helpful if you could (privately) share the unredacted log, to<EMAIL_ADDRESS>

I finally got the chance to look at your log and but I didn't find anything weird there. You might try increasing the timeout between retries and/or the number of retries to see if it's a timing issue, but I rather suspect that something in your network will be the cause of this.
win-acme directly contact the authoritative name servers at Cloudflare to check if the record is properly visible, before telling Let's Encrypt that we're ready to attempt validation. Those queries seem to go through ok (at least no timeouts or exceptions) but they do return empty responses.
Since DNS is not encrypted, it's imaginable that your security appliance is intercepting those queries and faking an empty response. I guess this is something some admins might do prevent malware from bypassing DNS based black lists.
I've added some extra logging to our DNS code to see if we might see some errors, if you wouldn't mind to try again: https://ci.appveyor.com/project/WouterTinus/win-acme-s8t9q/builds/47821422/artifacts

Thanks, the log doesn't report any errors, so I'm kind of lost here. Could you possibly try this from another network outside of the firewall?


Update French translation

Update of the French translation

Thanks for updating the translation! 👍
This will be incorporated into the next version.


AC voltage droop implementation and testing for ACDC power flow

Creates setting for applying Vq droop and Vac control for the AC side.
Includes new test case for a P2P HVDC link.
Extends unit tests to include the new test case.

Merging AC voltage - reactive power droop


Releng 2 4 5

done , https://forum.netgate.com/topic/131367/route-lost-by-carp-change/16

This PR looks very broken. The referenced issue is resolved already in pfSense, and there are many unnecessary commits here.
This site is not for support or diagnostic discussion, so please post on the Netgate Forum or the pfSense Subreddit if this is related to pfSense.
See Reporting Issues with pfSense Software for more information.

TY , done
https://forum.netgate.com/topic/131367/route-lost-by-carp-change/16


Added Hover Animation Button

fixed #455
Description👨💻
Added svg hover animated button
Type of change📄

[] New feature (non-breaking change which adds functionality)

Checklist✅

[] My code follows the style guidelines of this project
[] I have performed a self-review of my own code
[] I have added demonstration in the form of GIF/video file
[] I am an Open Source Contributor

Screenshots/GIF📷
https://github.com/Rakesh9100/Beautiify/assets/124780421/d7fa2e6e-c414-4751-a14c-dfe66e50b000

Merged ✨ @JATIN0926


IDP discovery should work if username does not equal email - Story Id: 119548885

Link: https://www.pivotaltracker.com/story/show/119548885
Labels:
Requester: Madhura Bhave
Owners: Madhura Bhave
Estimate: 1.0

Acceptance:

Enable idp discovery
Go to login page and enter email for user whose username != email
If internal IDP is matched, entering the right password should log the user in.

Link: https://www.pivotaltracker.com/n/projects/997278/stories/119548885/comments133997707
User: Madhura Bhave

@stummidi
Comment Id: 133997707

Link: https://www.pivotaltracker.com/n/projects/997278/stories/119548885/comments134010181
User: Madhura Bhave

@stummidi pausing this story because we cannot guarantee that the email entered on the first page will only map to one username because emails are not unique.
One alternative is to show the username and password fields one the internal IDP has been "discovered" based on email entered on the first page.
Comment Id: 134010181


Avatar refactor, move avatar code from models to models.avatars, remove duplicated code

Why this refactor
The goal is to move most files from models package to models.xxx package. Many models depend on avatar model, so just move this first.
And the existing logic is not clear, there are too many function like AvatarLink, RelAvatarLink, SizedRelAvatarLink, SizedAvatarLink, MakeFinalAvatarURL, HashedAvatarLink, etc. This refactor make everything clear:

user.AvatarLink()
user.AvatarLinkWithSize(size)
avatars.GenerateEmailAvatarFastLink(email, size)
avatars.GenerateEmailAvatarFinalLink(email, size)

And many duplicated code are deleted in route handler, the handler and the model share the same avatar logic now.

test LGTM


Fix goroutine blocking issue

What
This pr attempts to fix the gorutine blocking issue for dp search data finder in sandbox.
How to review
Please check if the changes make sense.
Who can review
Anyone except me.

suggests you should either just use the max

I don't think that matters really, default conveys its purpose.

defaultGoRoutineCount

I don't think it matters really , defaultGoRoutineCount conveys its purpose and it is just a default. So I guess that should do for the time being.

suggests you should either just use the max

defaultGoRoutineCount

I don't think it matters really , defaultGoRoutineCount conveys its purpose and it is just a default. So I guess that should do for the time being.

I mean, I had to read the code twice because I was expecting it to be different, but you have an approval, so I'll ditch mine.


Behavior variance of ReducerProtocol Effects

Description
It seems using ReducerProtocol has changed the behavior of Effect. I am quite confused, am I missing something silly, perhaps on how to use @Dependency? It may be isolated to using the function requirement rather than body but I have not tested.
I have asserted the liveValue is being used. We should expect effects here.
Checklist

[X] If possible, I've reproduced the issue using the main branch of this package.
[X] This issue hasn't been addressed in an existing GitHub issue or discussion.

Expected behavior
I expect to receive effects from the client.
Actual behavior
Only in using the ReducerProtocol I do not receive effects.
Steps to reproduce
This code below can be run as an independent application. The first @main uses the traditional TCA usage while the second uses the ReducerProtocol Notice the behavior of the apps are different. The subscription to the publisher on the second is not being received.
import Combine
import ComposableArchitecture
import Foundation
import SwiftUI

// MARK: Traditional

@main
struct TestApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView(
        viewStore: .init(.init(initialState: .init(count: 0), reducer: Main().reducer, environment: AClient.liveValue), removeDuplicates: { _,_ in false }))
    }
  }
}

struct ContentView: View {
  @ObservedObject var viewStore: ViewStore<Main.State, Main.Action>

  var body: some View {
    VStack {
      Text("Count: \(viewStore.state.count)")

      Button("Send") {
        viewStore.send(.send)
      }
    }
    .padding()
    .onAppear {
      viewStore.send(.subscribe)
    }
  }
}

struct Main {
  struct State {
    var count: Int
  }

  enum Action {
    case subscribe
    case incr
    case send
  }

  @Dependency(\.aclient) var aclient

  let reducer = Reducer<State, Action, AClient> { state, action, environment  in
    switch action {
    case .subscribe:
      return environment.subscribe()
        .map { _ in Action.incr }
        .eraseToEffect()
    case .incr:
      state.count += 1
    case .send:
      environment.send()
    }
    return .none
  }
}

struct AClient {
  var subscribe: () -> AnyPublisher<Void, Never>
  var send: () -> Void
}

extension AClient {
  static var testValue: AClient {
    .liveValue
  }
}

extension AClient {
  static var liveValue: AClient {
    let publisher = PassthroughSubject<Void, Never>()
    return Self(
      subscribe: { publisher.eraseToAnyPublisher() },
      send: { publisher.send(()) }
    )
  }
}

// MARK: ReducerProtocol Implementation

extension AClient: TestDependencyKey {}
extension AClient: DependencyKey {}

extension DependencyValues {
  var aclient: AClient {
    get { self[AClient.self] }
    set { self[AClient.self] = newValue }
  }
}

extension Main: ReducerProtocol {
  func reduce(into state: inout State, action: Action) -> Effect<Action, Never> {
    switch action {
    case .subscribe:
      return aclient.subscribe()
        .map { _ in Action.incr }
        .eraseToEffect()
    case .incr:
      state.count += 1
    case .send:
      aclient.send()
    }
    return .none

  }
}

@main
struct TestApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView(viewStore: .init(.init(initialState: .init(count: 0), reducer: Main()), removeDuplicates: { _,_ in false }))
    }
  }
}

The Composable Architecture version information
0.42.0
Destination operating system
macOS
Xcode version information
Xcode 14.0.1
Swift Compiler version information
1.62.8 Apple Swift version 5.7 (swiftlang-<IP_ADDRESS>.4 clang-14<IP_ADDRESS>)
Target: x86_64-apple-macosx12.0

Hey @JacksonUtsch.
This is because each time you're accessing AClient.liveValue, you're creating a new value with a new PassThroughSubject, so you end-up messaging the wrong instance. In the first case, you did capture one value when you created your ContentView.
You can fix this by storing the liveValue instance:
extension AClient {
  static var liveValue: AClient = {  // add `=`
    let publisher = PassthroughSubject<Void, Never>()
    return Self(
      subscribe: { publisher.eraseToAnyPublisher() },
      send: { publisher.send(()) }
    )
  }()                                // add `()`
}

Ah that is great it was just a silly mistake on my part! I appreciate the help. Thought it might be something small.

This is an easy enough mistake that we should probably think about it more... I think @tgrapperon pointed out that SwiftUI caches environment values on first access, so we should maybe do the same.

@stephencelis I think this is what I deduced when I spotted @Environment accessing Equatable conformance of one of my Environment value, which makes sense only if you have two values to compare. So I think that @Environment keeps one value around, not to return it, but to compare it with the new one it extracts from EnvironmentValues an decide if it needs to invalidate the View.
Given the way TCA works, I think the safest would probably to save the default on first access in DependenciesValue if no explicit value was found. I feel it should work as expected regarding .tranformDependencies and .dependencies. I also think that this is what SwiftUI does, but I don't have any direct proof of that yet. I think this is required if they want to correctly diff callable dependencies like dismiss for example. Wrapping functions in structs with callAsFunction is not something we're currently doing, but this is only required if diffing is involved, which is not the case yet for TCA.
I can prepare a PR where dependencies values are cached at the DependenciesValue's level on first access.

@stephencelis Well, it is not as straightforward as I initially though, as you effectively need to be able to mutate DependencyValue on get and from any task.

@tgrapperon I think to support this we'd need to break "out" of the safety of the task local to some fallback mutable store.

I'm slightly worried about introducing a necessary lock. But performance may not be impacted that much. I'll prepare a PR and we'll check.

@tgrapperon I think worst case we could detect the problem in debug builds and runtime warn instead.

@stephencelis This is something that I envisaged, but I don't think it can work without wrapping closures dependencies in structs to compare successive values (nor drilling down into dependencies using nested KeyPath). And for this to work, we need some fallback storage anyway. I'll sketch something and we'll probably see more clearly what are the edge cases/limitations.

@tgrapperon I've been using a version of DependenciesValues that works with a lock so I can use it in a non TCA project. Haven't checked performance though but it seems fine so far.

@stephencelis Good to know I'm not the only one, I've sadly made this mistake before this occurrence as well 🙈

I've submitted #1510. Let me know what you think.


Prediction Api- issue while trying to login

I am using this library for perfomaing login and send query for getting prediction results. I am using xampp with php7, when login i get the allow access page and when i click allow the following error on y page. Could you please help
Fatal error: Uncaught TypeError: Argument 1 passed to Google\Auth\OAuth2::fetchAuthToken() must be callable, object given, called in C:\xampp\htdocs\prediction\google-api-php-client\src\Google\Client.php on line 175 and defined in C:\xampp\htdocs\prediction\google-api-php-client\vendor\google\auth\src\OAuth2.php:425 Stack trace: #0 C:\xampp\htdocs\prediction\google-api-php-client\src\Google\Client.php(175): Google\Auth\OAuth2->fetchAuthToken(Object(GuzzleHttp\Client)) #1 C:\xampp\htdocs\prediction\google-api-php-client\src\Google\Client.php(155): Google_Client->fetchAccessTokenWithAuthCode('4/WnvpnSO5HEhNF...') #2 C:\xampp\htdocs\prediction\predict_new.php(23): Google_Client->authenticate('4/WnvpnSO5HEhNF...') #3 {main} thrown in C:\xampp\htdocs\prediction\google-api-php-client\vendor\google\auth\src\OAuth2.php on line 425

This issue may no longer be relevant due to its age. If that is not the case let us know and we will re-open.


migrate travis CI builds from .org to .com

Problem:
The Travis CI in-progress builds don't get displayed on github commit or pull request page until the build is complete. This has changed in recent months. I believe that this is because the nutrinolabs/xrdp repository is using the legacy travis-ci.org integration.
There is TravisCI documentation for migrating open source projects from travis-ci.org to travis-ci.com and integrating with github via GitHub actions.
The TravisCI migration docs says that it's still in Beta, but the migration seems to have been in progress since 2018, so it's likely safe to migrate.
I have followed the instructions for migrating the aquesnel/xrdp repository to travis-ci.com and it solved the github integration problem. See example build: https://github.com/aquesnel/xrdp/runs/1088065752

Looks nice. I didn't know that.

Apparently I was wrong about the travis CI builds not displaying in github only while the build is in progress. It appears instead that the build never gets linked to triggering commit or pull request even tough the build is still triggered.
Example commit that triggered a travis CI build but is not displayed on the github UI

github commit: https://github.com/neutrinolabs/xrdp/pull/1633/commits/8c5d4c4337b91debf4f11a9d5de202603a72b6c0
travis CI build: https://travis-ci.org/github/neutrinolabs/xrdp/builds/726144015

Also, I had forgotten to mention in my original comment, that the migration of the aquesnel/xrdp repository from travis-ci.org to travis-ci.com did not require any code changes. The migration does require that an administrator of the neutrinolabs/xrdp repository connect the repository to a travis-ci.com (free open-source) account.

I'll close this one now we've moved to GitHub actions - it's been somewhat overtaken by events.


Relationships failing when model is not included

Error:
Generation failed: TypeError: Cannot read property 'getTypeName' of undefined
Model:
"""
@model
"""
type Task {
  id: ID!
  title: String!
  description: String!
  status: TaskStatus
  assigne: User
}

type User {
  id: ID!
  name: String
}

Version 0.11.2

Taking this.

I guess this is validation issue only as model is missing annotation

Yes I see it as missing validation.

There is a blind-spot in the validation of the data models between validation of the models and validation of relationships.
Try to form a relationship with a non-model type:
"""
@model
"""
type Task {
  id: ID!
  title: String!
  description: String!
  """
  @oneToMany field: 'task'
  """
  assigned: User
}

# """
# @model
# """
type User {
  id: ID!
  name: String
}

The relationship builder catches the issue and validates this successfully:

Generation failed: Error: Task.assigned is marked as a relationship field, but type User is missing the @model annotation.

Right now, Graphback only process relationship fields which are explicitly annotated with @oneToOne/@oneToMany so Task.assigned is not even validated anywhere.
Approach 1
Adding support for implicit relationships (see https://github.com/aerogear/graphback/issues/936) would subsequently validate the missing @model annotation.
Approach 2
The most appropriate fix for this right now would be to perform some validation on the models and check if the assigned: User type is a model.
This would catch an error early in the plugin.

Good writing. I will hold of with fixing this as we need to get some approach for the MongoDB nested data that is not relationship that will invalidate most of the stuff we have here. I will suggest book some technical call in this week to cover it

Temporary fix will be to suppress information and put the right error message

Closing in favour of #936

ping @machi1990

Resolved in https://github.com/aerogear/graphback/issues/1432


bootstrap datepicker popup scroll on mouse scroll

This repo is no longer actively monitor or supported. All future work is being done to https://github.com/tempusdominus/bootstrap-3

bootstrap datepicker popup scroll on mouse scroll issue

Hi, I'll need more info than a simple message and a not so clear image

Hi, I'll be closing this as there's no feedback from original poster, feel free to re open it if need it.


Add appVersion key for spotify-docker-gc

The key "appVersion" is needed for ci testing, it's missing in this yaml. That will cause testing failure.

@mgoodness


Fix: pod lint

:scroll: Description

:bulb: Motivation and Context

:green_heart: How did you test it?
:pencil: Checklist

[ ] I reviewed submitted code
[ ] I added tests to verify changes
[ ] I updated the docs if needed
[ ] All tests passing
[ ] No breaking changes

:crystal_ball: Next steps

Codecov Report

Merging #349 (6739fdf) into main (15e1f53) will decrease coverage by 0.04%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #349      +/-   ##
==========================================
- Coverage   89.60%   89.56%   -0.05%
==========================================
  Files          51       46       -5
  Lines        1636     1466     -170
==========================================
- Hits         1466     1313     -153
+ Misses        170      153      -17

Impacted Files
Coverage Δ

flutter/lib/src/file_system_transport.dart

.../lib/src/navigation/sentry_navigator_observer.dart

flutter/lib/src/sentry_flutter.dart

flutter/lib/src/widgets_binding_observer.dart

flutter/lib/src/sentry_flutter_options.dart

Continue to review full report at Codecov.

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


arrow key navigation in jupyter notebooks

jupyter notebooks capture arrow key events which prevents the report from seeing them and breaks using arrow keys to move to the next tab or sample table cell. this pr fixes this problem.
please give it a try on your preferred notebook-like environment if you use one and report where it breaks! we probably need to add some environments to the list that we detect and which trigger the special handling of keyboard events added by this pr

Is this one ready for merging?

yes I think so! we checked jupyter notebooks, jupyterlab, vscode, google colab and kaggle. if something else comes up I'll open another PR. thanks!


Modify transit XDP to fork action based on gateway check

The transit XDP on the gateway host behaves differently from it on none-gateway hosts. This host is to add the code to split function based on whether the XDP is on the gateway or not.
Determine whether we are on a gateway
if (pkt->ip->daddr == gateway_host_ip) {
...
}

gateway_host_ip is obtained from work in #63.
On the gateway host

If pkt is a valid geneve pkt

[x] If dst ip is internal, process as usual. This is assuming gateway host could also run normal pods. Gateway host will not be bouncer or divider of internal subnets but still could accept traffic destined to pods.
[x] If dst ip is external (remote subnet), send to user space

[x] if src ip is not a valid geneve pkt (e.g. sent from another gateway), pass pkt to user space

this is done already by XDP

On none-gateway host ("Muggle" host)

works as normal Mizar

pending #63 for actual control plane data to use


[Web] Can load web application in nginx

Hi.
I've built a Flutter web app, but I can't access it if I deploy it in nginx.
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.10.3, on Microsoft Windows [Version 10.0.19044.1586], locale it-CH)
[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.7)
[!] Android Studio (not installed)
[√] IntelliJ IDEA Community Edition (version 2021.3)
[√] VS Code (version 1.63.2)
[√] Connected device (3 available)
[√] HTTP Host Availability

! Doctor found issues in 1 category.

Logs in the console:
Icon-192.png:1          GET http://localhost:8080/icons/Icon-192.png 403 (Forbidden)
localhost/:1 Error while trying to use the following icon from the Manifest: http://localhost:8080/icons/Icon-192.png (Download error or resource isn't a valid image)
flutter_service_worker.js?v=3484589089:1 Uncaught (in promise) TypeError: Failed to execute 'addAll' on 'Cache': Request failed
(index):91 Failed to load app from service worker.

Hi.
I've packaged the app in release mode (so that's not minified) and that's the error on the console
Failed to load resource: the server responded with a status of 403 (Forbidden)
localhost/:1 Error while trying to use the following icon from the Manifest: http://localhost:8080/icons/Icon-192.png (Download error or resource isn't a valid image)
(index):91 Failed to load app from service worker. Falling back to plain <script> tag.
(anonymous) @ (index):91
:8080/assets/FontManifest.json:1          Failed to load resource: the server responded with a status of 403 (Forbidden)
main.dart.js:12407 Uncaught Failed to load asset at "assets/FontManifest.json" (403)
    at Object.wrapException (http://localhost:8080/main.dart.js:7567:17)
    at http://localhost:8080/main.dart.js:42814:27
    at _wrapJsFunctionForAsync_closure.$protected (http://localhost:8080/main.dart.js:10118:15)
    at _wrapJsFunctionForAsync_closure.call$2 (http://localhost:8080/main.dart.js:65144:12)
    at _awaitOnObject_closure0.call$2 (http://localhost:8080/main.dart.js:65138:25)
    at _RootZone.runBinary$3$3 (http://localhost:8080/main.dart.js:67591:18)
    at _FutureListener.handleError$1 (http://localhost:8080/main.dart.js:65683:21)
    at _Future__propagateToListeners_handleError.call$0 (http://localhost:8080/main.dart.js:66018:49)
    at Object._Future__propagateToListeners (http://localhost:8080/main.dart.js:10362:77)
    at _Future._completeError$2 (http://localhost:8080/main.dart.js:65848:9)

Interesting enough, with the Brave browser the website is rendered correctly (even though in the logs of nginx I can still see the 403s).

Hi.
I've tried using the Python web server with the following Dockerfile definition:
ARG HTTP_PORT=8080
ARG PYTHON_VERSION=3.9.11-alpine3.14
FROM python:$PYTHON_VERSION
WORKDIR /app
ADD phone_book/build/web/ /app/
ENV HTTP_PORT=$HTTP_PORT
EXPOSE $HTTP_PORT
RUN adduser -D app && chown -R app:app /app
USER app
CMD python3 -m http.server -d /app $HTTP_PORT

but the situation is even worse since I get just an empty response.

I managed to fix the issue with the Python HTTP server, but the one with nginx still remains...

Hi @cdprete, Thanks for filing the issue. Please see  https://github.com/flutter/flutter/issues/90712#issuecomment-931601183 and see if any of those links help deploy in nginx.  However deploying to different servers is supposed to be documented and the feature request is being tracked https://github.com/flutter/flutter/issues/89763
Closing this issue as the duplicate of the above linked issue.

Hi @maheshmnj.
I'll give those links a try, but I don't think it's the same issue since in the suggested ticket the error is a 404 and I get a 403 instead.
I've more the impression that Flutter (actually the JS worker) tries to load the resources using absolute paths instead of relatives and probably it doesn't have access to some of the ancestors (since they belongs to root).

Somehow the issue seems to be caused by the dockerfile-maven-plugin which I'm using for building the image...
If I manually build it with docker build -t something . it works file...

Indeed a bug from the plugin: https://github.com/spotify/dockerfile-maven/issues/312
Doh!

Thanks for the update, The reason I pointed you to that issue was, It tracks the documentation required to configure the flutter web app on different servers.

I configured in the past frontends with nginx, that's why I was (badly) surprised :)

Well, the dockerfile-maven-plugin is not maintained anymore, so there are different alternatives:

run the Docker commands directly with the exec-maven-plugin
use another plugin (i.e.: https://www.eclipse.org/jkube/ - PS I don't have any connection with the project)
build the image manually
use another HTTP Web Server (i.e. the one from python works fine, although it's not meant for production environments)
[OVERKILL]: Create a web application (i.e. in Spring Boot) that serves the website as static resources


Is Windows supported?

Just installed and run it and get a FIND: Parameter format not correct error:

@spences10 nope! only unix systems (linux/mac) but I'm planning on creating a windows version! 😄

@bntzio is the Windows Linux Bash Shell that's available in Windows 10 going to help with this?

@spences10 i don't really know, i suppose it should work - Bash on Ubuntu on Windows - but i'm not 100% sure, i'll check it some time since i don't own a windows machine.

@bntzio I'll be setting up a Windows machine in the next few days that I'm going use bash as the default option. I'll let you know how it goes 👍

Awesome, let me know how it goes! 😄
On Jul 19, 2017, 01:12 -0500, Scott Spence<EMAIL_ADDRESS>wrote:

@bntzio I'll be setting up a Windows machine in the next few days that I'm going use bash as the default option. I'll let you know how it goes 👍
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


refactor: js logic for swapping tabs

Description
Refactors the logic for switching tabs in HTML for both the main tabs and the example commit fixes tabs.
The selectors we were using were not specific enough so when switching between the main tabs, we would remove the is-selected class from the example commit fixes tabs too. By adding a more specific class to each tab and selecting based on that, we don't need to have complicated logic for remembering what the last selected tab was. This greatly simplifies the code in the JS.
Checklist

[ ] Tests added and all succeed
[x] Linted
[ ] README.md updated, if user-facing
[ ] License file updated, if new 3rd-party dependency is introduced

🚨After having merged, please update the CLI go.mod to pull in latest language server.
Screenshots / GIFs
https://github.com/snyk/snyk-ls/assets/81559517/14bcc012-0a84-410a-970f-8f5aee03ae1a

Yep I have't updated the cli to include the latest snyk-ls yet so that explains why IntelliJ doesn't have it yet @cat2608 😄


fix(worker): hide "The emitted file overwrites" warning if the content is same

Description
The build error in #10057 was fixed by #15469. This PR suppresses the "The emitted file overwrites" warning by skipping this.emitFile if the filename and the content is same.
If the filename is same but the content is different and the warning happens, then I think the user should configure worker.rollupOptions.output.chunkFileNames.
fixes #10057
Additional context

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines, especially the Pull Request Guidelines.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[x] Update the corresponding documentation if needed.
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

/ecosystem-ci run


Status Descriptions sent by Functions that contain special characters | are corrupted by i18n after v0.5.0

Bug Report
Installation Method
Open-WebUI 0.5.1, via Docker
Environment

Open WebUI Version: 0.5.1
Operating System: Docker / Mac OS
Browser (if applicable): Chrome

Confirmation:

[X] I have read and followed all the instructions provided in the README.md.
[X] I am on the latest version of both Open WebUI and Ollama.
[ ] I have included the browser console logs.
[ ] I have included the Docker container logs.
[ ] I have provided the exact steps to reproduce the bug in the "Steps to Reproduce" section below.

Expected Behavior:
Expected to continue seeing the full original status string as it was sent by the pipe function
Actual Behavior:
Seeing status string containing only some of the tokens (sometimes differently), likely coming from i18next "Interpolation" of plurals.
Description
Bug Summary:
After the recent update, status descriptions generated by some functions that contain characters like | are not displayed correctly.
Example, status string generated by a pipe function with cost tracking controls:
3.90s | 241 input tokens | This request: $0.00 | Chat total: $0.00 | Completed
How it is rendered by Open WebUI with i18n:
$0.00 | Chat total. $0.00 | Completed
I was able to trace the issue down to the following line in ResponseMessage.svelte
  {:else}
	  {$i18n.t(status?.description)}
  {/if}

Previously (till 0.4.8), status description was not passed through i18n.   Now, i18n is interpreting some characters like | as special characters and corrupting the entire message. This isn't right.
Reproduction Details
Create a function with the following code
from pydantic import BaseModel, Field

class Pipe:
    class Valves(BaseModel):
        pass

    def __init__(self):
        self.type = "pipe"
        self.id = "demo_status_issue"
        self.name = "demo_status_issue"

        self.valves = self.Valves()

    async def pipe(
        self,
        body,
        __event_emitter__,
    ):

        await __event_emitter__(
            {
                "type": "status",
                "data": {
                    "description": "3.90s | 241 input tokens | This request: $0.00 | Chat total: $0.00 | Completed",
                    "done": True,
                },
            }
        )

        return "Hello World"

And talk to this "model"
Logs and Screenshots

Should be addressed with #8130

Thanks!


Too Many redirects

Hi there, sorry for post this issue, may i don't have enough experience with phpCAS.
but i got too many redirects after trying to connect my web service with CAS server ver 4

using this configuration:
/**
@ file     config.php
@ category Authentication
@ package  PhpCAS
@ author   Joachim Fritschi<EMAIL_ADDRESS>@ author   Adam Franco<EMAIL_ADDRESS>@ license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
@ link     https://wiki.jasig.org/display/CASC/phpCAS
 **/

$phpcas_path = 'vendors/CAS-1.3.5';
// Full Hostname of your CAS Server
$cas_host = 'sso.mycasserver.com';
// Context of the CAS Server
$cas_context = '/cas';
// Port of your CAS server. Normally for a https server it's 443
$cas_port = 443;
// Path to the ca chain that issued the cas server certificate
$cas_server_ca_cert_path = 'user/home/mywebsite/ssl/certs/mysslcert.crt';

// The "real" hosts of clustered cas server that send SAML logout messages
// Assumes the cas server is load balanced across multiple hosts
$cas_real_hosts = array('mycasserver.com');
// $cas_real_hosts = array('aas-cas-01.mycasserver.com', 'aas-cas-02.mycasserver.com');

// Client config for cookie hardening
$client_domain = 'mywebsite.com';
$client_path = 'phpcas';
$client_secure = true;
$client_httpOnly = true;
$client_lifetime = 0;

///////////////////////////////////////////
// End Configuration -- Don't edit below //
///////////////////////////////////////////

// Generating the URLS for the local cas example services for proxy testing
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    $curbase = 'https://' . $_SERVER['SERVER_NAME'];
 } else {
    $curbase = 'http://' . $_SERVER['SERVER_NAME'];
 }
 if ($_SERVER['SERVER_PORT'] != 80 && $_SERVER['SERVER_PORT'] != 443) {
    $curbase .= ':' . $_SERVER['SERVER_PORT'];
}

$curdir = dirname($_SERVER['REQUEST_URI']) . "/?_app=dashboard&";

// CAS client nodes for rebroadcasting pgtIou/pgtId and logoutRequest
$rebroadcast_node_1 = 'https://mycasserver.com/logout';
$rebroadcast_node_2 = 'http://mywebsite.com/?_app=logout';

// access to a single service
$serviceUrl = $curbase . $curdir . '?_app=dashboard';
// access to a second service
$serviceUrl2 = $curbase . $curdir . '?_app=dashboard';

$pgtBase = preg_quote(preg_replace('/^http:/', 'https:', $curbase . $curdir), '/');
$pgtUrlRegexp = '/^' . $pgtBase . '.*$/';

$cas_url = 'https://' . $cas_host;
if ($cas_port != '443') {
    $cas_url = $cas_url . ':' . $cas_port;
}
$cas_url = $cas_url . $cas_context;

// Set the session-name to be unique to the current script so that the client script
// doesn't share its session with a proxied script.
// This is just useful when running the example code, but not normally.
session_name(
    'session_for:'
    . preg_replace('/[^a-z0-9-]/i', '_', basename($_SERVER['SCRIPT_NAME']))
);
// Set an UTF-8 encoding header for internation characters (User attributes)
// header('Content-Type: text/html; charset=utf-8');

my Login Page :
this page has already included CAS library and config file
   phpCAS::client(CAS_VERSION_2_0, $cas_host, $cas_port, $cas_context);
    phpCAS::setNoCasServerValidation();
    // force CAS authentication
    phpCAS::forceAuthentication();
    // at this step, the user has been authenticated by the CAS server
    // and the user's login name can be read with phpCAS::getUser().
    // logout if desired
    if (isset($_REQUEST['logout'])) {
        phpCAS::logout();
    }
    $cas_attr = phpCAS::getAttributes();
    $cas_ver = phpCAS::getVersion();
    $cas_usr = phpCAS::getUser();
    echo "CAS v.".$cas_ver.", CAS  Attributes: ".$cas_attr.", CAS User: ".$cas_usr;

but i got nothing print from those variables $cas_ver, $cas_attr, $cas_usr !
this is phpCAS log debug :
5A46 .START (2018-05-24 00:27:54) phpCAS-1.3.5+ ****************** [CAS.php:468]
5A46 .=> phpCAS::client('3.0', 'sso.mycasserver.com', 443, '/cas') [login.php:59]
5A46 .|    => CAS_Client::__construct('3.0', false, 'sso.mycasserver.com', 443, '/cas', true) [CAS.php:360]
5A46 .|    |    Session is not authenticated [Client.php:938]
5A46 .|    |    Ticket 'ST-900807-tF3DgZomSEMOcHAQKlDA-aas-cas-01.mycasserver.com' found [Client.php:1020]
5A46 .|    <= ''
5A46 .<= ''
5A46 .=> phpCAS::setNoCasServerValidation() [login.php:60]
5A46 .|    You have configured no validation of the legitimacy of the cas server. This is not recommended for production use.

Generally a "too many redirects" error is caused by broken session-handling on the application side. It may be that your application server isn't able to store session data. Another common cause is that the application is managing the session id, but phpCAS is also configured to manage the session-id (the last boolean argument to phpCAS::client()).
To verify the authentication process, please try one of the simple example scripts at: https://github.com/apereo/phpCAS/blob/master/docs/examples/example_simple.php
If you are able to get the example authenticating, but not the application, then it is likely an issue in the application's session handling.

No activity for 6 month


Only create DNS records for services explicitly annotated

I would like to only have explicitly annotated services to have DNS records associated with their load balancer, but if zalando.org/dnsname is not set, it will fallback to --kubernetes-format. I would prefer to have an configuration option which let's me disable this by requiring mate to only create DNS for services I explicitly tell it to.
Perhaps a flag for an annotation to use as an indicator could be used. Ex you could have an annotation zolando.org/dns.class which has a value of mate by default. This would be similar to ingress-class for the nginx ingress, which allows running multiple ingress controllers. https://github.com/kubernetes/ingress/tree/master/controllers/nginx#running-multiple-ingress-controllers
When configured, mate would only look at services with zolando.org/dns.class=mate, where mate could be something the user specifies on the controller (via a flag or env var) and on the annotation. This feature would allow for running multiple instances of mate in a single cluster, and also allows the admin to disable mate (by not setting the zolando.org/dns.class annotation) for particular services.

Hi @chancez,
we recently implemented this feature and it's part of mate v0.6.1 but undocumented :(
Have a look at this PR: https://github.com/zalando-incubator/mate/pull/84
In a nutshell, you can configure mate to ignore all services and ingresses that are not tagged with a particular annotation and value, basically allowing exactly what you want by using
./mate ... --kubernetes-filter=zalando.org/dns.class=mate

Great, that would do what I want I believe then.

In all fairness, --kubernetes-filter is mentioned in the release logs of v0.6.0, however it is worth mentioning in the README as well :)

I created an issue for the missing docs: https://github.com/zalando-incubator/mate/issues/91
@chancez let us know if usage of the flag solved your issue.

docs for the flag https://github.com/zalando-incubator/mate/pull/92

I tried this functionality and my kuberntes deployment looks like this:
Args:
--producer=kubernetes
--kubernetes-format={{.Namespace}}-{{.Name}}c.tropo.com
--consumer=aws
--kubernetes-filter external-dns.alpha.kubernetes.io/controller=mate
--aws-record-group-id=mate-managed

however immediately the container goes into a back off crash loop and the only logs I get out are:
2017-03-14T19:12:49.284776893Z mate: error: unknown long flag '--kubernetes-filter external-dns.alpha.kubernetes.io/controller', try --help
Where did I screw up?  I'm using release v0.6.1

missing = sign ?

I just double checked the Args look EXACTLY like they do in my original post.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mate
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mate
      annotations:
        iam.amazonaws.com/role: mate-route53-role
    spec:
      containers:
      - name: mate
        image: registry.opensource.zalan.do/teapot/mate:v0.6.1
        env:
        - name: AWS_REGION
          value: us-west-2
        args:
        - --producer=kubernetes
        - --kubernetes-format={{.Namespace}}-{{.Name}}c.tropo.com
        - --consumer=aws
        - --kubernetes-filter external-dns.alpha.kubernetes.io/controller=mate
        - --aws-record-group-id=mate-managed

I meant have u tried  - --kubernetes-filter="external-dns.alpha.kubernetes.io/controller=mate" ?

AH HA! That's what it was.  I was hoping that this could help my rate limiting problem but doesn't seem too.  I continually get lots that show mate is querying DNS and attempting to change records  to zones that it has not business in... I'll open another bug.
thanks!


Server-side Advanced Search Results Sorting

Summary Change Description
I have re-introduced the ability to sort the advanced search results, only now using server-side mechanisms.  I also fixed an issue with the "toggle all" column switch control to be able to remembered from page to page.  With that, I realized that there needed to be a way to reset the column switch selections back to default, so I added a "Reset" button to the controls over the table at the top right.
Unfortunately, with server-side sort, it's no longer possible to sort the calculated field columns, because the .order_by() method doesn't support it.
Also fixed the peakdata column header issue.
And I reduced code redundancy by having getAllBrowseData call performQuery.
Affected Issue Numbers

Resolves #336
Resolves #365

Code Review Notes
I addressed issues from the previous PR, so you can assess those changes and re-comment in this PR if there's still an issue.
I don't like how the javascript methods are mixed among different templates.  I'd wanted to keep pagination-associated methods' calls (and definitions) in pagination.html and cookie-related method calls in display.html, but for various reasons, had to put them redundantly in the format templates.  For example, calls to updateAllColumnSwitchingCookies (which I tried to encapsulate in display.html) had to be in the format templates because when I tried to add a call using bootstrap table's onAll event in display.html, it never got called.  I suspect that setting that onAll event callback only supports a single function call.  Maybe there's a way to get around that?
I couldn't figure out how to delete cookies using javascript.  The code I found online didn't seem to work.  I'm probably getting the cookie incorrectly, which likely requires explicitly checking its expiry.
All the cookie updates now get triggered using BST's onAll event.  This annoyingly triggers a bunch of repeated updates when only a single column is switched, but there's no provided event by BST to otherwise capture the "Toggle All" event.  It may be possible to us the alternative event trigger strategy mentioned in their doc.  I'd tried using onPostBody too, but I think when I'd tried that, I had an unrelated bug, though I didn't try it again after finding and fixing that bug.  Ultimately, I decided it wasn't worth optimizing because it's imperceptibly fast anyway, even with the probably pointless calls (though I'm not entirely certain they are pointless).
Checklist

[x] All issue requirements satisfied (or no linked issues)
[x] Linting passes.
[x] Migrations created & committed (or no model changes)
[ ] Tests implemented (or no code changes)
[x] All tests pass

Take another look if you want to see the changes I made based on the comments.

OK. I'm going to merge. Everyone approved once and the only minor changes were to implement the issues from the review, so I don't think it's enough to really justify another round review...


Handle exceptions in the main thread

Attempt to fix #1 .
For some reason, the entire process does not exit at the end, even though it seems all the threads complete successfully.
Perhaps this has something to do with the daemonic status of the worker threads started in the executor. Perhaps, this is just the interpreter itself getting confused when the main thread is gone but other threads are running. I really can't tell.

Rewritten to use polling of the main thread alive status instead of precise notification.

Coverage decreased (-0.8%) to 93.143% when pulling 688a0642098a708a26de9e5dd4d3fab946e5ef28 on shutdown into c750c77b57e0fe9adbba525d5850ec1cb2e50e31 on master.


Does it support for non sequential word search?

if title is "Does it support for non sequential word search"
if i search "it support for" it'll return above title
if i search "Does for support" it'll not return

It does not.

Why?

Ask the author (or better yet submit a PR adding it, lol)

Lol.


MapView not working on web

This needs to be implemented

waiting on https://github.com/orgs/koha-app/projects/2#card-65923928


NotImplementedException in EETypeNode.OutputBaseSize

I just added the Autofac dependency injection framework to my CoreRT app, and now ILC.exe is crashing. Here is the backtrace it gives me:
Unhandled Exception: System.NotImplementedException: The method or operation is not implemented.
     at ILCompiler.DependencyAnalysis.EETypeNode.OutputBaseSize(ObjectDataBuilder& objData)
     at ILCompiler.DependencyAnalysis.EETypeNode.GetData(NodeFactory factory, Boolean relocsOnly)
     at ILCompiler.DependencyAnalysis.ObjectNode.GetStaticDependencies(NodeFactory factory)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2.GetStaticDependenciesImpl(DependencyNodeCore`1 node)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2.GetStaticDependencies(DependencyNodeCore`1 node)
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2.ProcessMarkStack()
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2.ComputeMarkedNodes()
     at ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2.get_MarkedNodeList()
     at ILCompiler.Compilation.Compile()
     at ILCompiler.Program.Run(String[] args)
     at ILCompiler.Program.Main(String[] args)

Some brief investigation reveals that the offending line of code is here. I will update this issue as soon as I know what type is causing the problem.

The type in question is the TService in IRegistrationBuilder.As<TService>(). The source for this method can be found here.

Using IRegistrationBuilder.As(params Type[]) gives me the same crash as when I use the generic version.

We shouldn't be creating EETypes for generic parameters. If you can set a conditional breakpoint on the EETypeNode's constructor and set the condition to trigger when we're creating it (e.g. type is GenericParameterDesc) that might give us more info about the root cause.
That said, within the scope of this issue we'll probably only find a better way to error out early. There's no support for generic interface methods in the compiler right now (#631) and failing to compile and/or link is expected.
Autofac will likely also take offense about reflection not working either (#511). Activator.CreateInstance, MethodInfo, FieldInfo, none of this works.

Generic virtual methods are tracked elsewhere (#631).


Option to connect to Bluewallet

Hi,
Bluewallet (https://bluewallet.io/) is a wallet that support lightning. It's a hosted wallet.
I think Joule could have an option to connect to Bluewallet (https://medium.com/bluewallet/bluewallet-brings-zero-configuration-lightning-payments-to-ios-and-android-30137a69f071)
Thanks.

I don't see any readily-available API for accessing the user's account. It looks like they've got a custom solution called LndHub for allowing many users to use a single LND node, but the docs are pretty sparse.

Oh hey!
API specs are here https://github.com/BlueWallet/LndHub/blob/master/doc/Send-requirements.md
And the reference client implementation is here: https://github.com/BlueWallet/BlueWallet/blob/master/class/lightning-custodian-wallet.js
Complete acceptance tests suite is here https://github.com/BlueWallet/BlueWallet/blob/master/LightningCustodianWallet.test.js
API specs need a little cleanup, but I think the client can be used right away (its js, and we use it in ReactNative).
LndHub is just a simple wrapper around LND, can be easily hosted on Heroku. You got it right, it is for a single LND node to serve several users.

Awesome, thanks for the details. So for BlueWallet users, you have a default hosted LndHub instance? Is there a way a user can give me credentials for that?

Yes, default hosted instance is lndhub.herokuapp.com (you can see it in
sources). User can easily export his credentials from Bluewallet (open
wallet->options->export).
On Wed, Jan 2, 2019 at 21:05 wbobeirne<EMAIL_ADDRESS>wrote:

Awesome, thanks for the details. So for BlueWallet users, you have a
default hosted LndHub instance? Is there a way a user can give me
credentials for that?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/wbobeirne/joule-extension/issues/128#issuecomment-450984840,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB0x-cPkmvYuQqgRx9fvgvt4pFFLXkg9ks5u_R82gaJpZM4Zmso7
.

@wbobeirne Telegram: https://t.me/bluewallet

@wbobeirne hit me up on https://t.me/overtorment


[v1.32.0] --result-wait-timeout doesn't do anything

Describe the bug
My maestro cloud runner was timing out and gave me the message
To extend the timeout, run maestro with this option `maestro cloud --result-wait-timeout=<timeout in minutes>

Running maestro cloud --result-wait-timeout=120 yields
Unknown option: '--result-wait-timeout=120'

Looks like the real option might be --timeout as per https://github.com/mobile-dev-inc/maestro/commit/dc699a466c83f6492b9ac830a38abc9f6d33df57#diff-0a19fdf026f7d770725b2d8ce1bc06f34eeef7050f46e0ce0f11c33f9ebfd38cR149

Closing this out as this will go out in the next release


Fix package interdependencies

When building the packages, some were complaining about not finding others' include files. This PR fixes those errors for devel but probably not for install (e.g. install target for HighFive is missing).

Thank you for the pull request and fixing that.


[BUG] Generation failing with Generator Error: Installation failed

Describe the bug.
Whenever I try to generate anything, I get Generator Error: Installation failed
Here's an example I tried from the website:
asyncapi generate fromTemplate https://bit.ly/asyncapi @asyncapi/html-template -o example
┌  AsyncAPI Generator
│
◇  Generation failed
Generator Error: Installation failed

Expected behavior
Generations work correctly
Screenshots

How to Reproduce

Install asyncapi with bun
$ asyncapi generate fromTemplate https://bit.ly/asyncapi @asyncapi/html-template -o example
Use ^+C (Mac) to quit in the middle of the generate operation
Try generating anything and observe error

Note I've uninstalled and reinstalled the CLI multiple times since and found the error to be durable
🥦 Browser
Google Chrome
👀 Have you checked for similar open issues?

[X] I checked and didn't find similar issue

🏢 Have you read the Contributing Guidelines?

[X] I have read the Contributing Guidelines

Are you willing to work on this issue ?
None

It is working fine in my machine, can you share a screen recording of it @talglobus

please run generation with --debug flag and share the log

Happens for me too, on multiple projects.  Did not happen before, so I suspect this has to do with a new version of a template or something.
Debug log is:
app/asyncapi.yml
Found doc in container, generating

AsyncAPI anonymously tracks command executions to improve the specification and tools, ensuring no sensitive data reaches our servers. It aids in comprehending how AsyncAPI tools are used and adopted, facilitating ongoing improvements to our specifications and tools.

To disable tracking, please run the following command:
  asyncapi config analytics --disable

Once disabled, if you want to enable tracking back again then run:
  asyncapi config analytics --enable

┌  AsyncAPI Generator
│
Template is not available locally and expected location is undefined. Known details are: undefined Error: Cannot find module<EMAIL_ADDRESS>Require stack:
- /usr/local/lib/node_modules/noop.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1145:15)
    at Function.Module._resolveFilename.sharedData.moduleResolveFilenameHook.installedValue [as _resolveFilename] (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/@cspotcode/source-map-support/source-map-support.js:811:30)
    at resolveFileName (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/resolve-from/index.js:29:39)
    at resolveFrom (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/resolve-from/index.js:43:9)
    at module.exports (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/resolve-from/index.js:46:47)
    at utils.getTemplateDetails (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/@asyncapi/generator/lib/utils.js:196:30)
    at Generator.installTemplate (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/@asyncapi/generator/lib/generator.js:561:24)
    at Generator.installAndSetupTemplate (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/@asyncapi/generator/lib/generator.js:283:73)
    at Generator.generate (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/@asyncapi/generator/lib/generator.js:196:16)
    at async Generator.generateFromString (/usr/local/lib/node_modules/@asyncapi/cli/node_modules/@asyncapi/generator/lib/generator.js:444:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/usr/local/lib/node_modules/noop.js' ]
}
Template installation started because the template cannot be found on disk.
Using npm registry https://registry.npmjs.org and authorization type anonymous to handle template installation.
◇  Generation failed
Generator Error: Installation failed

It appears this bug was introduced in 2.3.12 of the template.  I don't have this problem with versions prior to that, going back to 2.3.8.  So, pinning the version in the template is a solution, e.g<EMAIL_ADDRESS> FYI @talglobus.

I should mention I'm using the docker image 'asyncapi/cli' at tag 'c03a2a76e1e4' to perform the generation via:
# Has the problem using template 2.3.12
docker run --user=root \
   --rm \
   -v "$VOLUME_MAPPING" \
   -v ${PWD}/output:"$OUTPUT_FOLDER_IN_CONTAINER" \
   asyncapi/cli generate fromTemplate \
   -o "$OUTPUT_FOLDER_IN_CONTAINER" \
   "$DOC_IN_CONTAINER" \
<EMAIL_ADDRESS>\
   --force-write \
   -p sidebarOrganization=byTagsNoRoot

sorry about that, fix has been deployed -> https://github.com/asyncapi/html-template/pull/672#issuecomment-2324913576
thanks for letting us know


Is this lib suitable for optical mouse configuration ?

Hello , Good day
Im gonna write a program for read/write optical mouse configurations like turning off RGB lights and so on.
Is this library suitable for this kind of programming in JAVA ?
Is there any example for mouse configuration by using this lib  ?
Thank You

I‘m not familiar with what protocol the mouse uses for configuration. If the protocol is on a separate USB interface from the standardized HID interface, then this library can likely be used. If it is implemented on top of HID, then no because the HID interface is exclusively claimed by the operating system.
If you have more information about the protocol then I can likely provide more information.

Hi
I tried to send some commands to my device (an Optical Mouse)
Im getting this error :
INFO: Child device USB\VID_4E53&PID_5406&MI_01\6&3b5a55ec&0&0001 has no device path / interface GUID
Exception in thread "AWT-EventQueue-0" net.codecrete.usb.UsbException: claiming interface failed (function has no device path / interface GUID, might be missing WinUSB driver)
Here's my code :
var testDevice = Usb.findDevice(0x4e53,0x5406).orElseThrow();
testDevice.open();
testDevice.claimInterface(1);
var transfer = new UsbControlTransfer(UsbRequestType.VENDOR, UsbRecipient.INTERFACE, 9, 775, 1);
testDevice.controlTransferOut(transfer, null);
testDevice.close();

What's wrong with it ?

You are using Windows and the WinUSB driver is not installed for interface 1. As described on the project's home page, the WinUSB driver is required to communicate with the device (other than enumerating it).
Most devices designed for WinUSB can instruct Windows to automatically install the driver. But this doesn't seem to be the case here.
You can use Zadig to install the WinUSB driver. Be careful. If another driver is installed for USB interface 1, replacing the driver will likely break some software. If the HID driver is installed on interface 1, the mouse will no longer work as a mouse. It can be restored (see Zadig documentation). But you will need another mouse to actually do it.
You can also run the enumerate example and then post the part of the output of the optical mouse here. That would help me better understand the USB device.

Thank You for your support dear Manuel .


Construction from Constexpr StringView

Hello,
Is there any way to construct directly from a StringView? Looking to have something like this in my code:
constexpr static uintwide_t<65535, std::uint64_t> BIG_INT_CONSTANT {"0xA0A0A0000000000000000000000"sv};

It wouldn't be a good design choice to inject a dependency on string_view into uintwide_t. Those ought to be two separate types. A non-member function template might be a good idea though, maybe called something like e.g. from_string.
And as this seems to be a literal value, perhaps a UDL would work, e.g.:
constexpr static uintwide_t<65535, std::uint64_t> BIG_INT_CONSTANT {0xA0A0A0000000000000000000000_wide_integer};

any way to construct directly from a StringView?

Yes, but I agree with John (@johnmcfarlane), who indicates, ...

wouldn't be a good design choice to inject a dependency on string_view into uintwide_t. Those ought to be two separate types. A non-member function template might be a good idea though, ...

There is already a constructor from const char*, but that does not work for string-view because this constructor requires a Null-Terminated character pointer array and string-view is not Null-Terminated.
I think it owuld be best if we were to discuss either a factory-like non-member function or something like what John sketheced out above.

There is already a constructor from const char*

Since that constructor is already there, would it be a fair compromise to add a second, default-set length parameter which could handle string-view (which is non-null-terminated).
Could this be a reasonable solution?
Cc: @larkwiot and @johnmcfarlane

Thanks for your guys' time on this!
I personally don't have a preference on the implementation of this, I just like the library and wanted to have some global constants. Of the solutions mentioned so far, a utility function like from_string() is the most appealing to me personally, but any way this functionality could be implemented is a win for me.

a utility function like from_string() is the most appealing to me personally

I appreciate this. There is, however, a special case to handle. When dealing with string_view, there is no guarantee that the associated char-pointer array is NULL-terminated.
Personally, I do not like creating an std::string for the sole purpose of using its c_str() method to obtain a NULL-terminated string. So I think a few overloads of a potential from_string() method would also be useful.
Let me put together a draft and present it in a future PR.

Hopefully there's a generic way to handle both strings and string_views in the same algorithm.
It might be a little trickier to wrap your head around if you're not used to dealing with iterators and templates as much as indexes and char*s, but you may find the solution is cleaner and more satisfying. Example.

A while back, I implemented something that tries as best as possible to immitate to_chars().
I might as well implement now for this issue something that's close to from_chars().

Note to self: Implementation detail, ... the proposed from_chars is very similar to the existing rd_string. Adapt accordingly with probably minimal effort.

See also #400

Hi @larkwiot and @johnmcfarlane
from_chars() is in with #400