installing openssl fails (needed by curl)

When I try to install openssl it fails. I am using Windows 7.
Package: openssl:x86-windows
Vcpkg version: 0.0.97-2017-11-14-2b7cd655c8d52ce40453497ecc06c81dc2977aab
The error messages says:
-- Downloading https://www.openssl.org/source/openssl-1.0.2m.tar.gz... Failed. Status: 4;"A requested feature, protocol or option was not found built-in in this  libcurl due to a build-time decision."
and when I check the openssl web site the file is not there.
Here is what I tried to do:
C:\dev\github\vcpkg>.\vcpkg.exe install curl  --debug
The following packages will be built and installed:
    curl:x86-windows
  * libssh2:x86-windows
  * openssl:x86-windows
Additional packages (*) will be installed to complete this operation.
Starting package 1/3: openssl:x86-windows
Building package openssl:x86-windows...
[DEBUG] _wpopen("where.exe cmake 2>&1")
[DEBUG] _pclose() returned 1
[DEBUG] _wpopen(""C:\dev\github\vcpkg\downloads\cmake-3.9.5-win32-x86\bin\cmake.
exe" --version 2>&1")
[DEBUG] _pclose() returned 0
[DEBUG] _wpopen("where.exe git 2>&1")
[DEBUG] _pclose() returned 0
[DEBUG] _wpopen(""C:\dev\github\vcpkg\downloads\MinGit-2.15.0-32-bit\cmd\git.exe
" --version 2>&1")
[DEBUG] _pclose() returned 0
[DEBUG] _wpopen(""C:\dev\github\vcpkg\downloads\cmake-3.9.5-win32-x86\bin\cmake.
exe" "-DCMAKE_TRIPLET_FILE=C:/dev/github/vcpkg/triplets/x86-windows.cmake" -P "C
:/dev/github/vcpkg/scripts/get_triplet_environment.cmake" 2>&1")
[DEBUG] _pclose() returned 0
[DEBUG] _wpopen("powershell -NoProfile -ExecutionPolicy Bypass -Command "& {& 'C
:\dev\github\vcpkg\scripts\findVisualStudioInstallationInstances.ps1' }" 2>&1")
[DEBUG] _pclose() returned 0
[DEBUG] CreateProcessW(cmd.exe /c ""C:\Program Files (x86)\Microsoft Visual Stud
io\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat"  amd64_x86   2>&1 && "C:\
dev\github\vcpkg\downloads\cmake-3.9.5-win32-x86\bin\cmake.exe" "-DCMD=BUILD" "-
DPORT=openssl" "-DCURRENT_PORT_DIR=C:/dev/github/vcpkg/ports/openssl/." "-DTARGE
T_TRIPLET=x86-windows" "-DVCPKG_PLATFORM_TOOLSET=v141" "-DVCPKG_USE_HEAD_VERSION
=0" "-D_VCPKG_NO_DOWNLOADS=0" "-DGIT=C:/dev/github/vcpkg/downloads/MinGit-2.15.0
-32-bit/cmd/git.exe" "-DFEATURES=" -P "C:/dev/github/vcpkg/scripts/ports.cmake""
)
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.4.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64_x86'
-- CURRENT_INSTALLED_DIR=C:/dev/github/vcpkg/installed/x86-windows
-- DOWNLOADS=C:/dev/github/vcpkg/downloads
-- CURRENT_PACKAGES_DIR=C:/dev/github/vcpkg/packages/openssl_x86-windows
-- CURRENT_BUILDTREES_DIR=C:/dev/github/vcpkg/buildtrees/openssl
-- CURRENT_PORT_DIR=C:/dev/github/vcpkg/ports/openssl/.
-- Downloading https://www.openssl.org/source/openssl-1.0.2m.tar.gz...
-- Downloading https://www.openssl.org/source/openssl-1.0.2m.tar.gz... Failed. S
tatus: 4;"A requested feature, protocol or option was not found built-in in this
 libcurl due to a build-time decision."
-- Downloading https://www.openssl.org/source/old/1.0.2/openssl-1.0.2m.tar.gz...

-- Downloading https://www.openssl.org/source/old/1.0.2/openssl-1.0.2m.tar.gz...
 Failed. Status: 4;"A requested feature, protocol or option was not found built-
in in this libcurl due to a build-time decision."
CMake Error at C:/dev/github/vcpkg/scripts/cmake/vcpkg_download_distfile.cmake:9
1 (message):

      Failed to download file.
      Add mirrors or submit an issue at https://github.com/Microsoft/vcpkg/issue
s

Call Stack (most recent call first):
  C:/dev/github/vcpkg/ports/openssl/portfile.cmake:19 (vcpkg_download_distfile)
  C:/dev/github/vcpkg/scripts/ports.cmake:72 (include)

[DEBUG] CreateProcessW() returned 1
Error: Building package openssl:x86-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with `.\vcpkg update`, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
  Package: openssl:x86-windows
  Vcpkg version: 0.0.97-2017-11-14-2b7cd655c8d52ce40453497ecc06c81dc2977aab

Additionally, attach any relevant sections from the log files above.
[DEBUG] ..\src\vcpkg\install.cpp(526)

Just to clarify, downloading:
https://www.openssl.org/source/openssl-1.0.2m.tar.gz
does not work?

Hi @bitsrules, does it work normally on your machine now?
I can't reproduce it . could you please help confirm whether this issue has been fixed on your machine?
If fixed, please close it.
Thanks.

Please open a new issue if this is still a problem for you.


[3.x] Fix previous search for built-in-docs

Fixes #32687
I found the source of this bug while working on #49258, so I created this 3.x cherry-picked version.
https://user-images.githubusercontent.com/80655527/120884481-52377880-c598-11eb-9b76-4fb5af353b4d.mp4

I found a bug after I submitted this that prevented searching backwards when you matched the first character. I've since fixed that and this PR should be ready for review

Thanks!


Coav-control: Add option to set the UDP port

Since APM uses TCP, I'm going to remove "UDP" mentions

MavQuadCopter will always start a UDP connection, it doesn't matter if its APM or PX4.

Merged with proposed change


Custom casts are behaving like singletons

Laravel Version: 7.13.0
PHP Version: 7.4

Description:
Custom casts on a model are behaving like singletons.
If I have a custom castable field on a model and I'm accessing twice it returns same object which can lead the second time the object is actually not representing the model state.
Steps To Reproduce:
Attached example test implemented with Carbon:
https://github.com/netpok/laravel-singleton-cast/blob/master/tests/Unit/ExampleTest.php

This is because Carbon is mutable. Try:
use Carbon\CarbonImmutable;

class UnsavedModel extends \Illuminate\Database\Eloquent\Model
{
    protected $casts = [
        'not_singleton' => DontSingleton::class,
    ];
}

class DontSingleton implements \Illuminate\Contracts\Database\Eloquent\CastsAttributes
{
    public function get($model, string $key, $value, array $attributes)
    {
        return CarbonImmutable::parse($value);
    }

    public function set($model, string $key, $value, array $attributes)
    {
        return (string) $value;
    }
}

@driesvints Yes, that's my exact problem, it behaves differently from the internal casts, I updated my test example with other instances.
If this is the expected behavior there should be a warning about it in the documentation.

I don't see your update. Can you maybe just share the code here?

Sorry I forgot to push it, now it's up now.
Also if the current behavior is the expected one maybe the internal casts should be updated to match the new behavior.

I'll reopen this for @taylorotwell to have a look at.

Thanks, an example where this could be a problem:

In a controller an event is fired CustomEvent::dispatch($model->custom_casted_attribute) and later the model is saved.
Everything works, but later a new listener is added, where the object is changed.
Now the original controller will update the db record with the modified value.

That's how custom casts are intentionally designed to work. Otherwise very basic operations would not be possible, such as:
$customer->address->lineOne = 'foo';
$customer->address->lineTwo = 'bar';

@taylorotwell @driesvints Then shouldn't the internal casts like collection or datetime exhibit the same behavior?
I mean
$order->payment_due_date->addDay();
$order->attributes['color'] = 'green'; // attribute is a collection

would be great to have too.


style: Visit/transfer process page titles

This adds page titles to the visit/transfer process, as referenced in Discord

Thanks @cocoiadrop 👍

Thanks @cocoiadrop 👍

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

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


Expanded nav on large screens and collapsed on small screens

I am trying to make the nav expanded for large screens (above 768px) and collapsed nav on small screens (below 768px) which can be opened by taping on toggle. The option expanded : true is making the nav expanded even on small screens. What option should I tweak to make this possible?

I'll probably have to introduce a new option to the plugin.


Update existing detail page components to match refined mocks

Definition of Done

Implementation matches desktop and mobile mocks. "Intermediate" mock can be found here where detail page remains in desktop version (but header is mobile).
HCA only
Components to be refined:

[ ] Description
[ ] Contact
[ ] Publications
[ ] Contributors
[ ] Collaborating Organizations
[ ] Data Curations
[ ] Citation
[ ] Supplementary Links
[ ] Accessions
[ ] Data Release Policy
[ ] Analysis Portals
[ ] Project Details
[ ] File Counts

Superseded by individual tickets.


helper as a function not fired

Hi,
I cannot figure it out, I have
data-jqyoui-options="{ hoverClass: "drop-hover",helper:"getTableDragElement()" }"
and my function isn't fired. Why? Does anybody have working example?
Thanks in advance!

@daniell0gda I do not support it yet. But you could rewrite the usage to,
$scope.options = {
  hoverClass: "drop-hover",
  helper: $scope.getTableDragElement()
}

Then update the template with data-jqyoui-options="options"


Fonts and duplicated glyph

tl;dr:  Its lot of work feel free to close issue :)
But seriously we can drastically reduce font size or I'm really missing something.
p1 font has 555 glyphs, actual glyph that we need are 29( go ahead and count number of words in first surah - end of ayah glyph ) or see screenshot

Other glyphs are ayah marks, harakts,  and stuff:

If we are ready for challenge, I believe we can reduce size of these fonts files from 90+mb to 20-30 mb by moving ayah number and harkat to common font file. Each font file should have actual word glyph nothing more.
BTW we can also embed tajwed colors into ttf

https://color.typekit.com/
https://css-tricks.com/color-fonts/

CC @ahmedre since he is the font guru

hardly a guru, so i'll preface with "i don't know" - i did a small experiment where i used FontForge to combine some of the fonts, and i get a reduction of around 30-50% - but it's a very manual process.
i tried removing some glyphs, but some are mapped, meaning that if you remove a set of glyphs, another set also removes by nature of removing the first ones. i am not sure why that is and if there's a way to just remove the numeric ones, but if so, i'd love any wins we can get on the font size, so am open to any suggestions on this.

Well well well! I think this could works. Just did a quick test, copied 29 glyph of first page converted them into fonts and here is test for first verse:
http://staging.quran.com:33129/1
NOTE: Bismillah before each verse is rendered using optimized fonts ( 29 glyphs only ) we can render whole page with minor changes into api( it should return unicode instead of html encoded code)
Ill say again lets do this!

We'll need to update backend as well. This will goes live with next production build inshAllah.


ERROR: No matching distribution found for tensorflow

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Windows 10
TensorFlow installed from (source or binary): py -m pip install tensorflow
Python version: Python 3.8.5
Installed using virtualenv? pip? conda?: pip

Error Message:
ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none)
ERROR: No matching distribution found for tensorflow
Im trying to install Tensorflow through pip but it doesn't seem to work. I have upgraded both pip and python to the newest versions
- Regards

I think I worked it out by using this:
pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.12.0-py3-none-any.whl
I am closing this now.

Wrong command there. I used the Anaconda Prompt with the normal pip command.
py -m pip install tensorflow


Libdoc: Fix storing information about deprecated keywords to spec files

We support marking keywords deprecated by starting their documentation with *DEPRECATED*. There are two problems with handling this information with Libdoc:

The information is included only in XML spec files, not in JSON spec files.
If documentation is converted to HTML, reading this information fails because the marker is tuned to <b>DEPRECATED</b>.

Decided to only write deprecation info to JSON specs when keywords are actually deprecated. Main reasons:

That's how XML specs work as well.
Less changes need to existing tests.
Tools that want to support older RF versions cannot expect this info to be there anyway.

If someone feels this info should always be included, we can still consider changing this.


about missing Deps.toml file for the package

Hello, just registered a package and now it has automatic sync with METADATA.
The package contains Project.toml with
[deps]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

but in the following registry doesn't have the Deps.toml file for that package.
https://github.com/JuliaRegistries/General/tree/master/J/Jive
Compat.toml
Package.toml
Versions.toml

I don't know how could I make the Deps.toml file.
It's best appreciate for any hint.
thanks.

The only released version of Jive doesn't have any dependencies:
https://github.com/JuliaLang/METADATA.jl/blob/metadata-v2/Jive/versions/0.1.0/requires
If you want Test in the Deps.toml file, you need it in the REQUIRE file. Currently, the project's Project.toml file is ignored and what's registered in METADATA is the source of truth, which is based on the REQUIRE file not the Project.toml file.

thank you very much!

I'm sorry to bother it again,
when I added Test to the REQUIRE file, I got failed on travis-ci for METADATA.jl.
https://travis-ci.org/JuliaLang/METADATA.jl/jobs/474972602#L506
ERROR: LoadError: package Jive v0.1.1 requires a non-registered package: Test
Stacktrace:
 [1] check_metadata(::Set{String}) at /home/travis/build/JuliaLang/METADATA.jl/.test/METADATA.jl:266
 [2] check_metadata() at /home/travis/build/JuliaLang/METADATA.jl/.test/METADATA.jl:262
 [3] top-level scope at none:0
 [4] include at ./boot.jl:317 [inlined]
 [5] include_relative(::Module, ::String) at ./loading.jl:1044
 [6] include(::Module, ::String) at ./sysimg.jl:29
 [7] include(::String) at ./client.jl:392
 [8] top-level scope at none:0
in expression starting at /home/travis/build/JuliaLang/METADATA.jl/.test/METADATA.jl:279
The command "sh .test/ci.sh" exited with 1.

Ah yes, sorry, since Test is a stdlib you can't depend on it in REQUIRE. The sync script uses a regular expression to detect stdlib dependencies, I'm not sure why it's picking this one up.

This was actually a bug in the registry sync script. It's fixed now. Sorry for the trouble and thanks for bringing it to my attention!

your welcome! I'm closing the issue with happy.


Use parquet categories correctly

This lets us use file paths to add information to datasets, for instance:
/some/path/to/files/dataset=somename

Will add a dataset column to the resulting pandas._read_parquet where all the files in the dataset=somename subdir are labelled with somename.
This works for pandas, dask dataframes, apache spark, etc... Pretty convenient.

@maxgalli


TWR complete_cb called before transmission

Hi,
I have noticed in the TWR libraries that the complete_cb callbacks are called before the transmission of the final message. As an example here is an extract of the code from the SS TWR library:
https://github.com/Decawave/mynewt-dw1000-core/blob/d6b1414f1b4527abda7521a304baa1c648244108/lib/twr_ss/src/twr_ss.c#L322-L339
This can lead to ranging issues when operating the transceiver (putting it to sleep for example) straight after the completion callback.
For cases where the ranging ends with a transmission, I suggest to call the complete_cb callbacks  on tx_complete_cb. Going back to the code above I replaced the code inside the else with a line that sets a global variable: g_wait_for_tx = true;. Also I have implemented the tx_complete_cb callback:
static bool
tx_complete_cb(struct uwb_dev * inst, struct uwb_mac_interface * cbs)
{
    if (!g_wait_for_tx) return false;
    g_wait_for_tx = false;

    struct uwb_rng_instance * rng = (struct uwb_rng_instance *)cbs->inst_ptr;
    STATS_INC(g_stat, complete);
    dpl_sem_release(&rng->sem);
    {
        struct uwb_mac_interface * cbs = NULL;
        if(!(SLIST_EMPTY(&inst->interface_cbs))){
            SLIST_FOREACH(cbs, &inst->interface_cbs, next){
            if (cbs!=NULL && cbs->complete_cb)
                if(cbs->complete_cb(inst, cbs)) continue;
            }
        }
    }
    return true;
}

The issue is that the tx_complete_cb in uwb_rng.c gets called first and prevents any following callback to be called:
https://github.com/Decawave/mynewt-dw1000-core/blob/d6b1414f1b4527abda7521a304baa1c648244108/lib/uwb_rng/src/uwb_rng.c#L838-L858
A workaround in this case is to change line 853 and to return false in order to allow following tx_complete_cb callbacks to be called.
The solution now works but I have only handled SS TWR. I am sure a more generic solution can be developed.
Does anyone have any thoughts on this?
Thanks

Just found an interesting generic solution.
I have added a new complete_after_tx bit in the uwb_rng_control_t struct. I changed the case code to:
case DWT_SS_TWR ... DWT_DS_TWR_EXT_END:
    RNG_STATS_INC(tx_complete);
    if (!rng->control.complete_after_tx)
        return true;

    dpl_sem_release(&rng->sem);
    struct uwb_mac_interface * cbs = NULL;
    if(!(SLIST_EMPTY(&inst->interface_cbs))){
        SLIST_FOREACH(cbs, &inst->interface_cbs, next){
        if (cbs!=NULL && cbs->complete_cb)
            if(cbs->complete_cb(inst, cbs)) continue;
        }
    }
    rng->control.complete_after_tx = 0;
    return true;
    break;

Now in twr_ss.c instead of setting a global variable limited to the scope of the file as proposed in my previous comment (g_wait_for_tx = true;) I set the new control bit: rng->control.complete_after_tx = 1;. I have removed the tx_complete_cb callback since it is now useless.

Hi @Beetix,
I've created a PR for this in uwb-core.
Have a look and let me know if this solves what you saw too.
Thanks,
Niklas


Better error messages when plugin is not found

Previously when the plugin failed to be found the error message would be unhelpful:
mynet : error executing ADD: could not find "." plugin

Now, error message looks like
mynet : error executing ADD: failed to find plugin "some-plugin" in path [/gopath/src/github.com/appc/cni/bin]

Added tests in the ginkgo style (which means ginkgo / gomega are godep'ed)
Tests are now run as part of the testing script
Testing style of /pkg/invoke is now much more descriptive + covers edge cases
ginkgo / gomega style tests still work with the regular old go test command

Thanks @zachgersh for these test cases. This work is highly appreciated!
Please make the addition of ginkgo / gomega deps a separate commit preceding all commits that make use of the new packages.

Thanks @steveeJ! I am actually going to pull ginkgo / gomega out of this PR. If you would be so kind as to merge #121 first then those dependencies will be added and these tests should just work!
Really appreciate the quick feedback.

@steveeJ this commit is now ready. I will add the tests being run back in once both the PRs I have outstanding have been merged :dancers:


How to access ServiceBus session state in isolated process azure functions?

What version of .NET does your existing project use?
.NET 6
What version of .NET are you attempting to target?
.NET 8
Description
I am migration project from dotnet 8 in-process to isolated process. My project has service bus trigger functions with sessions. Am also using session state to use some additional data.
In in-process this is easy I just inject ServiceBusSessionMessageActions from Microsoft.Azure.WebJobs.ServiceBus namespace like this
async Task RunAsync([ServiceBusTrigger("TopicName", ...,  IsSessionsEnabled = true)]
ServiceBusReceivedMessage message, ServiceBusSessionMessageActions sessionActions,
CancellationToken cancellationToken)
In isolated process there is ServiceBusSessionMessageActions in Microsoft.Azure.Functions.Worker, but it is not available in trigger handler.
How can I work with service bus session state in isolated process?
Thanks and regards,
Josef
Project configuration and dependencies
No response
Link to a repository that reproduces the issue
No response

The feature is already included in the current version. I tested it locally using an HTTP trigger. When triggered locally via HTTP, it does not include ServiceBusSessionMessageActions, which makes sense. However, when tested with a real service bus, it functions correctly.


Get-PnPUnifiedGroup returns auth error.

When I run this command I get the following auth error:
Get-PnPUnifiedGroup : Exception while invoking endpoint
https://login.microsoftonline.com/71f268c4-7140-43cb-bfe5-4f37301ab0ae/oauth2/token.
At line:1 char:1

Get-PnPUnifiedGroup

  + CategoryInfo          : NotSpecified: (:) [Get-PnPUnifiedGroup], ApplicationException
  + FullyQualifiedErrorId : System.ApplicationException,SharePointPnP.PowerShell.Commands.Graph.GetUn
 ifiedGroup

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

ID: 53df4ad8-9006-4d5c-8829-a1c481dac939
Version Independent ID: 15dfc257-8c5f-63d6-ffe7-f7a7163c25bf
Content: Remove-PnPNavigationNode (sharepoint-pnp)
Content Source: sharepoint/sharepoint-ps/sharepoint-pnp/Remove-PnPNavigationNode.md
GitHub Login: @techwriter40
Microsoft Alias: kirks

Hello @OpenHabitat
I need to kindly redirect you to this other repo for PnP issues, please first, search if this issue is already created.
Thank you

@get-itips  Thank you very much for the contribution and sharing this explanation. @OpenHabitat
These repos are all open source and the community would welcome to contribute.  Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Make sure QuickFixCmd autocommands are triggered by :ltag

Problem
Autocommands QuickFixCmdPre and QuickFixCmdPost are not triggered when performing :ltag.
Solution
Trigger these autocommands when performing :ltag.

I have some trouble understanding why some of the checks don't pass. It's my first PR and first time tinkering with the codebase so let me know if I can improve the code.

last patch has a missing define for os_unix.c. I'll post a fix.

can you also include a test?

There is one! See: https://github.com/vim/vim/pull/3001/files#diff-283f728346d5bd087793cd677e91444c

Codecov Report

Merging #3001 into master will increase coverage by 0.02%.
The diff coverage is 85.71%.

@@            Coverage Diff             @@
##           master    #3001      +/-   ##
==========================================
+ Coverage   75.82%   75.84%   +0.02%
==========================================
  Files          92       92
  Lines      135297   135302       +5
==========================================
+ Hits       102583   102624      +41
+ Misses      32714    32678      -36

Impacted Files
Coverage Δ

src/tag.c
75.64% <85.71%> (+3.23%)
:arrow_up:

src/gui_gtk_x11.c
47.33% <0%> (-0.55%)
:arrow_down:

src/if_xcmdsrv.c
83.63% <0%> (-0.54%)
:arrow_down:

src/ex_cmds.c
79.53% <0%> (-0.23%)
:arrow_down:

src/ex_cmds2.c
80.2% <0%> (-0.1%)
:arrow_down:

src/eval.c
81.52% <0%> (-0.06%)
:arrow_down:

src/os_unix.c
54.29% <0%> (-0.05%)
:arrow_down:

src/version.c
82.38% <0%> (ø)
:arrow_up:

src/channel.c
83.2% <0%> (ø)
:arrow_up:

src/normal.c
73.93% <0%> (+0.01%)
:arrow_up:

... and 10 more

Continue to review full report at Codecov.

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

What is the status if this PR?  @yegappan are your comments taken care of?

Perhaps @yegappan can help

@yegappan's comment to vim_dev is not forwarded here.
See this: https://groups.google.com/d/msg/vim_dev/z80ZpXnONiQ/o9ahN3kPBQAJ

Can you try the attached slightly updated version of your patch?

@k-takata Thanks for notifying me. I'll try to have a look on the email thread from now on.
Unfortunately, the patch produces the exact same behavior than reordering my statements.
@yegappan Shall I keep it that way as it seems to be a bit more resilient anyway?
Moreover, here is the behavior that should maybe be considered:

before jumping to the tag
if current window is a location list window, jump to the corresponding standard window
otherwise don't move

Closing this for lack of updates.


Fix #3962 - Navigation with OfType results in null parameter

Resolving #3962 by updating the IAsyncQueryProvider on all parent visitors when it is found. The IQueryable can be at an arbitrary depth depending on the shape of the original Expression.
A potential alternative would be to use a ThreadStatic field, though this is only ever done in DbContextActivator in the current code base.

:shipit:


Terminal ligatures doesnt work on Vscode 1.76.0

Installed firacode fonts and extension on windows 10 but I don't see a spinning circle instead of \ / characters:
terminal with monospace font:

terminal with fira code font:

my config:
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
"editor.fontSize": 14,
"editor.fontWeight": "normal",
"editor.fontVariations": true,
"terminal.integrated.fontFamily": "Fira Code",
"terminal.integrated.fontSize": 14,
"terminal.integrated.fontWeight": "normal",
"terminal.integrated.fontWeightBold": "bold",
about vscode:
Version: 1.76.0 (user setup)
Commit: 92da9481c0904c6adfe372c12da3b7748d74bdcb
Date: 2023-03-01T10:22:44.506Z
Electron: 19.1.11
Chromium: 102.0.5005.196
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19044
Sandboxed: No

The feature is still an open issue for vscode's terminal:
https://github.com/microsoft/vscode/issues/34103


find-node example doesn't work on windows

Hey there, I'm having trouble running the example find-node step from the README.
I'm getting the following error in the logs for that step:
Run echo "node=$(node -e 'console.log(process.argv[0]);')" >> "$GitHub_OUTPUT"
  echo "node=$(node -e 'console.log(process.argv[0]);')" >> "$GitHub_OUTPUT"
  shell: /usr/bin/bash -e {0}
/home/runner/work/_temp/cd[2](https://github.com/[redacted]/actions/runs/10149681769/job/28065132487#step:6:2)d0e4b-1e43-4e77-bc5b-3fd9849dbb59.sh: line 1: : No such file or directory
Error: Process completed with exit code 1.

Is it maybe an issue with the "$GITHUB_OUTPUT" variable on windows?

Found a fix here: https://stackoverflow.com/a/74377542
Submitted a PR


Implement a Fuzzy searching in searchbox

Also remove the border in the search box

https://github.com/adarshanand67/ShareMe/commit/fa023108919680601eb23a576fa3247a68592f5a Closes


Bump version

Codecov Report

Merging #190 (0b358d9) into main (9779a1a) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main      #190   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           10        10
  Lines          426       426
=========================================
  Hits           426       426

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 9779a1a...0b358d9. Read the comment docs.


ErrorHandler: invoke class specific toJSON transformation

Hi,
it would be great to have the ability to define a custom toJSON transformation of Errors before they are sent to the client.
UseCase:
We want to censor our custom Errors (extending HttpError) before they are leaving the server.
Therefore we thought to simply implement a toJSON method, like you can override the toString.
export class CustomError extends HttpError {
    public publicData: string;
    public secretData: string;

    constructor( httpCode: number, publicData: string, publicData: string ) {
        super( httpCode );
        Object.setPrototypeOf(this, CustomError.prototype);
        this.publicData = publicData;
        this.secretData = secretData;
    }

    toJSON () {
        return {
            httpCode: this.httpCode,
            publicData: this.publicData
        };
    }
}

Best Regards

AFAIK, express uses JSON.stringify under the hood:
https://github.com/expressjs/express/blob/master/lib/response.js#L1103
And according to MDN:

If an object being stringified has a property named toJSON whose value is a function, then the toJSON() method customizes JSON stringification behavior: instead of the object being serialized, the value returned by the toJSON() method when called will be serialized

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
So I think that the added feature is not needed at all. If toJSON() by the unknown reason doesn't work for you, the easiest way is to create your own error middleware which custom logic of hidding internal data or transforming the structure of error.

I think that the toJSON is currently not invoked, because it's wiped out by the error processing in processJsonError before express search for it.
The processedError does not contain the toJSON any more, the incoming error does.
    protected processJsonError(error: any) {
        if (!this.isDefaultErrorHandlingEnabled)
            return error;

        if (typeof error.toJSON === "function")
            return error.toJSON();

        let processedError: any = {};
        if (error instanceof Error) {
            const name = error.name && error.name !== "Error" ? error.name : error.constructor.name;
            processedError.name = name;

            if (error.message)
                processedError.message = error.message;
            if (error.stack && this.developmentMode)
                processedError.stack = error.stack;

            Object.keys(error)
                .filter(key => key !== "stack" && key !== "name" && key !== "message" && (!(error instanceof HttpError) || key !== "httpCode"))
                .forEach(key => processedError[key] = (error as any)[key]);

            if (this.errorOverridingMap)
                Object.keys(this.errorOverridingMap)
                    .filter(key => name === key)
                    .forEach(key => processedError = this.merge(processedError, this.errorOverridingMap[key]));

            return Object.keys(processedError).length > 0 ? processedError : undefined;
        }

        return error;
    }

In my scenario it also works if I add this lines, before the return:
if (typeof error.toJSON === 'function')
    processedError.toJSON = error.toJSON;

I think that the first version with return makes more sense. It unnecessary to process error field if it will be overwritten by calling toJSON method.
However please write a test for your case to prove that it is working and prevent regression in the future (we will be doing huge refactor of error handling part) 😉

sure, I'll do it during the next days

I think the standard error processing is covered by the existing test, so just added one for the case of an existing toJSON function.
@19majkel94 I hope it fullfills your expectations 🙂

Just added a little sample for the documentation. Can be delete, if you don't like it.

@pleerock @NoNameProvided
Could one of you please publish the 0.7.7 to npm? - It would be great :slightly_smiling_face:

Hey @twittwer!
Currently, only @pleerock has publish rights. I can understand this feature may be important for you, so if you need this right now you can install a package from GitHub as well via:
"routing-controllers": "git+https://github.com/pleerock/routing-controllers.git"

I hope this helps.

@NoNameProvided Are you sure about that? "main" in package.json looks incorrect so I don't think that it will work 😕

@19majkel94 You're right, it does not work. I've tried it, but the structure in npm is different to the repository. During your publish process the dist/ content is moved to the root.

In that case, I suggest you to fork the repo and make the required modifications. @pleerock mentioned multiple times, he wants to move this repo and others under the @typestack organization. Then both @19majkel94 and I will be able to publish new versions.

That's the way to go currently - just wanted to ask 🙂
Maybe we can but it on a branch here, so not everyone has to fork and "build".

I would rather talk with @pleerock to make the move as soon as he can but he is very busy with TypeORM right now.


Treat the environment during webpack build as browser rather than node

Fixes #47
I need some help to set up tests for this. I was unable to run the tests locally, since on my local machine, I have installed neither grunt nor python (required for the npm package sleep, which is an optional dependency of karma-xvfb-chrome-launcher) nor java (required for mockserver) nor Chrome (I am running on Ubuntu). Rather, I use all those only in Docker containers when necessary.
I think a useful testing setup would require a new grunt task, like the ones you have set up for node and browser modes. We could take the easy way out and just copy the browser tests and define a global require mock before the tests. Or we could do it the completely correct way and somehow set up a Webpack environment within the tests, similar to how you start an entire browser for the browser tests. Both of these options go a little far given the superficial knowledge I have about this package's structure and build process.

Sorry about the failing build! And thanks for the quick fix.


y-axis starts from minimum data value rather than from zero

y-axis on line charts should always start at zero. If there are negative numbers in the data, y-axis size should be abs(min(data)) + abs(max(data)).

Workaround is to pass in the prop min="0".


how to filter file when specify files

i use following shell
CHANGE_FILES=$(git diff --name-only ${CI_COMMIT_BEFORE_SHA} ${CI_COMMIT_SHA})
luacheck --exclude-files **/test4.lua  -- $CHANGE_FILES

but $CHANGE_FILES will include other files that not end in .lua
neither i use --exclude-files nor --include-files, both doesn't work
so how can i filter out files not end in .lua here

Just filter your CHANGE_FILES before passing it. Explicit enumerated args are not meant to be overwritten with the filters, you need to tell it what to do correctly the first time.
CHANGE_FILES=$(git diff --name-only ${CI_COMMIT_BEFORE_SHA} ${CI_COMMIT_SHA} -- '*.lua')
luacheck --exclude-files **/test4.lua  -- $CHANGE_FILES


Reenabled fixed source tests in jdk_build

backprt of master's https://github.com/adoptium/aqa-tests/pull/3801
It is causing rh's jdks to not pass. Unless htere will be new version soon, please allow backport.


react-spectrum v3 ui components

Description

[x] Provider
[x] Well
[x] Button
[ ] Image
[x] Link
[ ] Menu/MenuItem
[x] Icons: CheveronDown, AddCircle
[ ] OverlayTrigger: DialogTrigger (used for Modals, Popovers and Trays)https://react-spectrum.adobe.com/react-spectrum/DialogTrigger.html
[ ] Popover: via DialogTrigger:https://react-spectrum.adobe.com/react-spectrum/DialogTrigger.html
[ ] Wait: ProgressCircle:https://react-spectrum.adobe.com/react-spectrum/ProgressCircle.html

Fixes # (issue)
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Recommend as part of this that you make sure to use overflow:auto where possible.  Overflow:scroll will always show scroll bars (and is rather an eyesore where it's not needed)


Bump for Iron: setup-ros -> 0.6.2 action-ros-ci -> 0.3.2

https://github.com/ros-tooling/setup-ros/releases/tag/0.6.2
https://github.com/ros-tooling/action-ros-ci/releases/tag/0.3.2

0.3.1 added Iron support
0.3.2 added ref arg for scheduled jobs

CC: @destogl I can't assign you as a reviewer to the PR so just tagging you in a comment


Non interactable elements on remote WinAppDriver

Setup

I followed the instruction for remote maschines: https://github.com/microsoft/WinAppDriver/blob/master/Docs/RunningOnRemoteMachine.md
additionally: I setup autologon for an admistrative user via https://docs.microsoft.com/en-us/sysinternals/downloads/autologon
WinAppDriver 1.2.1

Current behaviour

A button is clickable on remote WinAppDriver with active RDP session (I'm watching)
A button is not clickable on remote WinAppDriver without active RDP session (nobody is watching)

Steps to reproduce

Step 1: test with active RDP session

// Step 1.1: Find the element
WebElement startBtn = windowsDriver.findElement(By.xpath("//Button[@Name=\"Start\"]"));

// Step 1.2: Check if element is displayed
Assert.assertTrue(startBtn.isDisplayed());

// Step 1.3: Click the element WITH ACTIVE RDP session
startBtn.click();

WinAppDriver log

POST /session/9E59A52E-369F-43B9-8C6B-B0C8A0EA83B9/element/42.1311784.4.-2147483647/click HTTP/1.1
Accept-Encoding: gzip
Connection: Keep-Alive
Content-Length: 38
Content-Type: application/json; charset=utf-8
Host: <IP_ADDRESS>:4723
User-Agent: selenium/3.141.59 (java windows)

{
  "id": "42.1311784.4.-2147483647"
}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json

{"sessionId":"9E59A52E-369F-43B9-8C6B-B0C8A0EA83B9","status":0}

Step 2: Close RDP session and try again

// Step 2.1: Element is still displayed
Assert.assertTrue(startBtn.isDisplayed());

// Step 2.2: But not clickable anymore
startBtn.click();
// Throws: Method threw 'org.openqa.selenium.WebDriverException' exception.

WinAppDriver log:

POST /session/9E59A52E-369F-43B9-8C6B-B0C8A0EA83B9/element/42.1311784.4.-2147483647/click HTTP/1.1
Accept-Encoding: gzip
Connection: Keep-Alive
Content-Length: 38
Content-Type: application/json; charset=utf-8
Host: <IP_ADDRESS>:4723
User-Agent: selenium/3.141.59 (java windows)

{
  "id": "42.1311784.4.-2147483647"
}
HTTP/1.1 500 Internal Error
Content-Length: 133
Content-Type: application/json

{"status":13,"value":{"error":"unknown error","message":"An unknown error occurred in the remote end while processing the command."}}

Step 3: Open RDP session again and try again -> Works

Expected behaviour

The element should be clickable, even without active RDP session

Hi @mreiche You need a VNC server running on the VM to be able to access elements when RDP is minimized. I am following these steps to workaround the issue of RDP disconnection/minimized:

**Manual installation of desktop automation tools**

1. Install choco from https://chocolatey.org/docs/installation
2. Install nodejs (skip if already installed): choco install nodejs-lts
3. Install appium from admin terminal: npm i -g<EMAIL_ADDRESS>4. Add a bat file to be called at startup:
Press WINDOWS+R and then type shell:startup. Create appium-starter.bat in the newly opened folder, and add following command:
a. When AUT doesn’t need admin rights
appium

OR

b. When AUT needs to be started with admin rights(Be aware of machine password. It should be a static password)
runas /savecred /profile /user:Administrator C:\Users\%USERNAME%\AppData\Roaming\npm\appium.cmd
It will ask for the admin password once and store it for later uses

5. Install ultra vnc from https://filehippo.com/download_ultravnc/
Check the following checkboxes:
a. UltraVNC Server Silent
b. Register UltraVNC Server as a system service
c. Start or restart UltraVNC service
d. Click Next, Next and Finish
e. Open Ultra VNC settings
f. Under Security tab, Check mark Require MS Logon

6. Install AutoLogOn from autologon and enable it.
7. Install WinAppRecorder from UIR-v1.1 and add a shortcut to desktop to access this application(Needed for inspecting elements)
8. Install windows-sdk: choco install windows-sdk-10.0 -y (Needed to have inspect.exe)
9. Enable developer mode following: https://www.howtogeek.com/292914/what-is-developer-mode-in-windows-10/#:~:text=How%20to%20Enable%20Developer%20Mode,be%20put%20into%20Developer%20Mode.
10 Execute command from admin terminal: npm i -g set-vnc-server-resolution && set-vnc-server-resolution
Restart the machine and it's done

You need to allow GUI access when minimized. You can adjust these settings through the Registry Editor. Make sure to update the HOST machine. So whatever machine is hosting the VMs.
Here is an article that tells you exactly how to do it in very simple terms - this worked for my team. We currently run 6 parallel, all of them are hosted by one machine which has these settings.
https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/in-minimized-window.html

Unfortunately, I cannot change the VM's HOST so even when this would be my preferend solution, I cannot apply it.

Hi @mreiche You need a VNC server running on the VM to be able to access elements when RDP is minimized. I am following these steps to workaround the issue of RDP disconnection/minimized:

I'm using the UltraVNC solution now, which is not that comfortable like Windows RDP, but it works.
Thank you guys very much. I appreciate a lot.


Issues with deseq2ParseResults in Expression.py

deseq2ParseResults does not process results correctly when there are more than two groups in the design file i.e. this code is in the runDESeq2 function for combining multiple contrasts
for combination in contrasts:
        variable, control, treatment = combination
        ...
        df_out = deseq2ParseResults(fdr, vsd=False)

deseq2ParseResults only takes the first two conditions from the global "groups" variable and therefore when it comes to labelling treatment_name and control_name in the outputs it is always the same two from the design file reagardless of the values of control and treatment in the above statement.
I would suggest that treatment_name and control_name are specified as arguments to deseq2ParseResults so that the correct labels and values are used in output
def deseq2ParseResults(treatment_name, control_name, fdr, vsd=False):

with the following resulting changes to the code
R('''g = unique(groups[groups == "%s" | groups == "%s"])''' % (treatment_name, control_name))
R('''g1 = which(groups == g[1])''')
R('''g2 = which(groups == g[2])''')
R('''res2['treatment_name'] = g[1]''')
R('''res2['treatment_mean'] = rowMeans(normalcounts[, g1])''')
R('''res2['treatment_std'] = apply(normalcounts[, g1], 1, sd)''')
R('''res2['control_name'] =g[2]''')
R('''res2['control_mean'] = rowMeans(normalcounts[,g2])''')
R('''res2['control_std'] = apply(normalcounts[, g2], 1, sd)''')

Many thanks @nickilott
Could you please open a proper pull request so we all can review changes?

Yes will do this now. Thanks

The Expression.py code has gone through significant changes since this issue. I will close it but please reopen if you think it necessary


[2.0.5] Warning emitted when options.sourceMap is explicitly false

Even when explicitly setting sourceMap: false, warning is emitted:

Previous source map found, but options.sourceMap isn't set

Looking at the source code: https://github.com/postcss/postcss-loader/blob/master/lib/index.js#L130
It looks like the condition for emitting this warning should be:
if (sourceMap == undefined && map) {
      this.emitWarning(`\n\n ⚠  PostCSS Loader\n\nPrevious source map found, but options.sourceMap isn't set.\nIn this case the loader will discard the source map entirely for performance reasons.\nSee https://github.com/postcss/postcss-loader#sourcemap for more information.\n\n`)
}

@vedadsose seems loader before postcss-loader emit source map (add sourceMap: false) for sass/less/etc-loader

@evilebottnawi If you think the warning should still be there even if options.sourceMap is false, then it shouldn't contain but options.sourceMap isn't set part.

/cc @michael-ciniawsky maybe we can add option supressSourceMapWarning, but for me this is a bad solution. But resolve-url-loader need to source maps from sass/less/etc-loader.

It warns about a source map from a previous loader, since postcss-loader discards the source map enterily when { sourceMap: true } isn't set in postcss-loader options, The default is to not generate a sourcemap for perf reasons. The warning is correct, please either set { sourceMap: true } or disable source maps in any previous loader.
@evilebottnawi No please no additional options for a trivial usecase, the warning maybe annoying but it is intended to do so :), bc the config is simply incorrect

I really want to disable this warning, because I only need source maps for JS, and I want to explicitly disable them for CSS in production. I know webpack is still creating some empty .css.map files, but I'll just delete those. (There doesn't seem to be any way to only enable source maps for JS and skip CSS.)
I think setting sourceMap: false in postcss-loader should not log any warnings, since it's a valid choice.


ES6, new way to extend YO generator

Hi @diegohaz
This commit has a lots of changes..
I have updated all the dependencies again.
I changed  all the generator code to es6 ( changing var to let and consts )
I put eslint and the last but one , i have updated the way that you create yeoman generators because you was using YO 0.24.1 and i updated for the last one..
Please you can review the code the code and do the merge...
Important:
Tests are not working, even running npm test in a fresh clone..
I am trying to fix it... meanwhile you can take a look :

Regards

@diegohaz  In general i did not modify the code in order to avoid problems.
just i have changed the code in cases that it was impossible to avoid it, just like Yeoman.. becasue they changed the way to extend the generator..
So i should change this files in my fork or it is automatic ??
let me know.

@maustand It's not automatic. You should make the changes in your fork.
The package.json problem is really annoying. I'll try to think in another solution.

Coverage decreased (-100.0%) to 0.0% when pulling efab27d3b551ea5bee193587fdb93a15ed2d3f7e on maustand:master into c190f5d0687c8243b30b5775142df6dcff917c82 on diegohaz:master.


Limit running time / jobs proposed

To make caffe-with-spearmint into a fully automated pipeline of hyper-parameter selection, training and testing, it seems to be necessary to make it possible to control the running time or the number of jobs proposed by spearmint. Is it possible within current framework?

One can limit the max_iter parameter in the solver.prototxt to fewer iterations.


fix bounties

[ ] bgc

[ ] show nav link

[ ] add link

https://www.figma.com/file/cIcOZxD9Ctqdj4xc9Xoctm/doTreasury?node-id=2310%3A23526


Add configurable timeouts for calls to execution/relay

Where should the timeouts be configured -- once at compile time, or do you want to have them variable?

Added a 5 second default timeout in #51


w2ui 1.5 grid scrollIntoView not working in reload callback

I want the grid scroll to row 20 after the grid itself reloaded.
I try with this command but does not work
    w2ui['grid_view'].reload(function(){
        w2ui['grid_view'].scrollIntoView(20);
    });

and this one is not working too
,
        onLoad: function(){
            w2ui['grid_view'].scrollIntoView(20);
        }

but when i try to call scrollToView alone its working.

Have you tried to execute your code in the event's onComplete callback?

I have provided a fix. It should work with .reload() function, but as for onLoad, you will need to put it in onComplete clause.


[LiveComponent] "Error: Component HTML contains 3 elements, but only 1 root element is allowed. " when adding block stylesheets and javascripts to Live Component template

Hello,
I'm using LiveComponent in Symfony. I get the error in the console :

Error: Component HTML contains 3 elements, but only 1 root element is allowed.

It's happening because I used other %block% tag in the template of the component
Here is a minimal reproducible example

ftable live

    Success! You've created a Twig component!
    <input type="number" data-model="debounce(10)|max">

        {{ this.randomNumber }}

{% block stylesheets %}
{{ encore_entry_link_tags('myFile') }}
{% endblock %}
{% block javascripts %}
{{ encore_entry_script_tags('myFile') }}
{% endblock %}

When we remove the two blocks below, the error diseappear and the data-poll works. Otherwise there is no re-render and the error show onces and data-poll stops.
Does anyone have a solution to this ? or maybe I have to copy and past the content of my scss and js files there? Not sure it will work too since it would produce the same. Thanks

More info : the problem happens when we extend a template that already extend the base.html.twig
After some tries and errrors, the only solution I found was to "level up" the template and write it so it extends the base.html.twig
So, it means that LiveComponent doesn't work in nested component/templates of more than 1 level


gorilla websocket is no longer maintained

Summary
gorilla websocket is no longer maintained https://github.com/gorilla/websocket/issues/370
Use Cases
kubectl doesn't support http/2 yet https://github.com/kubernetes/kubernetes/issues/7452 so websockets appear to be the only option in the meantime. Perhaps there is a maintained library we can use?

Message from the maintainers:
Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍.

I'm going to close this while they determine new maintainers upstream.  I will reopen if it looks like we need to take action in argo-workflows.


Cant connect to nodejs socket v4 with io.socket:socket.io-client v1

Hello,
A small tip:
This module wont work with nodejs socket.io server 4.0.0 with  io.socket:socket.io-client: 1+, you should upgrade to io.socket:socket.io-client:2+.
After changing the dependencies in include.gradle from:
dependencies {
    compile ('io.socket:socket.io-client:1.+') {
      exclude group: 'org.json', module: 'json'
    }
}

to:
dependencies {
    compile ('io.socket:socket.io-client:2.+') {
      exclude group: 'org.json', module: 'json'
    }
}

only then i could establish the connection to nodejs server.  I hope it will help to community!

I had the same issue, your solution worked 10/10.

Hmm, no sadly doesn't work for me

I've got it fixed now. I had to add the network_security_config.xml file to my project.


p004

Episode 4 in PHP

Hello,
Thank you for this contribution, however, I'm going to continue my implementation in PHP

Hello,
Thank you for this contribution, however, I'm going to continue my implementation in PHP


terraform integration

I left some comments and i have some questions

i dont see the outputs in your pr how does the integration support outputs?
i think we should also have state version exported as its the run result that hold connection to the outputs. Also the workspace should hold its active stateVersion as a relation (also i think you can get the outputs from the state version routes)
Client might have multiple organizations so i think we should hold information about the organization over the workspace entity
Clients might have a large amount of workspaces and state version so i think we should allow some kind of api level filtering like the jira integration does


Light Client: Fork Detection v1

TODO:

[ ] verification
[x] better errors

Looks like bisection algorithm is using a trusted store and not abstract enough for us to run it against a witness (i.e. check that we can bisect from latest trusted state to given header using a witness). This will require some changes.

Right. In the latest it iteration The we haven't solidified the API on the witnesses or the lightstore so it's great to surface these needs now. Our current thinking is for each witness primary or otherwise to have a verify_to_target method and it's own trusted store.  We will have to expose an API on the witness's store to trust a header if it matches the verified header on the primary. In this case it might make sense for the latest trusted to be a method on the witness and abstract the storage details of the underlying storage, roughly thinking 🤔

I have a very much WIP implementation of fork detection roughly based on the draft spec here: https://github.com/informalsystems/tendermint-rs/blob/c1b675510966b47654828d9ad2d374768a2fceed/light-client/src/fork_detector.rs#L33-L75
I currently just expose the LightClient's LightStore but as you say, having a specific method on the LightClient which returns the latest state would be a lot better.
I also added the ability to specify a State (which includes the LightStore) to perform verification with. I am not so happy with that solution at the moment, since it requires a hack to work around the double borrow that arises when we want to work over the light client's current state.
Let's try to sync up tomorrow to discuss the current state of things, as well as the discrepancies between this PR's implementation and the specification?
PS: Great job by the way :)

In the prior version managing the store was a more external responsibility, so all the internal bisection/verification functions didn't depend on it - ie. the verify_bisection took a trusted state and returned a list of new trusted states that the caller could add to the store. This way bisection could easily be done against any peer, without reference to a store. Does it make sense to do something like that? Or maybe to use something like a fresh mem-store for each  bisection run and then sync the mem-store to the underlying db store afterwards as necessary.

I guess both solutions would work, but I would perhaps favor the one where we pass the store explicitly as it's a bit simpler and more versatile. That's basically what we are doing now in the supervisor branch, but for now we are still keeping the internal store around, hence the need for the mem::replace trick.
Nonetheless, I think it's still worth giving your second solution more thought. For example, we could keep a log of the operations performed on it so that we can reapply them in order on the disk-based store. But this wouldn't solve the issue of supplying the light client with a pre-populated store, like the fork detector requires.

But this wouldn't solve the issue of supplying the light client with a pre-populated store, like the fork detector requires.

Why does the fork detector require a prepopulated store?

Why does the fork detector require a prepopulated store?

For fork detection, each witness needs a custom light store which only contains the trusted state (marked as verified) and the light block to verify (marked as unverified), you can see the relevant code here.
As you can see in the code, since my comment above I changed the light client to not maintain its own state at all, but to rather have it passed as an argument to verify_to_target. It's now the responsibility of the supervisor to maintain a mapping between the peers and their light client instance + state.

I think we can close this PR since it's been integrated within the supervisor PR.
The one difference between both the two implementation is that this PR's version compares header hashes, while the supervisor one compares header for equality, as per the fork detection spec. We should discuss which is best somewhere.

thanks @romac!


Problem with calling toaster in observable 'subscribe'

Hi! I'm using Angular2-Toaster in Meteor+Angular2 application.
Also I'm working with Mongo collection via MongoObservable (meteor-rxjs)
I have a problem with displaying notifications after updating user profile, some time it shows after 3-4 attempt.
Here is my code:
(console.log works after each update)
Users.update(Meteor.userId(), {
$set: {
'profile.first_name': data.first_name,
'profile.last_name':  data.last_name,
'profile.country':    data.country,
'profile.city':       data.city,
'profile.phone':      data.phone
}
})
.subscribe(function(){
console.log('Updated!');
toaster.pop('success', 'Well done!', 'Profile updated');
});
Do you have any ideas on that?
Thanks!

Can you please provide a repo?  the toast.component will explicitly force change detection for the component on toast add so that you do not have to worry about parent change detection impacting the toast container instance.
There is a possibility that your observable is not hot, causing the first few fires to not hit your subscribe properly.  If you are able to create a plunker that demonstrates the problem, it would be much easier to point you in the right direction.

I have the same problem..

@iwebd if you create a plunker reproducing the issue you're seeing I'm happy to take a look

Hi,
i have the same issue. When pop method is used in an observable subscribe, the toaster does not show. It perfectly works when i use it out of this context.
The shitty workaround i made is to simulate click... sadness :(
I just want to display a toaster if my POST req is a success.
If you have any tips !
Thks a lot buddy and thks for your work :)

@krustypop sorry to hear you're experiencing the same thing. Would you be able to put together a small reproduction so that I can investigate?

Here it is @Stabzs
`
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { CityService } from '../../services/city.service';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { ToasterService } from 'angular2-toaster';
import { Observable } from 'rxjs';
import { City } from '../../models/city';
@Component({
selector: 'app-modal',
template:     <div class="modal-body">         <button class="btn btn-warning" (click)="toastAsync()">toastAsync</button>         <button class="btn btn-complete" (click)="toastSync()">toastSync</button>     </div>
})
export class ModalComponent {
constructor(public activeModal: NgbActiveModal, private toaster: ToasterService, private cityService: CityService) {}

toastSync() {
    this.toaster.pop('success', 'City created with success');
}

toastAsync() {
    const city: City = Object.assign({}, {name: 'My Lovely City'});
    this.cityService
        .create(city)
        .map(re => re['data'])
        .subscribe(city => {
            this.toaster.pop('success', 'City created with success');
        });
}

}
`
Maybe it comes from the fact that the toast is asked in a modal (ng-bootstrap) context ?
Thks a lot ;)


[Bug]: On adding regex the error message is not displayed persistently in the input widget

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
It is observed that by passing the invalid value regex error message is not displayed

Steps To Reproduce
1.Launch appmsith app in release/Prod environment
2.Drag and drop input widget
3.Add regex as [a-z]
4. Pass the following value in the input ADSFDF#%$^ observe error message will be displayed
5. Pass the following value DDSFFr or VGHT#e any invalid values with any small letters and observe - No error message is displayed
Environment
Production
Version
Cloud

@YogeshJayaseelan can you check the same issue in here. https://www.regextester.com/
According to this the second text "DDSFFr" is valid for [a-z]

@YogeshJayaseelan Here it seems like there is an issue with the regex. The one that you've mentioned in the above video is fuzzy regex and will only check if 1 char of it is in lowercase and will validate.
Pl. recheck with this regex: ^[a-z]+$
https://images.zenhubusercontent.com/275993885/3e3f7679-73d5-48b1-b253-f0add4b0429d/screen_recording_2022_01_27_at_3_09_04_pm.mov


DUSD-DFI transfer not carried out

Actual behavior: the transfer on 2021-12-17, 06:32p.m. from my desktop wallet app to my DeFiChain mobile wallet was not completed
Expected behavior: I have transferred my liquidity (63.4516630 DUSD-DFI) in the DUSD-DFI LM-pool from the desktop app to my mobile DeFiChain wallet DUSD-DFI mining pool, but there was no credit
How to reproduce it (as minimally and precisely as possible):

What are your environment parameters?

DeFiCh/app Version: 2.8.1
Operating System (OS): macOS Monterey
– RAM (GB): 16 GB
– CPU (Intel Core i5/i7/etc.): 2,6 GHz 6-Core intel Core i7
Current free storage capacity: 230 GB

Anything else we need to know? thde transfer from my mobile wallet to the desktop wallet app worked

app logs.zip

Hi @steffenHberlin , your transaction seems to be confirmed. Can you double check the address is correct on your mobile light wallet?

I've checked my light wallet adress, it is correct.

Hi @steffenHberlin , if you're using the same 24 words then yes, there's one address tag to your seed. Unless you created a 2nd address from on your current 24 words account, then you'll have 2 addresses to manage.

Hi @steffenHberlin , update v2.9.1 is out, this is a mandatory update. Kindly backup wallet and read through the release notes before updating. This comment is to notify you about the update.
Do give a thumbs up to this comment if your issue has been resolved, otherwise, please send new information (include screenshots) and app logs. Thank you.


shap.plots.waterfall with more decimal numbers

I create a waterfall plot with
shap.plots.waterfall(shap_values[0])

How to show more decimal numbers ? Thank you

maybe you can multiply "shap_values[0]"  x10 or x100?
dont know if that works, but give it a try
or check the values on a table and check how low the number is (if its really tiny check other features that can make a bigger impact on the model output).
with something like this and then plot it?:
df=pd.DataFrame(np.abs(shap_values).mean(0))

you can simply modify the source code of waterfall, search for "format_value" and change to your ideal decimal numbers

how to find the source code

I found @haochuan-li's solution to be effective.
To implement it, navigate to the following path:
.../site-packages/shap/plots/_waterfall.py
In the code, look for the sections labeled "# draw the positive arrows" and "# draw the negative arrows", in this case. You'll need to modify the formatting of decimals for both positive and negative values within these sections.

Hello,
I am changing the source code of waterfall and it has no effect on the plot. All the formats of the code were replaced by 0.10 and nothing changed. Someone could help me on this. Thank you
txt_obj = plt.text(
            neg_lefts[i] + 0.5*dist, neg_inds[i], format_value(neg_widths[i], '%+0.10f'),
            horizontalalignment='center', verticalalignment='center', color="white",
            fontsize=12
        )

Hello,
I am changing the source code of waterfall and it has no effect on the plot. All the formats of the code were replaced by 0.10 and nothing changed. Someone could help me on this. Thank you
txt_obj = plt.text(
            neg_lefts[i] + 0.5*dist, neg_inds[i], format_value(neg_widths[i], '%+0.10f'),
            horizontalalignment='center', verticalalignment='center', color="white",
            fontsize=12
        )

Hi,
You seem to have identified the exact portion of the code that necessitates modification. Have you made any progress in resolving the matter?

I feel like a solution to this would be easy for someone who knows the code...
Would it not make sense to change the default behavior to display the value in scientific notation for very large or very small numbers?

The same issue exists for feature values displayed in grey in the yticklabels. They are formatted as %0.03f, and thus display small values, say 1.23e-10 as "0" and large values as annoyingly long numbers. Scientific notation like %.2e could make more sense.
Note: the .3f formatting may be fine assuming the data is normalized at the preprocessing step, which may be frequent, but not all algorithms need it (eg XGBoost).


feature: Specify bitrate

Specific use-case: When downloading voice audio (such as podcasts or lectures) from Youtube over limited data plans, it would be great to be able to specify a very low bitrate in combination with the opus codec.
Feature request: A bitrate option in the parameters that is passed ffmpeg.
Workaround: Would adding parameters to either OutputFlags or FormatFlags in ydls.json work? For a 25kbps example, Youtube-dl would be --audio-quality 25K and for ffmpeg, -b 25k --mode mono.

Hey! yes good idea. I've thought about adding support for some kind of named presets which could be used for things like this. Otherwise i guess having a specific option for audio/video bitrate would work, e.g.  something like a128kbps or  128kabr for 128kbps audio bitrate. But i wonder if ydls still should try to get the high quality source format?
Yes that workaround should work i think. For example you could add an additional format something like:
...
    "ogglow": {
      "Formats": [
        "ogg"
      ],
      "Streams": [
        {
          "Specifier": "a:0",
          "Codecs": [
            {
              "Name": "opus",
              "FormatFlags": [
                "-b:a",
                "25k"
              ]
            }
          ]
        }
      ],
      "Ext": "ogg",
      "MIMEType": "audio/ogg"
    },
...

Let me know if it works. This would still download the "best" source format sorted by codec and bitrate but i guess in most cases it's the output from ydls that you want to limit.

Thanks! I will give it a shot later and update.


Float and Double arguments take integer minimum and maximums

CommandAPI version
2.3
Minecraft version
1.14.4
Describe the bug
The minimum/maximum for these arguments do not allow for values with specific decimal requirements. (you cannot do a minimum of 0.001 for example)
My code
This code reproduces the behavior:
new FloatArgument(0.001f);
new DoubleArgument(0.001d);

Expected behavior
I expected to be allowed to use places after the decimal point when validating arguments.

Apologies - issue has been fixed in this commit.


solution for deadlock (kotlin)

Here's an example of a deadlock written in Kotlin.

Cool, thanks!


simplecov ignore strategy_macros

This file is just macros for tests that strategies can use. It seems that coverage in this is flakey, and we don't need it.

@supernova32  Can I get a CR approval to merge this?


[bsc#1125100] update image refs

dns images were still using the old image tags
Signed-off-by: Maximilian Meister<EMAIL_ADDRESS>

drop in favor of https://github.com/kubic-project/salt/pull/758 to make testing dependent PR's easier


Print hex commands - QUESTION

This is a working arduino sketch:
byte relON[] = {0xA0, 0x01, 0x01, 0xA2};  //Hex command to send to serial for open relay
byte relOFF[] = {0xA0, 0x01, 0x00, 0xA1}; //Hex command to send to serial for close relay

int ledState = false;
unsigned long previousMillis = 0;
const long interval = 2000; //  2 seconds

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize serial:
  Serial.begin(9600);
}

// the loop function runs over and over again forever
void loop()
{
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    if (ledState == true) {
      Serial.write(relON, sizeof(relON));     // turns the relay ON
      ledState = false;
    } else {
      Serial.write(relOFF, sizeof(relOFF));   // turns the relay OFF
      ledState = true;
    }
  }
}

How can i print hex commands with esp-open-rtos?
(lctech device : http://www.chinalctech.com/cpzx/1/333.html)

I have this same exact question and similar board. Did you ever figure it out?

@problemss
Try this:
 byte relON[] = {160,1,1,162};  //Hex command to send to serial for open relay
 byte relOFF[] = {160,1,0,161}; //Hex command to send to serial for close relay

 char relON[] = {160,1,1,162};  //Hex command to send to serial for open relay
 char relOFF[] = {160,1,0,161}; //Hex command to send to serial for close relay

 char relONhex[] = {0xA0,0x01,0x01,0xA2};
 char relOFFhex[] = {0xA0,0x01,0x00,0xA1};

void user_init(void) {

...
      if(on)
      {
        //printf("%.*s\r\n", (int)sizeof(relONhex), relONhex);
        printf("%.*s\n", (int)sizeof(relON), relON);
      }
      else
      {
        //printf("%.*s\r\n", (int)sizeof(relOFFhex), relOFFhex);
        printf("%.*s\n", (int)sizeof(relOFF), relOFF);

      }
 }

It will turn on but i tried everything, it will turn off only in the same code block.
Put it to your main code block after serial start.
wait 3 seconds
turn on
wait 3 seconds
turn off
Somehow when it is on, you can only turn off it in the same code block. This maked me sick!
When code block comes to end it will not work again (i tried while(1) {...} and also as a seperate function )
Please write if you can find a solution.

@kiralikbeyin I found a solution!!!
Man I tried so many things, but the cause is so simple. when you pass a 0 it is treated as a null. When printing strings, the null character is used to designate the end of the string. So printf is only printing the first two characters and then stopping. To fix this you have to print the 0 by itself.
printf("%.*s", (int)sizeof(c_relOFF1),c_relOFF1);
printf("%c",'\0');
printf("%.*s\n", (int)sizeof(c_relOFF3),c_relOFF3);

Where the varibles are defined as
char c_relOFF1[] = {160, 1};
char c_relOFF3[] = {161};

Ignore my variable numbering as I have been trying so many things, I will be going back in and cleaning up the code now that it is working!

@problemss works fine thank you!


333 persistent urls

All .env files are cleaned up and homogeneous now.
The persistent URLs work independent of the deployment server.

Not needed anymore.


Install seed folder and let service make with custom lib

I'm looking into the failing dhcp test. I've seen this a few times now, but never been able to reproduce. Ok to test


How to get/set Griddle state outside of component?

Griddle version
1.11.1
Question
How can I get (and set) the Griddle state from outside the component?
Like you can see in the CodeSandbox, I want to use (for testing purposes, just show) the filter value and the actions.setFilter function outside the Griddle component.
Is there a recommended way of doing this?
CC: @dahlbyk

@MichaelDeBoey you could inject an event handler into Griddle to receive filter updates, but there's not a great way to push an external filter update back into Griddle's store.
More common would be to replace Griddle's Filter with a component connected to an external store. Check out this story.

@dahlbyk The goal is to really remove the Filter within the Griddle component and have a custom Filter on a totally different place outside the Griddle component

@dahlbyk The goal is to really remove the Filter within the Griddle component and have a custom Filter on a totally different place outside the Griddle component
Any idea how this could be accomplished?

That same story basically does this already - data is filtered outside the <Griddle />. Just set Filter: () => null to replace the default Filter.

@dahlbyk That story also filters the data, I was thinking about just setting the filter value and let Griddle do their filtering, like they would do with the internal Filter

Try this modification to that story:
diff --git a/stories/index.tsx b/stories/index.tsx
index 6fe219f..191b8ce 100644
--- a/stories/index.tsx
+++ b/stories/index.tsx
@@ -985,15 +985,18 @@ storiesOf('Griddle main', module)
       })
     )(CustomFilterComponent);

+
     const plugins = [
       LocalPlugin,
       {
-        components: { Filter: CustomFilterConnectedComponent },
+        components: { Filter: () => null },
       },
     ];
     const SomePage = props => (
       <div>
-        <Griddle data={props.data} plugins={plugins} storeKey="griddleStore" />
+        <Griddle data={props.data} filter={props.filter} plugins={plugins} storeKey="griddleStore" />

         Component outside of Griddle that's sharing state
         <CustomFilterConnectedComponent />
@@ -1002,9 +1005,8 @@ storiesOf('Griddle main', module)

     const SomePageConnected = reduxConnect(
       (state: TestState) => ({
-        data: !state.searchString ? state.data :
-          state.data.filter(r =>
-            Object.keys(r).some(k => r[k] && r[k].toString().indexOf(state.searchString) > -1)),
+        data: state.data,
+        filter: state.searchString,
       })
     )(SomePage);

Ultimately I don't know that you'll be able to use actions.setFilter to do what you want, as you won't be able to access Griddle's internal Redux store (at least not without breaking with React best practices). But if you track filter externally, providing it through props seems to do the trick.

@dahlbyk That seems to work indeed, but like you said that's a bit of a "hack" to make it work of course 😕
I'm wondering if there's a better way on doing this... 🤔
The special thing here is that we have 2 totally different stores that aren't really connected in any way (except the data is probably also in the own redux state, which it is in my case)...
Maybe @gaearon can shed his light on this one?

Well, think of Griddle's internal Redux store as an implementation detail. You can hook into it with middleware, but it wouldn't make sense (IMO) for an external component to dispatch actions to the internal store.
From a general React standpoint, providing the current filter via props seems totally legit. Really the only "hack" here is that filter isn't documented as part of the initial state that can be set via props.

@dahlbyk If you think of it like that, you're right indeed that it makes sense to provide filter as a prop to the Griddle component.
The only strange thing I see then is that it isn't shown in the Filter-box (like you dan see in v2 of the CodeSandbox)... 😕

The only strange thing I see then is that it isn't shown in the Filter-box (like you dan see in v2 of the CodeSandbox)... 😕

At a glance, that seems like a bug in Griddle. value isn't set on the Filter input.

@dahlbyk Glad to have caught a bug here 🙂
OK setting the Filter value via a prop on the Griddle components seems logical indeed, but retrieving it is still not possible, except if I manage that piece of state to myself...?

@dahlbyk I'm not seeing it like "a child providing state to it's parent", I'm seeing it more like an extra 'global' state, that I can access, like I do with my own Redux state.

I'm seeing it more like an extra 'global' state, that I can access, like I do with my own Redux state.

Except it's not global. It's mostly hidden inside the <Griddle />. 😀 And if you have a page with two <Griddle /> instances, even if they use the same storeKey, you'll have two distinct internal stores.
If you want 'global' state, the right thing to do is to put it in your own app's Redux store.

@dahlbyk Yeah I know it's not global, but I think you understand what I'm trying to say.
Just feels a bit grim at first, but after some thoughts about it, it (like you said) an implementation detail, so as long as I'm not creating custom components that replace the default ones, I indeed should keep that piece of state in my own store and just pass it as a prop 🙂


Load all known Kubernetes Auth Plugins

This loads Kubernetes' auth plugin package, which in turns loads the packages for each individual auth provider: https://github.com/kubernetes/client-go/blob/master/plugin/pkg/client/auth/plugins.go.
This fixes https://github.com/kubernetes-incubator/external-dns/issues/222 and https://github.com/kubernetes-incubator/external-dns/issues/237.
@aight8 @ingshtrom can you give it a shot on your clusters?

👍


Documentation: Template Block, Avoiding  Styling

If you want to avoid the <ul> styling that ships with the component, it might be beneficial to mention in the docs that you can clear the tagName property or set it to something else (e.g. a div).  For example:
{{#multiselect-checkboxes tagName="div" options=users labelProperty='name' selection=selectedUsers as |label isSelected value|}}
...
{{/multiselect-checkboxes}}

I realize that this is common knowledge if you are familiar with components, however some developers that are starting out could use this extra help.

Agreed, wouldn't hurt to add this explicitly to the readme :+1: Will add this as part of next release.

Resolved as of version 0.6.0.


数据预处理出错（Data preprocessing error）

Hello, I am running Python extract_ bboxes. py --proj_ root=<path/to/project_ root> --dataset_ In the code name=ped2 --mode=train, I found that the length of the dataset I got was 0. Why there was no data.
（你好，请问我在运行python extract_bboxes.py --proj_root=<path/to/project_root> --dataset_name=ped2 --mode=train这一代码时发现我得到的dataset的长度为0没有数据是什么原因。）

The problems are as follows
（出现的问题如下所示）

this is due to your path is wrong ! i have meeting

Hello, I am running Python extract_ bboxes. py --proj_ root=<path/to/project_ root> --dataset_ In the code name=ped2 --mode=train, I found that the length of the dataset I got was 0. Why there was no data. （你好，请问我在运行python extract_bboxes.py --proj_root=<path/to/project_root> --dataset_name=ped2 --mode=train这一代码时发现我得到的dataset的长度为0没有数据是什么原因。）  The problems are as follows （出现的问题如下所示）

Hello, I met the same problem with you. Could you tell me how to solve this problem?

Hello, I am running Python extract_ bboxes. py --proj_ root=<path/to/project_ root> --dataset_ In the code name=ped2 --mode=train, I found that the length of the dataset I got was 0. Why there was no data. （你好，请问我在运行python extract_bboxes.py --proj_root=<path/to/project_root> --dataset_name=ped2 --mode=train这一代码时发现我得到的dataset的长度为0没有数据是什么原因。）  The problems are as follows （出现的问题如下所示）

Hello, I met the same problem with you. Could you tell me how to solve this problem?

Hello, the reason for this problem is that the suffix of ped2 dataset image in the author code is TIF, but the dataset image provided in the author link is a JPG image, which only needs to be in the author's dataset In the PY file, just change the label corresponding to ped2 to jpg

Thanks, I will try again!

Hello, the reason for this problem is that the suffix of ped2 dataset image in the author code is TIF, but the dataset image provided in the author link is a JPG image, which only needs to be in the author's dataset In the PY file, just change the label corresponding to ped2 to jpg

Excuse me, I have changed the label, but the length is still 0. I wonder if I have got this wrong or there may be another reason.

Hello, I remember that there are two places that need to be modified. You can check whether they have been modified in both places and search tif globally

Thank you for your reply. I have modified these two places before but it didn't work. Have you met this warning while running extract_ bboxes.py? I'm not sure if it's related.
\mmdetection-master\mmdet\models\builder.py:51: UserWarning: train_cfg and test_cfg is deprecated, please specify them in model
warnings.warn(

Thank you for your reply. I have modified these two places before but it didn't work. Have you met this warning while running extract_ bboxes.py? I'm not sure if it's related.
This seems to have no effect. If the length is 0, the dataset is not loaded. You can debug step by step to see what the problem is

Thank you for your reply. I have modified these two places before but it didn't work. Have you met this warning while running extract_ bboxes.py? I'm not sure if it's related.
This seems to have no effect. If the length is 0, the dataset is not loaded. You can debug step by step to see what the problem is

Thank you for your help. I'll check it again.

Have u solve this problem？

I solved the problem before My problem is not caused by the wrong path, but that I downloaded the image suffix of the dataset provided by the author Jpg, but the suffix in the code of data preprocessing is tif

this is due to your path is wrong ! i have meeting

你好,感谢你的回复,我在之前解决了问题.我的问题并不是由于路径不对引起的,而是我下载了作者提供的数据集的图片后缀是.jpg但是作者在代码中对数据预处理的代码中的后缀是.tif Hello, thank you for your reply. I solved the problem before My problem is not caused by the wrong path, but that I downloaded the image suffix of the dataset provided by the author Jpg, but the suffix in the code of data preprocessing is tif

你好，作者提供的数据集链接打不开了，你能分享一下嘛，谢谢！

Running extract_ Flows.py
TypeError: forward() takes 3 positional arguments but 5 were given
May I ask how to solve this problem


Nix cannot execute Shake's test suite

Shake's test suite depends on ghc being aware of extra packages, which we achieve by setting $GHC_PACKAGE_PATH. New versions of the test suite, however, run some kind of cabal configure, which fails when that environment variable is set: http://hydra.cryp.to/build/942465/nixlog/2/raw.

All builds at http://hydra.cryp.to/project/shake fail as well. I've disabled the CI job for the time being.

The error is fallout from https://github.com/ndmitchell/shake/issues/252, which means I now reconfigure Shake into a different directory so I can generate documentation.
So the relevant bit from the log is:
Command: runhaskell Setup.hs configure --builddir=output/docs/dist --user
Exit code: 1
Stderr:
Setup.hs: Use of GHC's environment variable GHC_PACKAGE_PATH is incompatible
with Cabal. Use the flag --package-db to specify a package database (it can be
used multiple times).

That's pretty horrid. I guess I need to grab the GHC_PACKAGE_PATH and convert that to a --package-db flag? Do you know what the GHC_PACKAGE_PATH points at, and if there is a package db in a predictable location from that? I've not really used either mechanism. It's a shame Cabal can't do that for me.

Seems like https://github.com/yesodweb/yesod/commit/a7cccf2a7c5df8b26da9ea4fdcb6bac5ab3a3b75#diff-7cd4bde7642547b86872a48f8139829eR138 should be able to be applied here as well to translate the variable.

I've fixed this as part of getting Stack to work, can you try again now @peti?

The current master branch has an undeclared dependency on the cabal build tool:
## BUILD docs --abbrev=output=$OUT -j3
# cabal (for $OUT/docs/dist/setup-config)
Error when running Shake build system:
* output/docs/Success.txt
* output/docs/Files.lst
* output/docs/dist/doc/html/shake/index.html
* output/docs/dist/setup-config
user error (Development.Shake.cmd, system command failed
Command: cabal configure --builddir=output/docs/dist --user --package-db=/tmp/nix-build-shake-0.15.5.drv-0/package.conf.d --package-db=.
cabal: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory))

TESTS FAILED
Test suite shake-test: FAIL

Yes, the test depends on the cabal tool, can I add that as a run dependency some way?

Strangely enough, Cabal does not know about that build tool out of the box, so you need to register it in your Setup.hs file:
module Main ( main ) where

import Distribution.Simple
import Distribution.Simple.Program

main :: IO ()
main = defaultMainWithHooks simpleUserHooks
       { hookedPrograms = [ simpleProgram "cabal" ]
       }
~~~

Then the `shake.cabal` file can have an attribute

build-tools: cabal

in its test suite stanza.

If I add cabal to the list of available build tools manually, then the test suite fails as follows:
## BUILD docs --abbrev=output=$OUT -j3
# cabal (for $OUT/docs/dist/setup-config)
Config file path source is default config file.
Config file /tmp/nix-build-shake-0.15.5.drv-0/.cabal/config not found.
Writing default configuration to
/tmp/nix-build-shake-0.15.5.drv-0/.cabal/config
Warning: The package list for 'hackage.haskell.org' does not exist. Run 'cabal
update' to download it.
Resolving dependencies...
Configuring shake-0.15.5...
# cabal (for $OUT/docs/dist/doc/html/shake/index.html)
Running Haddock for shake-0.15.5...
Preprocessing library shake-0.15.5...
haddock: internal error: ./package.cache: openBinaryFile: does not exist (No such file or directory)
Error when running Shake build system:
* output/docs/Success.txt
* output/docs/Files.lst
* output/docs/dist/doc/html/shake/index.html
user error (Development.Shake.cmd, system command failed
Command: cabal haddock --builddir=output/docs/dist
Exit code: 1
Stderr was empty)

TESTS FAILED

What do you have as the GHC_PACKAGE_PATH when running Nix packages? Is it accurate? Does it contain a cache of packages? Will it have all the packages required to build Shake?
Given cabal is a runtime dependency, I really don't want to add it to the compile time dependency list, and writing my own Setup.hs fills me with horror - it makes everything related to Shake much harder. Any way to hint at it being a runtime dependency via other mechanisms? Nix specific metadata somewhere?

GHC_PACKAGE_PATH is accurate and refers to a directory that contains the transitive closure of all dependencies listed in the Cabal file.
I'm not sure what the distinction between run-time and compile-time means with regard to the test suite. The test suite is run as part of the build, so arguably everything that's a run-time dependency of the test suite is a compile-time dependency of your package. I realize that the complications involved in getting those dependencies declared accurately are unpleasant and that you'd prefer to avoid them, but I don't see a way to accomplish that. If you execute cabal as part of your build, then cabal is a build-time dependency. That's just how it is.
Personally, I would not want my test suite to depend on cabal in the first place, but I guess that's a matter of taste.
Maybe you could try to detect the presence of cabal at run-time and fail the test suite gracefully, i.e. in a non-fatal way if it's not there?

Building the test and running it are definitely two different things, although I can see how you might run it as part of the overall build step.
I would significantly prefer my test suite to not depend on Cabal, but every other approach has failed on other platforms for other reasons - I just want to generate haddock documentation and then check it is type checks. I might have another go at avoiding Cabal and using runhaskell on the Setup.hs - that should be NIX compliant, right? I think my previous flaw might
My concern with a custom Setup.hs is that it breaks plenty of other things and the API changes every 5 minutes, so the benefit of tests is Nix is probably outweighed by the cost of a custom Setup. I have used custom setups in the past, and vowed never to again. 4 times bitten, 5th time shy.
If all else fails, I'll just exclude this test based on the presence/absence of cabal, but then I always worry that my standard tester will accidentally put cabal in the wrong place and I'll omit tests I wanted to run. But that's not the end of the world.
TLDR: I'll try and avoid Cabal first.

Building the test and running it are definitely two different things, although I can see how you might run it as part of the overall build step.

Well, you are right, of course. It's just that Cabal does not distinguish build-time and run-time dependencies in that way; so these concepts do not exist in our "language" (for describing builds). Curiously enough, Nix does not distinguish these concepts (explicitly) either. We end up scanning the compiled binaries for paths that look like /nix/store/<sha-hash>-... and call those paths that we discover "run-time dependencies", but AFAIK you cannot easily declare those things in the build expression. Anyway, I digress ...

I just want to generate haddock documentation and then check it is type checks.

Using runhaskell Setup.hs seems like the safest bet to me -- that's what we do in Nix, too. One might also argue that you could leave this stuff out of the regression test suite entirely and instead provide some kind of test script that's run on Travis-CI (and by everyone else who cares) but not as part of cabal check.

My concern with a custom Setup.hs is that it breaks plenty of other things and the API changes every 5 minutes.

The custom-build API is subject to changes, no doubt, but that particular part of the API has been stable for a long time. I wouldn't worry about the stability of your build because of use of the hookedPrograms extension. Many other foundational libraries use these hooks (like zip-archive, which needs zip to run its test suite), and these don't seem to have any trouble. The major downside with build-tools is that cabal-install will not install them automatically (but stack will).

If all else fails, I'll just exclude this test based on the presence/absence of cabal, but then I always worry that my standard tester will accidentally put cabal in the wrong place and I'll omit tests I wanted to run.

You could check the presence of an environment variable, say SHAKE_STRICT_TESTS, and define that one in your Travis-CI job to force test failures if cabal isn't there. That way, the tests would just work(tm) for everyone, but you wouldn't run the risk of getting false positives because the travis guys changed their default $PATH.

I've switched to runhaskell Setup, let's see how that does.

Now it says:
## BUILD docs --abbrev=output=$OUT -j3
# runhaskell (for $OUT/docs/dist/setup-config)

Setup:1:1: lexical error at character '\DEL'
Error when running Shake build system:
* output/docs/Success.txt
* output/docs/Files.lst
* output/docs/dist/doc/html/shake/index.html
* output/docs/dist/setup-config
user error (Development.Shake.cmd, system command failed
Command: runhaskell Setup configure --builddir=output/docs/dist --user --package-db=/tmp/nix-build-shake-0.15.5.drv-0/package.conf.d --package-db=.
Exit code: 1
Stderr:
Setup:1:1: lexical error at character '\DEL'
)

TESTS FAILED

Hmm, it looks like it's trying to runhaskell on a literal file called Setup. Any chance Nix created that, and thus GHC's "find Setup.hs or Setup.lhs" logic got bypassed?

OK, I've made it explicitly ask for Setup.hs, since there's no chance I'll ever use Setup.lhs anyway.

Now we're back to the same error we had with cabal before:
# runhaskell (for $OUT/docs/dist/doc/html/shake/index.html)
Running Haddock for shake-0.15.5...
Preprocessing library shake-0.15.5...
haddock: internal error: ./package.cache: openBinaryFile: does not exist (No such file or directory)
Error when running Shake build system:
* output/docs/Success.txt
* output/docs/Files.lst
* output/docs/dist/doc/html/shake/index.html
user error (Development.Shake.cmd, system command failed
Command: runhaskell Setup.hs haddock --builddir=output/docs/dist
Exit code: 1
Stderr was empty)

TESTS FAILED

Not sure what is going on with ./package.cache. Can your code that interprets GHC_PACKAGE_PATH deal with an empty entry? We configure the variable as follows:
export GHC_PACKAGE_PATH="$packageConfDir:"

I take the path and pass each to cabal in order. I guess cabal prefers the last flag, and GHC prefers the first path entry. I've now reversed it, which might give you more luck.

(It would be nice if Cabal just obeyed the path like everyone else did :()

535857eba439d3d4698b49d04d69c4409090843b gives the same error as before: no change.
What bothers me is the path ./package.cache. I'm not sure what the current working directory is at that point, but if it's the top-level source code directory, then it's no wonder there's no package.cache there -- because there isn't.

Given a GHC_PACKAGE_PATH of $packageConfDir: isn't that the same as saying there is a package DB at $packageConfDir and .? Why are you adding the trailing :? I assume that is where the ./package.cache is coming from.

According to https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/packages.html#ghc-package-path, the meaning is:

If GHC_PACKAGE_PATH ends in a separator, then the default package database stack (i.e. the user and global package databases, in that order) is appended.

I did not know what. Now I just filter out "", I hope that's sufficient...

## BUILD docs --abbrev=output=$OUT -j3
# runhaskell (for $OUT/docs/dist/setup-config)
Configuring shake-0.15.5...
# runhaskell (for $OUT/docs/dist/doc/html/shake/index.html)
Running Haddock for shake-0.15.5...
Preprocessing library shake-0.15.5...
haddock: internal error: ./package.cache: openBinaryFile: does not exist (No such file or directory)
Error when running Shake build system:
* output/docs/Success.txt
* output/docs/Files.lst
* output/docs/dist/doc/html/shake/index.html
user error (Development.Shake.cmd, system command failed
Command: runhaskell Setup.hs haddock --builddir=output/docs/dist
Exit code: 1
Stderr was empty)

TESTS FAILED

splitSearchPath "foo:" gives ["foo","."], whereas curiously the Windows version gives ["foo"]. Very weird. I now filter out both empty and ..

46b7533f468015b22fdd2fa13415e402def39625 succeeds its test suite in Nix. Wow, that was easy!

splitSearchPath "foo:" gives ["foo","."], whereas curiously the Windows version gives ["foo"].

I find it hard to imagine that this could possibly be intended behavior. And if it is, then it's still a really bad idea. Have you considered reporting this phenomenon as a bug?

Finally! Thanks for all your help - I owe you a beer.
I've raised https://github.com/haskell/filepath/issues/51 (to myself, as it happens) to investigate. I suspect this may meet both platforms guidelines, but if so, it needs explicitly documenting as a difference.

Is there going to be a new release of shake soon? I wonder because I'd like to re-enable the test suite in Nixpkgs, but I can only do so after the fixed version is available on Hackage.

Shortly, yes, although the fsatrace stuff is currently in flux. I guess my options are to release saying that is unsupported, or wait a while til that clams down. @jacereda - any thoughts/preferences?

I'll be working on fsatrace and I think I can have something releaseable on Monday. But if you're in a hurry go ahead.

Not in that much of a hurry - my Friday and weekend are already spoken for so early next week sounds good.

Just take your time guys, there's no need to hurry. When the new version comes out, please just ping be briefly so that I can update the build expression in Nixpkgs to run the tests.


⚠ SceneTime has degraded performance

In 7ad5cfd, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 5850 ms

Resolved: SceneTime performance has improved in c3f479e after 7 minutes.