Qt5 add

Added Qt5.7 application framework. The webengine, tests, and examples have been excluded as they would significantly increase the build time and storage requirements (it already needs like ~3GB for a dynamic build, and ~7GB for a static build). These can be added later in separate package. The webengine is also known to be very fickle during builds. I had to add in another function (vcpkg_execute_required_process_repeat) which will repeatedly try to build up to a certain number of failures, as the build can sometimes fail when performing a static build and just needs to be re-run to continue. I also added the jom tool; Qt's version of nmake which supports parallel builds. Without it, the build time would increase by several orders of magnitude. Qt already takes an hour or 2 to build and install so this would be very undesirable. Also of note, this package builds the open source version of Qt, which is LGPLv3. If needed, another package can be added for the commercial version.

Hi @Barath-Kannan, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.microsoft.com.

TTYL, MSBOT;

@Barath-Kannan, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, MSBOT;

I have also been working on qt5, one thing I notice is that you are not using system libs, which is probably not great. in order to use them you have to patch a bunch of project files.
I'm trying to get everything, including QtWebEngine working. Also it's important to make sure there's a test project, because the cmake files distributed with qt may need to be modified to be able to find the libraries and tools.

Given that Qt is so large and that I am not familiar enough with it to fully validate this PR, @barcharcraz can you review this to ensure a basic level of functionality? I agree that we would like to get as many parts working as possible in the long term, however I have no problem with merging incremental progress.

Yeah I'll test it out. It may take a little while though (god knows testing all the build combinations is not a quick process)

Yeah the included cmake files might not work so nicely. Things are made difficult by the fact that:
a) some of the tools require dlls for shared builds, but we can't put execs in the /bin/ folder
b) the location of debug libs/dlls is expected to be the same as release libs/dlls - same issue, some tools can fail or misbehave

Maybe we can create a junction in the tools directory called .LOCAL that points to bin. That should cause all the applications installed in tools to load their libraries from vcpkg.

It's installing the package to the packages directory (qt build install), and then installing the final files to the "installed" directory outside of the portfile, so if you create a junction in the portfile inside the package directory, it's probably going to do a deepcopy when it copies them over to the "installed" directory

No, I mean add that junction as part of the platform setup. That way any tools that live in installed/tools will be able to load vcpkg dlls. I'll experiment with this later, it's unclear how .local redirection works. MSDN says you need a file named exename.local, but windows internals says you can make a directory called .LOCAL and just throw dlls into it.

Regarding fixing the cmake find_package files, I have written a python script that does it automatically. I can't see any other way to do it since there is no other way nice way to perform a string replace for the changed debug directory locations - cmake doesn't support this behaviour unless the input files are already set up to use cmake's special templating substitution (the configure_file function) and there is no sed like equivalent native to windows.

cmake has string(REPLACE) and I think it supports regex and whatnot. you can use file(read) and file(write) (I think) to get the string to operate on. I'm going to combine our work and split things up into separate ports per qt module. For the dll search path .local redirection seems to work, although you need to set a registry key when using it with a manifested executable. I tried patching the manifest as well, but the loader really does not like traversing junctions or symlinks when doing SxS redirection.

FYI: we have a specific issue in which we discussed how to properly support Package-supplied CMake conf files https://github.com/Microsoft/vcpkg/issues/77 . A use of string(REPLACE ...) is discussed in https://github.com/Microsoft/vcpkg/issues/77#issuecomment-250028244 and was also used for other ports, such as https://github.com/Microsoft/vcpkg/blob/master/ports/openjpeg/portfile.cmake#L22 .

ah, yes I can probably do something with string(REPLACE ...). Won't be as easy as that one because the substitutions are a bit more complicated but I can make it work. The answers I found in stack overflow weren't particularly useful so I assumed it wasn't supported

There should be no need for a .LOCAL redirect -- either putting the exe's directly into the bin\ folder or copying any needed DLLs to the tools\ folder would be preferable.
The purpose of keeping the bin\ folder free from exes by default is to require portfiles to strongly consider and whitelist every exe they deploy. Vcpkg is not intended to be a general purpose developer tool delivery system; we aren't trying to package vim, emacs, certutil, ssh-keygen, etc. We just want to deliver C++ libraries and the minimum number of extra tools required to build against those libraries. For example, protoc and yacc are reasonable tools to distribute because they are critical at build time and are tied to runtimes that must be linked into the target process.
Generally, if the application is used primarily interactively (for example, it has a GUI), then it is better to download and install a prebuilt MSI from outside of Vcpkg. Vcpkg could help the distributor of that MSI to build it in the first place, but it is not important that git.exe uses the exact same copy of zlib as the rest of your application. Indeed, it would be quite unfortunate if you were unable to update your build's copy of openssl because the version of git.exe in Vcpkg doesn't support it!
We can fight these unnecessary constraints in two ways:

Minimize the number of tools deployed.
When tools must be deployed, prefer prebuilt versions if they do not need to have matching underlying libraries.

I'm hoping to submit a PR later today or early tomorrow with qt5-base that uses this work merged with my own. The remaining steps are to get qt linking against system debug libraries in debug mode, and to make sure adding packages for the other modules will be painless.

I'm not sure that depending on the system libraries supplied from vcpkg is such a good idea with Qt. It makes the library behaviour much less predictable than if we just use the ones included with the source (who's to say that Qt has been thoroughly tested with the particular version of openssl/harfbuzz/whatever that vcpkg has). Like you mentioned, if a particular dependency can't perform static builds, qt can't either. I guess it's the maintainers call though.

yeah I think I agree based on my experience trying to get it to build with system libs, the other thing is that if we depend on the platform libs then they won't be installed along side outputs, which is not really great. you may well be right with this. It also makes the whole thing harder to build.
OK in that case this PR looks good. I'll make a PR to your repo with a few additions to fixcmake and a patch to the toolchain file to prevent it from trying to override add_executable on imported targets.

The only circumstance where it would be preferable in the longer term to depend on the checked-in dependencies is if Qt has fully forked the libraries (made breaking changes, moved all the symbols into a namespace, etc). In this case, we effectively have qt-zlib alongside zlib and they don't conflict with each other. If Qt has not renamed all the symbols (which I suspect they have not), then in order to make static linking work correctly and ensure user sanity, we must use the system libs.
Note that the above argument only applies to the runtimes that will be linked with the user's application. The tools can very well link whatever they want for robustness; this is an advantage of downloading the prebuilt and pre-tested executables and placing those directly into tools\ directory.
What do you mean by "if we depend on the platform libs then they won't be installed along side outputs"?

you're right. I guess we should hold off on merging until we can link with system libraries.
There's a bunch of patches to qt's qmake files required to link against the right names. I have some of them working but only against release system libraries.
I'll submit a pr to barath's branch without that and we can continue working to get linkage sorted.

Despite the argument above, I'd be happy to merge incremental progress that uses the built-in copies (that's why I qualified with "in the long term").
I know a lot of people would like to use Qt, so even if it is partially working that's great! Making it available sooner will also allow others to test it more easily and bring up issues that you might not know about.

OK I made a PR to Barath's branch.

@ras0219-msft I don't believe there are library conflicts with the existing libraries - the version used is controlled by preprocessor directives at compile time and I'm fairly sure they're appropriately protected. The built in versions are the default so it's highly unlikely that symbols would overlap - the prebuilt libraries that are provided with the Qt online installer already use the built-in third party libraries. The only issue is if we are ok with a python script to modify the cmake files - cmake's string replace is not quite the right tool for the job. If not, I can look at directly modifying the qmake files that generate the cmake files in the source, and then providing a patch when I get home tonight

My vote is to use the Python script. I tried to do it using regex replace
and it was a nightmare. The Python file also makes it pretty easy to add
new fixes if anything comes up.
On Nov 1, 2016 7:26 PM, "Barath Kannan"<EMAIL_ADDRESS>wrote:

@ras0219-msft https://github.com/ras0219-msft I don't believe there are
library conflicts with the existing libraries - the version used is
controlled by preprocessor directives at compile time and I'm fairly sure
they're appropriately protected. The built in versions are the default so
it's highly unlikely that symbols would overlap - the prebuilt libraries
that are provided with the Qt online installer already use the built-in
third party libraries. The only issue is if we are ok with a python script
to modify the cmake files - cmake's string replace is not quite the right
tool for the job. If not, I can look at directly modifying the qmake files
that generate the cmake files in the source, and then providing a patch
when I get home tonight
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/vcpkg/pull/219#issuecomment-257729496, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABPnvdIbjMCHLPLRs6pKw9AXhNzhM9rnks5q58q7gaJpZM4Kgqt-
.

The issue with python in specific is that it's a pretty huge dependency. Python 2 in particular doesn't have an available portable zip file (it's msi only), so we can't even automatically download it during the build.
Having that script available for maintainers to run on newer Qt versions, which then is used to make a patch that's used on final users machines seems like a much better option to me.
@Barath-Kannan I don't fully understand what you mean by the macro controls, but let me describe the problem I see in the general case (all concrete details are fictionalized):
Runtimes
Say Qt's prebuilt runtime uses libpng 1.4.2. Vcpkg's version of libpng is 1.6.24. Both of these provide the function libpng_add_default_search_path(const char*). Most importantly, this function was patched in libpng 1.6.5 to support greater than MAX_PATH. I've been a good citizen and checked the changelog and ensured I'm using a newer version (1.6.24).
When the time comes to statically link my application, which static library will I get? The linker will see qt.lib, libpng-qt.lib, and libpng.lib. Both of the libpngX.lib's will provide almost the exact same symbols, so I have no idea what function I'm actually going to end up calling. This additionally has really bad implications for global state.
Vcpkg asserts that the correct way to solve this problem is either to build qt against the newer libpng or to downgrade the system libraries to the version qt demands if the former is not possible. We view the "system libs" as the One True Version that the user has chosen to use for their application.
In this way, I don't see how preprocessor macros can help. The user application (in this scenario) has never seen any of the vendored libpng-qt headers and so cannot be influenced.
Tools
In comparison, for tools that won't be linked into the final application, the above concerns are all completely gone. In this scenario, it very much does make sense to use the pre-tested binaries that Qt's distribution supplies because it really doesn't matter to me what specific version of libpng they use -- I just want qt-repackage-image.exe to work for my build (which presumably it does with the upstream bits).

Python is a build time dependency of Qt anyways (QtQml requires it, as does webkit and webengine). Python3 works and that's what I've been using.

Alright, that's fine then. We should eventually add a checker like we have for Perl in the openssl build that will find and download it if needed.

I've merged your changes @barcharcraz, but do we really want the tests in the base directory?
@ras0219-msft actually I thought that there were preprocessor directives for a namespace wrapper around 3rd party library calls so that it can use system/inbuilt safely without creating ambiguity, but I just checked the source and it seems I was mistaken, so there is some risk there

I put the tests in the base because as a user of vcpkg I probably don't want them (at least not in the longrun), so this makes it easy to put the tests in another repo or submodule.
It's totally not my call though, I just had to decide where to put them and that's where they ended up.

in that case, I'm going to remove them since the vast majority of people won't care about that - they'll be operating under the assumption that it all "just works". We can have a seperate repository (as a submodule) for testing that the installation works correctly later.
@ras0219-msft this should be working correctly now, we can merge this and then transition over to system libraries once the qmake file patches have been written

Great to hear! I'm going to build it locally just to add one final check against "works on my machine", then I'll merge this in.
Thank you both so much, this was a huge undertaking and I'm sure the community will appreciate it!

Ill fix the plugins, it's because the target directory was changed to the share directory

I believe I changed things to copy plugins to share. Maybe I forgot to
remove the empty plugins directory. In any case my app depends on two
plugins so well find out real quick.
On Nov 8, 2016 5:21 AM, "Barath Kannan"<EMAIL_ADDRESS>wrote:

Ill fix the plugins, it's because the target directory was changed to the
share directory
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/vcpkg/pull/219#issuecomment-259099407, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABPnvULA80yzlK2lyV-jFs67rvHYWODEks5q8E0zgaJpZM4Kgqt-
.


Xcode12.5 module compiled with Swift 5.3.2 cannot be imported by the Swift 5.4 compiler

module compiled with Swift 5.3.2 cannot be imported by the Swift 5.4 compiler: /Users/XXX/Library/Developer/Xcode/DerivedData/NXY-bdiioyaaxczbxlgusvqtvlkagrqv/Build/Products/Debug-iphoneos/SnapKit.framework/Modules/SnapKit.swiftmodule/arm64-apple-ios.swiftmodule

same problem

So it still doesn't compile after 22 days?

I believe this is the solution to the problem (if it's the same I've been having) https://developer.apple.com/forums/thread/658129.

Duplicate of #708


[ConstraintSystem] Further unwrap cleanup

This was part of PR https://github.com/apple/swift/pull/18324
If shouldAttemptFixes() then when we are trying to bind type variables, if T? fails, then attempt to bind T for all binding types. This was already happening and valid for subtype bindings. This change tries it for supertype and identity bindings because it allows us the opportunity to matchTypes() a T? value to a T bound variable by diagnosing a missing unwrap.
This was the only situation in which we were previously missing finding that Fix in the constraint system, so with this change all of the unwrap diagnosis can be moved into the new CSDiagnostics.cpp and made static.

@swift-ci Please smoke test

@swift-ci Please smoke test

Looks like checks failed because they hadn't included #18324 yet.
@swift-ci Please smoke test.

I investigated this further, and the issue is slightly different than I originally thought, and I don't think there's any good way to construct the needed fix(es) in advance. The test that addresses this is SR-1069 which is in tests/Constraints/closures.swift.
Even further simplified, the issue arises here:
class C {}
struct S {
  func genericallyNonOptional<T: AnyObject>(_ non: T) {}

  func f(object: C?) {
    genericallyNonOptional(object)
  }
}

T can't be bound to C? because Optional isn't a class type, so we want to bind T to C and emit a missing unwrap.
Interestingly, without this PR the current code handles the above fine, but breaks down with a mix of multiple arguments:
class C {}
struct S {
  func genericallyNonOptional<T: AnyObject>(_ a: T, _ b: T, _ c: T) { }

  func f(_ a: C?, _ b: C?, _ c: C) {
    genericallyNonOptional(a, b, c) // cannot invoke 'genericallyNonOptional' with an argument list of type '(C?, C?, C)' // expected an argument list of type '(T, T, T)'

  }
}

... whereas after this PR, we get the much better suggestion of unwrap fixits for arguments a and b. Will add a test to this effect.

@swift-ci Please smoke test.

Sounds good to me!

@swift-ci Please smoke test


bug: openapi-typescript-fetch deps error

seems this openapi-typescript-fetch version is not has dist folder ! so compile in my own project is error!
but if i change the lock file to lock  openapi-typescript-fetch to ^1.1.3,  it will be working !
code link
{
   "dependencies": {
          "@sevinf/maybe": "0.5.0",
          "openapi-typescript-fetch": "Rendez/openapi-typescript-fetch#c114c381602b9b3891f0ec45dbc5409816743dad"
      }
}

same issue happening here

Same here, unable to deploy to production due to this

If the prepare script isn't executing, it may have to do with your NPM version, does this happen with the --production flag only? In any case I will release a fix for that soon where I'm consolidating a new release of that dep under our org. Stay tuned.

In the meantime, 1.1.3 will be working for commonjs and for module types you'll have to execute the prepare script from the package yourself.

If the prepare script isn't executing, it may have to do with your NPM version, does this happen with the --production flag only? In any case I will release a fix for that soon where I'm consolidating a new release of that dep under our org. Stay tuned.

it happen when i don't add --production
nodejs: 19
yarn: 1.2

In the meantime, 1.1.3 will be working for commonjs and for module types you'll have to execute the prepare script from the package yourself.

1.1.3 is working well when i change the yarn lock file to 1.1.3, cjs is friendly for each bundle tools

1.1.3 is working well when i change the yarn lock file to 1.1.3, cjs is friendly for each bundle tools
Except if your project is type=module, I'll be publishing a new version today which has a proper built dependency.

The new release 1.1.6 should fix this issue, closing...


No function-info.py

Looks great, thanks for your work.
The intructions refer to function-info.py, but it's not in the code

Added, thanks for the callout


Add TileWorld port

This is Tile World, a source port clone of "Chip's Challenge", which originated on the Atari Lynx.
To play the original Chip's Challenge levels, copy your "chips.dat" into 'ports/tileworld/data'  and make sure it's lowercase.
This was possible by modifying the SDL2 conversion of TileWorld from https://github.com/rangeli/tileworld.
This currently runs on RG351P, RG351M, RG351MP and RG351V running ArkOS or 351Elec/AmberElec.
It may run on some of the other very similar handhelds and other OSes as well, but this has yet to be tried on those configurations.

Hi, there's a conflict with the ports.md file.  Can you fix this so I can merge it?  Also, it looks like all assets are already included for this game so it's ready to run correct?  If so, add runtype="rtr" to the end of the entry for it for ports.md.
Thanks,

No problem.  I'll fix it right away.
It's technically ready, but only complete if the 'chips.dat' file gets added to it.
On Thursday, June 2, 2022, 06:55:12 PM CDT, christianhaitian @.***> wrote:
Hi, there's a conflict with the ports.md file. Can you fix this so I can merge it? Also, it looks like all assets are already included for this game so it's ready to run correct? If so, add runtype="rtr" to the end of the entry for it for ports.md.
Thanks,
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

I've made changes to the 'ports.md' file and hopefully they are good now.  If they aren't, let me know what you need me to do to make it right.
Also, if you think it would be safe to include the 'CHIPS.DAT' file and make it complete, let me know what you think.  Chip's Challenge can be obtained for free on Steam now, but I don't know if that does or doesn't affect the copyright on the original 'chips.dat' game data file.  If you think it'll be okay, I'll put it in to make it a complete package.
On Thursday, June 2, 2022, 06:55:12 PM CDT, christianhaitian @.***> wrote:
Hi, there's a conflict with the ports.md file. Can you fix this so I can merge it? Also, it looks like all assets are already included for this game so it's ready to run correct? If so, add runtype="rtr" to the end of the entry for it for ports.md.
Thanks,
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Hi, this is still showing a conflict with ports.md.  I think you'll have to close this PR and create a new one.  Also, I can't find a license agreement for the chips.dat file so not sure it's legal to distribute it so for now, we will consider this ready to run since it needs that asset in order to actually run it.

Got it.  Yessir.  I will close and re-create the PR.  It's ready-to-run still, just not with the original levels, but it will still play with all the community made ones for free so I'll still add runtype="rtr" to it.
Message ID: @.***>


StatefulSets example is not sharing database data

If you run the StatefulSets example, the database state is not being shared between instances...
export PGPASSWORD=password
psql -h <IP_ADDRESS> -U postgres -d postgresdb -c "create table test (col1 char(25), col2 char(25));"
psql -h <IP_ADDRESS> -U postgres -d postgresdb -c "\d test"
Table "public.test"
Column |     Type      | Collation | Nullable | Default
--------+---------------+-----------+----------+---------
col1   | character(25) |           |          |
col2   | character(25) |           |          |
psql -h <IP_ADDRESS> -U postgres -d postgresdb -c "\d test"
Did not find any relation named "test".
Fixed one issue with the PGDATA directory not being namespaced correctly,
but issue is still present. Might be data cache related or access mode - ReadWriteOnce/ReadWriteMany.
Look into when have time

This configuration is impossible to implement as pg does not support it.
Change to mysql or just leave for the demo


Permission less reserve

@yaronvel
this is not for pull.
only so u can view code.
if u could do some short look...

all fixed.
opened new branch...


SPIKE: How to verify if a dapp can be trusted

The Spike
I want to be able to verify if this dapp (Console in the first instance) can be trusted
Questions we need to answer

[ ] Is there a way to check if the IPFS hash I'm seeing is for the right release, via github maybe?
[ ] Can we automate this and signal some kind of 'trusted' status in the UI?
[ ] What else?

Tasks

[ ]
[ ]
[ ]

Notes

Dont need anymore due to vegaptorocol.eth


HWKAPM-581 Fix correlation test - initially separate thread not being…

… run in time, but when blocked waiting, it was failing due to incorrect value being passed in - should have been false to indicate that a separate fragment was not being created

@jpkrohling Can you review when you have time?

Looks good to me.

@jpkrohling Thanks!


Add proc macros for consensus encoding

This works but its my first proc macro so I'd love some improvements from the crew.
Currently we use declarative macros to implement the Encodable and Decodable traits.
It may be more ergonomic if we used custom derives for this.
Add a rust-bitcoin-derive crate and in it implement procedural macros used for deriving Decodable and Encodable.
If this work is deemed valuable we can do the rest of internal_macros.rs in a similar fashion ... hopefully :)
The idea to work on this came from: https://github.com/rust-bitcoin/rust-bitcoin/issues/352

Concept not happy about. :(
Proc macros are a huge offender of compile time blow ups so it'd be nicer to avoid them at least until they use WASM or other technology to speed them up considerably.
I wouldn't block this if the vast majority of collaborators want it. I'm just not happy about it. Anyway it's great that you're exploring this because if compile times get solved I may prefer proc macros. (Declarative macros are still easier to write and sometimes also read.)

If we keep the traits in bitcoin then the emitted code would have to use crate:: which is kind of weird and makes it impossible to use outside of bitcoin.

This may be a good thing as it's "don't use this outside of bitcoin" lint. We probably don't want to stabilize this ever or at least take a long time to polish it. I'd even go as far as to try to do some trick that would guarantee breakage outside of bitcoin crate and document bitcoin-derive as perma unstable.

We probably don't want to stabilize this ever or at least take a long time to polish it.

The last signature change was 16 months ago. Looks pretty stable to me.
If we wanted to, these traits and impls on std types could easily be moved to something like bitcoin-consensus-codec.
I share your views on the compile times topic although given it is unlikely that end users use the derives, it would be a single upfront cost and should only be relevant on fresh builds?

yet no one is expected to use this other than the bitcoin crate

One of the main motivations in the issue was that @dr-orlovsky wanted to use these macros outside of the bitcoin crate.

@thomaseizinger you must be talking about something else. This proc macro only exists as PoC so last change is irrelevant.
Maybe I'd accept stabilization but not right away. There's still shitload of hairy stuff in the bitcoin crate that should be resolved. Also I think the traits should not require std which will require tons of changes.

@thomaseizinger you must be talking about something else. This proc macro only exists as PoC so last change is irrelevant.

I was talking about the last change in the signature of Encodable. If we were to introduce proc-macros, I think the only sensible option is to create the following crate structure:

bitcoin

bitcoin-consensus-codec (defines traits Encodable, Decodable + impls on std types)

bitcoin-consensus-codec-derive (defines the proc-macro contained in this PR)

bitcoin-consensus-codec would re-export the macros of bitcoin-consensus-codec-derive the same way serde does it if the derive feature flag is enabled.
This would make changes to the trait signature more cumbersome because it requires a release. But given that the last one was 16 months ago, that doesn't seem like a big deal.

Also I think the traits should not require std which will require tons of changes.

I agree with that. That requirement IMO makes it easier to justify actually separating this stuff out into a crate otherwise it is just two traits which feels a bit overkill.

I agree bitcoin-consensus-codec (and -derive by necessity) should be a separate crate. For a long time I was thinking about what kind of Read trait to use - this is hardest part, I think.
Options:

Use core2 - current situation, we can't represent infallible readers, we don't like to depend on it unconditionally, depending conditionally creates awkward situation
Use new genio (WIP) unconditionally - another dependency but trusted source. Has unsafe that will need good audit.
NIH genio 0.1-like traits without unsafe parts - these have worse performance :(
NIH genio-like Write trait and create a BufRead trait that doesn't require Read-like methods - doesn't cause performance issues and we can actually do some additional optimizations. My preferred solution if we don't use genio

If I'm understanding the thread of discussion here we have three unanswered questions:

Do we want to use proc macros (including bitcoin_hashes)?
Do we want to expose our macros (irrespective of whether they are declarative of procedural)?
Is this work relevant to the upcoming crate smashing work?

I prefer no. Cost/benefit is too high IMO.
I prefer not yet, wait until other parts of the crate are a bit stabilized. Or put them behind "unstable" feature
I believe it is.

I don't see this making any forward progress at the moment, closing for another day.


fix severity constants types

This fixes the types on all the severities. Previously DEBUG was the only constant typed as Severity. All the others (INFO, WARNING, etc) were normal strings.
package main

import (
	"fmt"
	"reflect"

	"github.com/getsentry/raven-go"
)

func main() {
	fmt.Printf("raven.DEBUG: %s\n", reflect.TypeOf(raven.DEBUG))
	fmt.Printf("raven.INFO: %s\n", reflect.TypeOf(raven.INFO))
	fmt.Printf("raven.WARNING: %s\n", reflect.TypeOf(raven.WARNING))
	fmt.Printf("raven.ERROR: %s\n", reflect.TypeOf(raven.ERROR))
	fmt.Printf("raven.FATAL: %s\n", reflect.TypeOf(raven.FATAL))
}

raven.DEBUG: raven.Severity
raven.INFO: string
raven.WARNING: string
raven.ERROR: string
raven.FATAL: string

lol welp

thx!


Connection errors

I'm having connection errors when trying to connect to APNS:
TRACE 2018-04-03T08:46:05Z: apns2::signer: Signer::with_signature found signature for """""" APNS valid for 2700s
TRACE 2018-04-03T08:46:05Z: apns2::alpn: AlpnConnector::call ("https://api.push.apple.com/3/device/******")
TRACE 2018-04-03T08:46:05Z: apns2::client: Client::call requesting ("https://api.push.apple.com/3/device/******")
TRACE 2018-04-03T08:46:06Z: apns2::alpn: AlpnConnector::call got TCP, trying TLS
TRACE 2018-04-03T08:46:06Z: apns2::client: Request error: an operation was canceled internally before starting
 WARN 2018-04-03T08:46:06Z: push_relay::server: Error: Push message could not be processed: Push was unsuccessful: Error connecting to APNs

Any idea what the reason for this could be?

So you're using the token connector?

But hmm, if it's a token connector, the connection should be formed even with a faulty token. And for ALPN, we use rustls which should hold a rust implementation for ALPN so OpenSSL should not be a problem here.

Yes, this is the token connector. I'm also on Linux, with OpenSSL 1.1.0g.
If I change the private key (in p8 format) by adding another letter, then the thread throws an error before even attempting to connect ("SignerError: An OpenSSL error stack"), so at least the format of the key should be correct.
Could it be that I made a mistake in the team id and/or key id? Might that lead to a connection error?

No, with wrong team/key ids you get an error from Apple, like so:
./target/debug/examples/token_client -p examples/private.p8 -t ASDF -k ASDF -d ASDF -m Foo
Error: ResponseError(Response { error: Some(ErrorBody { reason: InvalidProviderToken, timestamp: None }), apns_id: Some("997881E1-ACF0-ABB2-D9C2-2BF175564C01"), code: 403 })

I'm also in the same OpenSSL version as you are.

I just pushed a bit more logging. Could you pull, compile examples and run the token_client with your p8 key, team/key id and a device token. Set RUST_LOG=apns=trace and tell me the output.

You can also set RUST_LOG=hyper,apns=trace to get tracing from Hyper.

Hm, strange.
The example:
 DEBUG rustls::client::hs > Server DNS name is DNSName("api.development.push.apple.com")
 TRACE rustls::client::hs > Not sending CertificateVerify, no key
 DEBUG rustls::client::hs > Session not saved
 TRACE hyper::proto::h2   > send body chunk: 64B
 TRACE hyper::proto::h2   > send body eos
 TRACE apns2::client      > Client::call got response status 403 Forbidden from ("https://api.development.push.apple.com/3/device/******")
Error: ResponseError(Response { error: Some(ErrorBody { reason: InvalidProviderToken, timestamp: None }), apns_id: Some("******"), code: 403 })

My code:
DEBUG 2018-04-03T10:00:54Z: rustls::client::hs: Server DNS name is DNSName("api.development.push.apple.com")
TRACE 2018-04-03T10:00:54Z: rustls::client::hs: Not sending CertificateVerify, no key
DEBUG 2018-04-03T10:00:54Z: rustls::client::hs: Session not saved
TRACE 2018-04-03T10:00:54Z: hyper::proto::h2::client: client tx dropped
TRACE 2018-04-03T10:00:54Z: apns2::client: Request error: an operation was canceled internally before starting

The hyper version is the same (0.11.18).

The error seems to originate from here: https://github.com/pimeys/apns2/blob/3527054dab5d3966d81fd0b547a880209f34a8ec/src/client.rs#L213-L218
Note that I'm calling the apns code from within a Hyper http2 async server handler. Maybe something goes wrong there?
Here's the full log:
DEBUG 2018-04-03T10:12:27Z: rustls::client::hs: Server DNS name is DNSName("api.development.push.apple.com")
TRACE 2018-04-03T10:12:27Z: rustls::client::hs: Not sending CertificateVerify, no key
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: flushed State { reading: KeepAlive, writing: Init, keep_alive: Busy, error: None, read_task: Some(Task) }
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::dispatch: Dispatcher::poll
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: Conn::read_keep_alive
DEBUG 2018-04-03T10:12:27Z: rustls::client::hs: Session not saved
TRACE 2018-04-03T10:12:27Z: hyper::client::pool: Pool::put ("https://api.development.push.apple.com", Http2)
TRACE 2018-04-03T10:12:27Z: hyper::client::pool: Pool::put removing canceled parked ("https://api.development.push.apple.com", Http2)
DEBUG 2018-04-03T10:12:27Z: hyper::client::pool: pooling idle connection for ("https://api.development.push.apple.com", Http2)
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: flushed State { reading: KeepAlive, writing: Init, keep_alive: Busy, error: None, read_task: Some(Task) }
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::dispatch: Dispatcher::poll
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: Conn::read_keep_alive
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: flushed State { reading: KeepAlive, writing: Init, keep_alive: Busy, error: None, read_task: Some(Task) }
TRACE 2018-04-03T10:12:27Z: hyper::proto::h2::client: client tx dropped
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::dispatch: Dispatcher::poll
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: Conn::read_keep_alive
TRACE 2018-04-03T10:12:27Z: apns2::client: Request error: an operation was canceled internally before starting
 WARN 2018-04-03T10:12:27Z: push_relay::server: Error: Push message could not be processed: Push was unsuccessful: Error connecting to APNs
TRACE 2018-04-03T10:12:27Z: hyper::proto: should_keep_alive(version=Http11, header=None) = true
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::role: ServerTransaction::encode has_body=true, method=Some(Post)
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::encode: sized write, len = 19
DEBUG 2018-04-03T10:12:27Z: hyper::proto::h1::io: flushed 155 bytes
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: maybe_notify; read_from_io blocked
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: flushed State { reading: Init, writing: Init, keep_alive: Idle, error: None, read_task: Some(Task) }
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::dispatch: Dispatcher::poll
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: Conn::read_head
DEBUG 2018-04-03T10:12:27Z: hyper::proto::h1::io: read 0 bytes
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::io: parse eof
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: State::close_read()
DEBUG 2018-04-03T10:12:27Z: hyper::proto::h1::conn: read eof
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: Conn::read_keep_alive
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: parking current task
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: maybe_notify; notifying task
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: flushed State { reading: Closed, writing: Init, keep_alive: Disabled, error: None, read_task: Some(Task) }
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::conn: shut down IO
TRACE 2018-04-03T10:12:27Z: hyper::proto::h1::dispatch: Dispatch::poll done

This line looks interesting:

TRACE 2018-04-03T10:12:27Z: hyper::proto::h2::client: client tx dropped

It has something to do with the ALPN for sure. If the example works, are you sure your own code reads the private key correctly? Are you reading from database, from file or from &str?

The h1 stuff in the logs is from here:
https://github.com/pimeys/apns2/blob/master/src/alpn.rs#L106
let connecting = self.http
            .call(uri)
            .and_then(move |tcp| {
                trace!("AlpnConnector::call got TCP, trying TLS");
                tls.connect_async(host.as_ref(), tcp)
                    .map_err(|e| {
                        trace!("AlpnConnector::call got error forming a TLS connection.");
                        io::Error::new(io::ErrorKind::Other, e)
                    })
            })
            .map(|tls| MaybeHttpsStream::Https(tls))
            .map_err(|e| {
                trace!("AlpnConnector::call got error reading a TLS stream (#{}).", e);
                io::Error::new(io::ErrorKind::Other, e)
            });

HttpsConnecting(Box::new(connecting))

So it uses Hyper's h1 http connector for async resolving and getting a TCP handler, which it then uses to do the TLS ALPN handshake, returning a stream that goes to the h2 crate. Nothing abnormal in your example posted to the hyper issue.

are you sure your own code reads the private key correctly? Are you reading from database, from file or from &str?

I'm reading the same file as used in the example into a Vec and passing a reference to that to apns2. So I believe that should be correct.

Are you having the team id and key id in the right order?

I double checked and believe so.

So it uses Hyper's h1 http connector for async resolving and getting a TCP handler, which it then uses to do the TLS ALPN handshake, returning a stream that goes to the h2 crate.

I see...

I think so, yes. Is there a way to see the actually used commit id?

I think so, yes. Is there a way to see the actually used commit id?

Check your Cargo.lock. Do cargo update.

I'm reading the same file as used in the example into a Vec and passing a reference to that to apns2. So I believe that should be correct.

Yeah, &mut [u8] implements Read so it should work. Good luck with bug hunting, take my example as a working reference and dig into the code. I'm also interested is there something I could do better here so the library is easier to implement. This sounds like a super simple mistake, that you find after having a lunch. I've had some of those when working with Apple's services.

I tried to chage the example to read the private key into a Vec and pass a slice to the client. It still works:
let mut private_file = File::open(key_file).unwrap();
...
let mut pem_key: Vec<u8> = Vec::new();
private_file.read_to_end(&mut pem_key).unwrap();

let client = Client::token(
    pem_key.as_slice(),
    key_id.as_ref(),
    team_id.as_ref(),
    &handle,
    endpoint,
).unwrap();

But here you shouldn't really read the file into a vector, because the client does that for you. Just pass a File handler that implements Read.

The thing is that I want to be able to read the key a second time, and after the first time an opened file will return nothing, right?

Yeah, true. I was thinking of our use case, where we supervise the connections. Every connection reactor core gets their own thread, and the supervisor will read the connection data from a database every time it changes or a connection is kicked out. But we do a quite special multi-app setup and you need a separate connection for every app.

One thing that could be a source of bugs is that both key id and team id are strings. Maybe a wrapper newtype could be used to make it impossible to confuse the two.

I was thinking something like:
pub enum ConnectionOptions<'a>{
    Token {
        pkcs8_pem: Read,
        key_id: &'a str,
        team_id: &'a str,
        endpoint: Endpoint,
    },
    Certificate {
        certificate: Read,
        password: &'a str,
    }
}

But here we can't use a generic Read, or we have to box it, which is a trade off I'm not willing to pay. It even gets worse if for the ids or password we use Into. Having a type for the team id or key id will also require us to decide are we going to wrap a &str or a String, and if want to allow an easy access with both, we must do a builder that has methods with generic types, generating the correct instance.
Named arguments would help here, but let's see if the RFC ever goes through.

But here we can't use a generic Read, or we have to box it

Would a trait object (&Read) not work?

Having a type for the team id or key id will also require us to decide are we going to wrap a &str or a String

That's exactly what Cow is for (although you'd have to propagate the lifetime if non-static, which isn't very nice of course...).
But we're drifting off :) I'll try to debug the connection issues soon.


Fix pg_sequences related failures in PG9.6 tests

Fix to run drop sequences using pg_sequences only for PG ver 10 or above

All the existing Docker containers in DockerHub for PG9.6 and plv8 build from source looks to be brokwn due to V8 build changes. I am going to prepare a Docker image for PG9.6 and plv8. Until then I am going to disable PG9.6 build in the Azure Pipelines CI.

I have setup a fresh docker container for PG9.6 and plv8, the docker container looks to be working fine.
We have to fix the other unit test errors pertaining to feature toggles for different PG versions.

Think #1278 supplants this (by switching to information_schema.sequences, as opposed to the view).

@jokokko I am closing and will merge #1278 shortly.


add support for gltf-binary media

Adds support for the gltf-binary 3D model file type with the .glb extension. It is a widely adopted binary format for 3D models which will be useful for storing on-chain 3D data.
More info about the gltf-binary type: https://www.iana.org/assignments/media-types/model/gltf-binary

90411e25d1437565a34874a6458b7db23e564a34 has already been merged and provides identical functionality.

Awesome! closing this PR


Input text size

Hi there!
(Obs.: the following is relative to v2.4.)
I noticed that the text length used for encoding seems to admit some extra information.
For example:
Input string: borbatonborbatozborbacaxborbafit
Key: pwalsk
Result: CC707A518AE12AB48DA543A8DEBE2A221ECD8B302B015B13255EBB9FFDBBA192A95AEE18A5D46C6A
This result seems to be produced when the final multiplied text length is 80. The text length is 80 because 1 is added to the original length 32 resulting in 33, which rounds up to 40 when searching for the next multiple of 8. That then is double to become 80.
If 1 was not added, then 32 being already a multiple of 8 would make the length of 32 * 2 = 64. In this case, the result is:
Result: CC707A518AE12AB48DA543A8DEBE2A221ECD8B302B015B13255EBB9FFDBBA192
This result ,when decoded and read back to 32 positions, already contains the original information: borbatonborbatozborbacaxborbafit. The extra information at the end of the string (which comes out as garbled text) seems to be the original extra 16 bytes (80 - 64). It could then be encoded more economically considering size 64 instead of 80, also avoiding including the extra information in the encoding.
It could also potentially increase decoding compatibility with other Blowfish implementations. For instance, when decoding this result in sladex, some extra garbled characters appear in the end.
Is there any specific reason for the +1 increase in the encoding buffer (PluginDefinition.cpp line 147)?
Thank you,

https://github.com/DominicTobias/SecurePad/blob/master/PluginDefinition.cpp#L147 and https://github.com/DominicTobias/SecurePad/blob/master/PluginDefinition.cpp#L214 need to be checked. Probably there for the null at the end of the character buffer used to transfer the input text from the editor. Probably it is not necessary for the encryption.

I found something that may explain it. Quoting:

Your problem doesn't seem to be with whether they implement the Blowfish algorithm correctly. In the "no padding" variant, they all seem to produce identical results.

That leaves a question of whether an 8-byte input should be padded at all. The answer to this is pretty simple: PKCS #7 requires that there is always at least one byte of padding added to the input. The reason for this is simple: on the receiving end, there needs to be an unambiguous way to remove the padding. In the case of PKCS#7, the value of the padding bytes is always the number of bytes of padding that needs to be stripped off by the recipient.

So, when you receive material that's been padded with PKCS7, you decrypt the block, then look at the last byte in the decrypted output, and remove that many bytes from the block. Without a block of padding on the end, the receiver would normally look at the last byte of actual data, and whatever value that byte happened to contain, strip off that many bytes (though it should probably tell you there's a problem if the number is larger than 8). In any case, to assure correct operation, there must always be at least one byte of padding. In your case, that means the input gets expanded out to 16 bytes instead of 8.

If this is the case, then it could be a case of stripping off the padding bytes before encoding.


Check why some plots fail to be generated

The series of plots starting PCA_f0reg_ are not plotted.

Solved: somehow, in a deep-down R package, these plots were converted to a pdf, which appeared in the root directory. Moved / renamed that pdf file.


Prepare for Belmont.RC1 release

Following artifacts/apps need to be released as part of Belmont RC1 release train.

[x] app starters core - 1.2.0.RC1
[x] timestamp - 1.2.0.RC1
[x] jdbchdfs-local - 1.2.0.RC1
[x] composed-task-runner - 1.0.0.RC1
[x] spark-client - 1.2.0.RC1
[x] spark-cluster- 1.2.0.RC1
[x] spark-yarn- 1.2.0.RC1
[x] app-starters-release - Belmont.RC1

All the release tasks for Belmont.RC1 have been completed.


Errorcode 0 on failed sync

To detect a failed or incomplete "repo sync", it would be desirable to receive errorcode 1 instead of 0 if any error occurs.

fixed on branch stable with v0.4.5.


Question: How to grab sets of related fields

Scenario: Say I'm using Codecept to acceptance test a search form, like Google. On the results page, there's a set of
 elements, each containing a search result. Within each
, say there is an h2 and a h3.

Result 1

Description 1

Result 2

Description 2

I want to grab these results, perhaps as an array of objects, so I can easily check each result against what I was expecting in that position. Is there a pattern I can use to do this? Currently, I see only 2 options, both bad:

Run grab on h2s and h3s, so I get array of n of each ([R1, R2] and [D1, D2]), which I can then zip together to get an element for each result ([R1, D1], [R2, D2]). However, this breaks if some results are missing h3s ([R1,D2], [R2, null]).

Grab the HTML for each li, and then parse that string to extract the relevant values. This is just painful, given that codeceptjs already has nice ways of extracting the text or other attributes from a given element.

There is another option, you can use this helper, with strict locator.
For example:
I.see('RESULT_TITLE', {css: '[data-href='RESULT_LINK']'});

Did anyone resolve the issue?
I have error for both cases:
var allResults = $$('span.ng-binding').map(function (el){...}
var allResults = element.all(by.xpath('//span[@class="ng-binding"]')).map(function (el) {...}

@neil-s
I can suggest this option:
Create custom method in pageobject:
grabResults: function* () {
            let liAmount = yield I.grabNumberOfVisibleElements("//li")
            let returnment = []
            for (let i = 0; i < liAmount; i++) {
                let result = yield I.grabTextFrom(`//li[${i+1}]//h2`)
                let description = yield I.grabTextFrom(`//li[${i+1}]h3`)
                returnment.push([result, description])
            }
            return returnment
        },

and use this method from your tests
Scenario.only('test', function* (I, mainPage) {
    let result = yield* mainPage.grabResults()
    console.log(result)
})


Compute pod terminated 133 in longevity test

================================================================================
longevity-test Result
================================================================================
Result               FAIL
Pipeline Message     run all nexmark (8 sets of nexmark queries) with 10k throughput daily
Namespace            reglngvty-20240604-150219
TestBed              medium-arm-3cn-all-affinity
RW Version           nightly-20240604
Test Start time      2024-06-04 15:12:20
Test End time        2024-06-05 03:14:36
Test Queries         nexmark_q0,nexmark_q1,nexmark_q2,nexmark_q3,nexmark_q4,nexmark_q5,nexmark_q6_group_top1,nexmark_q7,nexmark_q8,nexmark_q9,nexmark_q10,nexmark_q12,nexmark_q14,nexmark_q15,nexmark_q16,nexmark_q17,nexmark_q18,nexmark_q19,nexmark_q20,nexmark_q21,nexmark_q22,nexmark_q101,nexmark_q102,nexmark_q103,nexmark_q104,nexmark_q105
Grafana Metric       https://grafana.test.risingwave-cloud.xyz/d/EpkBw5W4k/risingwave-dev-dashboard?orgId=1&var-datasource=Prometheus:%20test-useast1-eks-a&var-namespace=reglngvty-20240604-150219&from=1717513940000&to=1717557276000
Grafana Logs         https://grafana.test.risingwave-cloud.xyz/d/liz0yRCZz1/log-search-dashboard?orgId=1&var-data_source=Logging:%20test-useast1-eks-a&var-namespace=reglngvty-20240604-150219&from=1717513940000&to=1717557276000
Memory Dumps         https://s3.console.aws.amazon.com/s3/buckets/test-useast1-mgmt-bucket-archiver?region=us-east-1&bucketType=general&prefix=k8s/reglngvty-20240604-150219/&showversions=false
Buildkite Job        https://buildkite.com/risingwave-test/longevity-test/builds/1445

================================================================================
Restarted/Crashed Pods Details
 ================================================================================
Pod crashed/Restarted: benchmark-risingwave-compute-c-1 restart_count:1  phase:Running status:True

cn log:
2024-06-04T17:30:31.892459844Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=527 error=Executor error: exchange channel to downstream actor 520 closed unexpectedly |
-- | --
  | 2024-06-04T17:30:31.893456125Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=524 error=Executor error: exchange channel to downstream actor 520 closed unexpectedly |
  | 2024-06-04T17:30:31.953815933Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=503 error=Executor error: exchange channel to downstream actor 496 closed unexpectedly |
  | 2024-06-04T17:30:32.078816588Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=1355 error=Executor error: exchange channel to downstream actor 1353 closed unexpectedly |
  | 2024-06-04T17:30:32.11588205Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=1352 error=Executor error: exchange channel from local upstream actor 1355 closed unexpectedly |
  | 2024-06-04T17:30:32.179353862Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=1445 error=Executor error: exchange channel to downstream actor 1443 closed unexpectedly |
  | 2024-06-04T17:30:32.179885705Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=1442 error=Executor error: exchange channel from local upstream actor 1445 closed unexpectedly |
  | 2024-06-04T17:30:32.180378778Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=1451 error=Executor error: exchange channel to downstream actor 1445 closed unexpectedly |
  | 2024-06-04T17:30:32.413403419Z  INFO aws_smithy_runtime_api::client::connection: smithy connection was poisoned |
  | 2024-06-04T17:30:32.466255337Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=2012 error=Executor error: exchange channel to downstream actor 2010 closed unexpectedly |
  | 2024-06-04T17:30:32.634497599Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=1745 error=Executor error: exchange channel to downstream actor 1737 closed unexpectedly |
  | 2024-06-04T17:30:32.796143891Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=908 error=Executor error: exchange channel to downstream actor 906 closed unexpectedly |
  | 2024-06-04T17:30:32.796764549Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=905 error=Executor error: exchange channel from local upstream actor 908 closed unexpectedly |
  | 2024-06-04T17:30:32.818215072Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=914 error=Executor error: exchange channel to downstream actor 907 closed unexpectedly |
  | 2024-06-04T17:30:32.940149312Z ERROR risingwave_stream::task::stream_manager: actor exit with error actor_id=959 error=actor exited unexpectedly |
  |   |
  | Backtrace: |
  | 0: std::backtrace_rs::backtrace::libunwind::trace |
  | at ./rustc/4a0cc881dcc4d800f10672747f61a94377ff6662/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5 |
  | 1: std::backtrace_rs::backtrace::trace_unsynchronized |
  | at ./rustc/4a0cc881dcc4d800f10672747f61a94377ff6662/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 |
  | 2: std::backtrace::Backtrace::create |
  | at ./rustc/4a0cc881dcc4d800f10672747f61a94377ff6662/library/std/src/backtrace.rs:331:13 |
  | 3: anyhow::error::<impl anyhow::Error>::msg

Looks like the same problem in chaos-mesh test.
================================================================================
chaos-mesh Result
================================================================================
Result               FAIL
Pipeline Message     Nightly nexmark
Namespace            longcmkf-20240604-153100
TestBed              medium-arm-3cn-all-affinity
RW Version           nightly-20240604
Test Start time      2024-06-04 15:34:29
Test End time        2024-06-04 17:27:58
Test Queries         q0,q1,q2,q3,q4,q5,q7,q8,q9,q10,q14,q15,q16,q17,q18,q20,q21,q22,q101,q102,q103,q104,q105
Grafana Metric       https://grafana.test.risingwave-cloud.xyz/d/EpkBw5W4k/risingwave-dev-dashboard?orgId=1&var-datasource=Prometheus:%20test-useast1-eks-a&var-namespace=longcmkf-20240604-153100&from=1717515269000&to=1717522078000
Grafana Logs         https://grafana.test.risingwave-cloud.xyz/d/liz0yRCZz1/log-search-dashboard?orgId=1&var-data_source=Logging:%20test-useast1-eks-a&var-namespace=longcmkf-20240604-153100&from=1717515269000&to=1717522078000
Memory Dumps         https://s3.console.aws.amazon.com/s3/buckets/test-useast1-mgmt-bucket-archiver?region=us-east-1&bucketType=general&prefix=k8s/longcmkf-20240604-153100/&showversions=false
Buildkite Job        https://buildkite.com/risingwave-test/chaos-mesh/builds/865

#17111

Is it fixed by https://github.com/risingwavelabs/risingwave/issues/17111?

Yes, I confirm that this is fixed by #17111.


daemon: update: check len inside public function

Signed-off-by: Antonio Murdaca<EMAIL_ADDRESS>

LGTM

LGTM


Tweak geniushub and Bump client to v0.6.20

Breaking Change:
None known.
Description:

additional device_state_attributes, e.g. setback for TRVs
handles more (all?) SKUs, e.g. single channel receivers, older room thermostats
adds new Climate zone type: wet underfloor heating
several small tweaks, added resilience
bumps client (see below) with those benefits

Bumps client to v0.6.21:

aware of new Sense mode (but for v3 API only)
should now handle all known SKUs
correctly handles wet underfloor zones
no longer confused by Group zones
when polling, doesn't repeat logger.warning()s for persisting Issues
handles more edge cases (e.g. a HW controller with a PIR)

The newer client also adds useful data which is not currently part of the (published) v1 API

adds device.data["_config"] (e.g. SKU) and device.data["_state"] (e.g. TRV setback)
adds `zone.data["_occupied"] if has a PIR

See: https://github.com/zxdavb/geniushub-client/compare/v0.6.13...v0.6.21
Related issue (if applicable): N/A
Pull request with documentation for home-assistant.io (if applicable): N/A
Example entry for configuration.yaml (if applicable): N/A
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.
[x] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[x] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[x] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[x] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[x] Tests have been added to verify that the new code works.

@MartinHjelmare I am satisfied this has passed testing - would you mind reviewing?
I am sorry, but it turned into a bit of a refactor rather than a simple tweak.

@MartinHjelmare Do you have time to check this for me? I'm hoping to get it in the next beta!

@MartinHjelmare can we fit this in today?

Looks good!

Thanks!


Fix issue #290: Cannot send email using the 465 smtp port.

Implement the SmtpMailSender with MailKit instead of System.Net.Mail to enable implicit ssl with 465 port.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Edward Meng seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for your PR! We greatly appreciate it. It looks like we have 2 pr's for the same thing (A great problem to have). I'm going to take https://github.com/exceptionless/Exceptionless/pull/291 and incorporate your fixes into it as well.
Did you run into an issue with (

           message.To.AddRange(MimeKit.InternetAddressList.Parse(notification.To));

       }

       if (!string.IsNullOrEmpty(notification.From)) {

           message.From.AddRange(MimeKit.InternetAddressList.Parse(notification.From));)?

having to parse these? Also, I was wondering if it would be best to make the client be a singleton (since the smtp sender is a singleton in the di) then we only need to create and connect once and it's used quite a bit. Thoughts on this?

I just want to make it compatible with multiple receptors and senders. If there is only one receptor for every email message, I think it's ok for your code.
Another hand, I have checked the source code of mimekit. The constructor of MailBoxAddress will not verify the format of email address, but the Parse method will verify.

There is another problem in the MailKitSender.SendAsync(MailMessage model) method. If there is any error after the smtp client connected(e.g. failed authentication or failed send message), the DisconnectAsync will not be invoked. It means only the Dispose method will be invoked, but not send the QUIT command to the smtp server. So I think the source code should be wrapped with try finally block as following:
public async Task SendAsync(MailMessage model) { 	............ 	using (var client = new SmtpClient()) { 		client.ServerCertificateValidationCallback = (s, c, h, e) => true; 		await client.ConnectAsync(Settings.Current.SmtpHost, Settings.Current.SmtpPort, Settings.Current.SmtpEnableSSL).AnyContext(); 		try 		{ 			// Note: since we don't have an OAuth2 token, disable the XOAUTH2 authentication mechanism. 			client.AuthenticationMechanisms.Remove("XOAUTH2"); 			if ((Settings.Current.SmtpUser == null) != (Settings.Current.SmtpPassword == null)) 				throw new ArgumentException("Must specify both the SmtpUser and the SmtpPassword, or neither."); 			if (Settings.Current.SmtpUser != null) 				await client.AuthenticateAsync(Settings.Current.SmtpUser, Settings.Current.SmtpPassword).AnyContext(); 			await client.SendAsync(message).AnyContext(); 			// we don't care if there is an error at this point. 			Interlocked.Increment(ref _totalSent); 		} 		finally 		{ 			await client.DisconnectAsync(true).AnyContext(); 		} 	} }

@edwardmeng very nice finds! Would you be able to submit a pr from the code in the mail message branch for the parsing as well as individual checks around connect, send and disconnect and we can write out a log message (via the injected ILogger).
 Won't the client clean itself up? I never looked at what disconnectasync did.

Hmm, I guess if we add try catches there, then the job that calls this won't blow up... And if it doesn't blow up emails won't be retried. I guess we could at the least change it to return a Task and return true or false, or just keep blowing up what are your thoughts?
I think that what you have for the snippet gives the existing functionality, but what if disconnect blows up too? I guess that is fine.

I have wrapped the implementation with try finally there, so the call this will blow up as normal. It is not try catches. So the email will be retried.
The implementation of the method SmtpClient.Disconnect as following
public override void Disconnect(bool quit, CancellationToken cancellationToken = new CancellationToken()) {     this.CheckDisposed();     if (this.IsConnected)     {         if (quit)         {             try             {                 this.SendCommand("QUIT", cancellationToken);             }             catch (OperationCanceledException)             {             }             catch (SmtpProtocolException)             {             }             catch (SmtpCommandException)             {             }             catch (IOException)             {             }         }         this.Disconnect();     } }
The implementation of the Dispose method is as following:
protected override void Dispose(bool disposing) {     if (disposing && !this.disposed)     {         this.disposed = true;         this.Disconnect();     }     base.Dispose(this.disposed); }
So the difference is whether to send the QUIT command to smpt server, which I have mentioned in the previous comments. But I have not studied the affection that not to send this command.

Just a heads up, you can do GitHub code formatting with three ` (cs) with cs being csharp formatting :) then at the end of your code it's  to finish the block.
I guess it probably wouldn't hurt to keep calling it, I wonder what the system.net.mail client was doing under the covers it :)

I have learned it, thanks very much. It's great.


Add bomb defusal minigame

Check problems we had 2 years ago and maybe add as addon
http://www.armaholic.com/page.php?id=31817

Not needed in modpack, if someone wants this, they can add it to their mission.


Creating a new GKE cluster fails with default script options

If running into this issue then add following parameter to the create_cluster.sh script:
./create_cluster.sh  ...   -i ubuntu_containerd

It is also recommended to set an updated machine type
./create_cluster.sh  ...   -m e2-standard-4


Question: rebuilding the cocoapod in XCode 9.2(+)

Question is asked at stackoverflow at following URL, all help gratefully received, thanks for reading:
https://stackoverflow.com/questions/47933714/how-does-one-rebuild-a-cocoapod-hosted-at-github-without-making-any-edits

Also, whilst I hvae your attention, has anyone had to deal with the following error before?:


An error occurred when trying to view the folder files

How can i fix it?

Same problem here while moving to brackets 1.8. Had to go back on 1.7.
To go further, console was showing a lot of node error. (use of GLOBAL deprecated, node server stopping, couldn't load ws.localhost:port, node was still there in my task manager.)
It was a fresh brackets 1.8 install with extract and no other plugin.

Well, I go back on 1.7 and problem is solved, but I'll never be able of using next versions of brackets ?

I had the exact same issue and had to go back to 1.7 last week.

Extract is not supported anymore within Brackets.
http://blog.brackets.io/2016/04/14/update-about-extract-for-brackets-preview/
@swmitra @rbharti
Is still the extension supposed to work? If Adobe doesn't want to mantain it anymore, and the infrastructure is still available, can be "donated" to the community?

@ficristo I will ask @rbharti to answer this on committer channel in slack as he is not on Github. As far as I know Extract workflow is part of creative cloud and offered with Dreamweaver. So If someone has to use Extracts for web development, then the option is to use Dreamweaver.
In this case, as extract plugin used to get copied to user extension folder, after the recent install it's still remaining there but non functional. This extension is not supposed to work from Brackets 1.6 onward.

@ficristo is right. Extract service is no longer supported. The infrastructure is available only for requests from Dreamweaver.

Closing the issue.


[Feature Request]: Interactive question blocks

Describe the feature you'd like
The ability to add an interactive question inside a page. When editing the page, it should be possible to add a question, a variable amount of answers, and an explanation block that can be opened after answering the question. The explanation block should be closed by default to save space. The first answer, when editing, is always the correct one, but when displayed to the reader, the questions should be randomly ordered.
Describe the benefits this feature would bring to BookStack users
You could do little tests to check if the reader understood the topic, and if not, try to explain it differently afterwards inside the explanation block or show a walkthrough how to get to the correct answer.
Additional context

Thanks for the request @Rinma,
This is quite a specific feature request that'll complicate the content format and therefore make other areas of the application more difficult (Markdown editor, export formats etc..).
My main concern is that introducing quizzing elements widens the scope of the expected content and purposes of the platform. We're not really intending to be a quiz platform. While the scope of your request is reasonable and well-defined, I think that would differ for other users and we'd quickly see demands for extension in this area (Such as saving answers per user, providing results views etc..) and that's not really an are I want to expand into if we are to keep maintenance reasonable.
I feel the fundamental flow could be achieved by more basic block types that are more feasible to support. If we introduced collapsible blocks, as per #78, you could do something like below:

Example
What is the answer to everything?

A) 21
B) 42
C) 56

Answer
The answer is B) 42.

This is because the number 42........

Thanks for the answer @ssddanbrown
I get your concerns. The solution you provide, with a collapsible block, would work for me.

Thank for your understanding and confirmation @Rinma.
I'll therefore close this off since the functionality is requested in #78.
Although #78 has been open for a while, It is something that's possible currently in the markdown editor and something I'm looking to build into the default WYSIWYG editor within the currently progressing work in  #2738.


Re-save notebooks using VS code

This version will hopefully render better on GitHub.

This didn't work :(


Display the Base64 encoded value of the Piped Key when registering a new piped

What would you like to be added:

as Title

I'm envisioning that it will be added below the following screen.

The source code that needs to be modified is believed to be as follows.
https://github.com/pipe-cd/pipecd/blob/master/web/src/components/settings-page/piped/index.tsx
Why is this needed:
Currently, when adding a Piped configuration, the Piped ID and Piped Key are displayed. However, in reality, base64 encoding is required when specifying the piped config. Opening a terminal to manually base64 encode the Piped Key is cumbersome. Displaying the base64 encoded value below the Piped ID and Piped Key would streamline the process, enhancing the user experience.
refs:

https://pipecd.dev/docs-v0.46.x/installation/install-piped/
https://pipecd.dev/docs-v0.46.x/quickstart/

I would be interested in picking this up, I'll try and get it done over the holiday weekend :)


Syntax error when Minification is turned on

With the latest changes I receive a syntax error when minification is turned on.  Runs fine with minification off.

You can build the current state of the cn1 teavm port project to see this error.

It's a wierd bug. Could it be in Google Chrome? I can't see syntax error here. Firefox does not report errors, but it can't run application, failing with stack overflow.

I get an error in firefox too.  Note:  By adding a semicolon before the last return statement on that line, it fixes the issue:
{return $return($rt_asyncResult(null));}return cls[c]($return);};return FUF(a,$return);}

Also note, that if loading from a file:// URL in Chrome you need to start it with local file access allowed.
http://superuser.com/questions/310026/how-can-i-start-google-chrome-on-os-x-with-the-allow-files-access-from-files-a
This is because I'm loading all of the resource files with AJAX.

Actually I think I also needed to add the semicolon before the other return also.
{return $return($rt_asyncResult(null));};return cls[c]($return);};return FUF(a,$return);}


[ML-DSA] Address FIPS 204 IPD to Final version differences in libcrux-ml-dsa

[ ] #496
[ ] #497
[ ] #498
[ ] #499
[ ] #500
[ ] #501

I don't see any key validation, but we should make sure there's nothing we want to/should do.


Smart contract storage issue

Hello. I tried to deploy the Solidity project to Quorum and find that one contract can call another contract function but it can't return value from storage contract. Example:
Contract First {
bool public b = false;
function setb () public {
    b = true;
}

}
Contract Second {
First _storage;
constructor (address adr) public {
_storage = adr;
}
function setb () public {
_storage.setb();
}
function getb() public view returns (bool){
return _storage.b();
}
Contracts must be deployed separately.
So at first step I called setb() from contract 2, then checked b in first contract. It was true, but function getb() retuns 'false'. And this issue with all datatypes.
Maybe I must configure node to remove this issue, but I don't know what exactly must be done. Can you help me with this question?

Maybe I must configure node to remove this issue, but I don't know what exactly must be done. Can you help me with this question?

Can you provide more details about your deployment? Have you deployed both contracts from Quorum Maker from the 'Compile & Deploy' tab? Or from an external tool? Are the transactions invoked privately or publicly ?

File 1:
pragma solidity ^0.4.18;
contract Contract1 {
bool public a = true;
function geta () public constant returns (bool) {
return a;
}
}
File2:
pragma solidity ^0.4.18;
/**

The Contract1 contract does this and that...
*/
contract Contract1 {
bool public a;
function geta () public constant returns (bool);
}

contract Contract2 {
function geta () public constant returns (bool) {
return cont.geta();
}
Contract1 public cont;
function Contract2 (address addr) public {
cont = Contract1(addr);
}
}
and migration :
var Contract1 = artifacts.require("./Contract1.sol");
var Contract2 = artifacts.require("./Contract2.sol");
web3.personal.unlockAccount(web3.eth.accounts[0]);
module.exports = function(deployer) {
deployer.then(async () => {
	let cont1 = await deployer.deploy(Contract1);
	console.log("address = " + cont1.address);
	let cont2 = await deployer.deploy(Contract2, cont1.address);

	console.log ("there");
	console.log("cont1 " , await cont1.a());
	console.log("cont2 " , await cont2.geta());
})

}
Deployed by truffle, public transaction.
I found that contracts works good before 22 compiler version. But after 0.4.21 contract hasn't access to another contract storage

I found the same issue here:
https://github.com/jpmorganchase/quorum/issues/391

Hi @RomanG11 . Since this issue pertains to Quorum itself and not Quorum Maker, we're closing it.


Data quality metrics

Added functions from the workshop to compute the Minkowski functionals in 2D & 3D, heterogeneity curve, and Python implementation of morphological drainage.
Workflow can be found in Examples
Leaving subset extraction for a later version or as part of a different module.

Agreed, we need Quantimpy 0.4.6 but for some reason, that is not the version that is installed with Python 3.11+. Python 3.10 might break our Pyvista version though, so something to investigate further.


Ensure winid from get_windows_options() are always integer

Due to a breaking change in neovim 0.7.0 (see neovim/neovim#14090),
winid for nvim_win_xxx(...) APIs must be of integer types,
no longer allowing implicit conversion from string.
This patch will eliminate an error that will happen otherwise.
References:
https://github.com/neovim/neovim/issues/14090#issuecomment-1004318147

Thanks @wookayin!

"In my opinion there is no need to convert the type of key to string to store an entry into a lua table (I'm not an lua expert, so please correct if I am wrong)."

The conversion to string keys was done to satisfy the Lua-to-Vim conversion when porting nvim-scrollview from VimScript to Lua. Rather than porting all the code at once, I incrementally ported one function at a time, and replacing each VimScript function with code to call its Lua version (similar to what was done here). I did that so that I could test the plugin after each Lua function was implemented, and know where a potential problem was introduced. After successfully porting all functions, I removed the VimScript wrappers, added the additional Lua logic, and commited the change in its entirety.
When implementing get_windows_options, I wrote the wrapper in VimScript, but received the following error upon usage:
E5100: Cannot convert given lua table: table should either have a sequence of positive integer keys
or contain only string keys

I guess that is from VimScript dictionaries having string keys, and expecting converted Lua non-array tables to also be comprised of string keys.
To work around the issue, I added tostring in Lua, and forgot to revert that when removing the VimScript wrappers.

@dstein64 Thanks for merging this quickly and your kind, detailed explanation about the history!


cannot create instances of data structures without using new operator

Immutablejs at the time of this post allows for creating immutable instances with factory functions like so:
import { Map } from 'immutable'

const myData = Map()
// Map {}

In extendable-immutable not so much however:
import { Map } from 'extendable-immutable'

const myData = Map()
// TypeError: this.__wrapImmutable is not a function

This however works fine:
import { Map } from 'extendable-immutable'

const myData = new Map()
// Map {}

If this is functionality you're willing merge I'll get going on a pull request :)

Does #15 look good to you?

beautiful!

Published in v1.3.3


[BUG] Testing out the close issue app.

Describe the Bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected Behavior
A clear and concise description of what you expected to happen.
Actual Behavior
A clear and concise description of what is happening.
Additional context
Add any other context about the problem here.

some message


Cannot install via pipenv

pipenv installation with python 3.6 fails with:
Max retries exceeded with url: /packages/c6/ad/5e48dd6d5486db6b694eac415b52eb3b1b06c89e00721283cada147a2ae6/scipy-1.2.2-cp35-cp35m-manylinux1_i686.whl
more:
$ pipenv install pmdarima
Installing pmdarima…
Adding pmdarima to Pipfile's [packages]…
Installation Succeeded
Pipfile.lock (716341) out of date, updating to (b9692e)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Locking Failed!
Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Program Files\Python36\Lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files\Python36\Lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Program Files\Python36\Lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Program Files\Python36\Lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
  File "C:\Program Files\Python36\Lib\ssl.py", line 1002, in recv_into
    return self.read(nbytes, buffer)
  File "C:\Program Files\Python36\Lib\ssl.py", line 865, in read
    return self._sslobj.read(len, buffer)
  File "C:\Program Files\Python36\Lib\ssl.py", line 625, in read
    v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 386, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 306, in _raise_timeout
    raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
pipenv.patched.notpip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\adapters.py", line 445, in send
    timeout=timeout
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 667, in urlopen
    **response_kw)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 667, in urlopen
    **response_kw)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 667, in urlopen
    **response_kw)
  [Previous line repeated 1 more times]
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\util\retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
pipenv.patched.notpip._vendor.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/c6/ad/5e48dd6d5486db6b694eac415b52eb3b1b06c89e00721283cada147a2ae6/scipy-1.2.2-cp35-cp35m-manylinux1_i686.whl (Caused by ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)",))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 126, in <module>
    main()
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 119, in main
    parsed.requirements_dir, parsed.packages)
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 85, in _main
    requirements_dir=requirements_dir,
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 69, in resolve
    req_dir=requirements_dir
  File "c:\program files\python36\lib\site-packages\pipenv\utils.py", line 726, in resolve_deps
    req_dir=req_dir,
  File "c:\program files\python36\lib\site-packages\pipenv\utils.py", line 481, in actually_resolve_deps
    hashes = resolver.resolve_hashes()
  File "c:\program files\python36\lib\site-packages\pipenv\utils.py", line 427, in resolve_hashes
    resolved_hashes = self.resolver.resolve_hashes(self.results)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\resolver.py", line 72, in resolve_hashes
    return {ireq: self.repository.get_hashes(ireq) for ireq in ireqs}
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\resolver.py", line 72, in <dictcomp>
    return {ireq: self.repository.get_hashes(ireq) for ireq in ireqs}
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 473, in get_hashes
    matching_candidates) if h is not None
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 471, in <setcomp>
    return {
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 472, in <lambda>
    h for h in map(lambda c: self._hash_cache.get_hash(c.location),
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 69, in get_hash
    hash_value = self._get_file_hash(new_location) if not new_location.url.startswith("ssh") else None
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 77, in _get_file_hash
    with open_local_or_remote_file(location, self.session) as fp:
  File "C:\Program Files\Python36\Lib\contextlib.py", line 82, in __enter__
    return next(self.gen)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 531, in open_local_or_remote_file
    response = session.get(url, headers=headers, stream=True)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\sessions.py", line 525, in get
    return self.request('GET', url, **kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_internal\download.py", line 397, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\sessions.py", line 512, in request
    resp = self.send(prep, **send_kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\sessions.py", line 622, in send
    r = adapter.send(request, **kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\cachecontrol\adapter.py", line 53, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\adapters.py", line 513, in send
    raise ConnectionError(e, request=request)
pipenv.patched.notpip._vendor.requests.exceptions.ConnectionError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/c6/ad/5e48dd6d5486db6b694eac415b52eb3b1b06c89e00721283cada147a2ae6/scipy-1.2.2-cp35-cp35m-manylinux1_i686.whl (Caused by ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)",))
File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 384, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 380, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Program Files\Python36\Lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files\Python36\Lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Program Files\Python36\Lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Program Files\Python36\Lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
  File "C:\Program Files\Python36\Lib\ssl.py", line 1002, in recv_into
    return self.read(nbytes, buffer)
  File "C:\Program Files\Python36\Lib\ssl.py", line 865, in read
    return self._sslobj.read(len, buffer)
  File "C:\Program Files\Python36\Lib\ssl.py", line 625, in read
    v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 386, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 306, in _raise_timeout
    raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
pipenv.patched.notpip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\adapters.py", line 445, in send
    timeout=timeout
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 667, in urlopen
    **response_kw)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 667, in urlopen
    **response_kw)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 667, in urlopen
    **response_kw)
  [Previous line repeated 1 more times]
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\urllib3\util\retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
pipenv.patched.notpip._vendor.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/c6/ad/5e48dd6d5486db6b694eac415b52eb3b1b06c89e00721283cada147a2ae6/scipy-1.2.2-cp35-cp35m-manylinux1_i686.whl (Caused by ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)",))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 126, in <module>
    main()
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 119, in main
    parsed.requirements_dir, parsed.packages)
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 85, in _main
    requirements_dir=requirements_dir,
  File "c:/program files/python36/lib/site-packages/pipenv/resolver.py", line 69, in resolve
    req_dir=requirements_dir
  File "c:\program files\python36\lib\site-packages\pipenv\utils.py", line 726, in resolve_deps
    req_dir=req_dir,
  File "c:\program files\python36\lib\site-packages\pipenv\utils.py", line 481, in actually_resolve_deps
    hashes = resolver.resolve_hashes()
  File "c:\program files\python36\lib\site-packages\pipenv\utils.py", line 427, in resolve_hashes
    resolved_hashes = self.resolver.resolve_hashes(self.results)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\resolver.py", line 72, in resolve_hashes
    return {ireq: self.repository.get_hashes(ireq) for ireq in ireqs}
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\resolver.py", line 72, in <dictcomp>
    return {ireq: self.repository.get_hashes(ireq) for ireq in ireqs}
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 473, in get_hashes
    matching_candidates) if h is not None
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 471, in <setcomp>
    return {
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 472, in <lambda>
    h for h in map(lambda c: self._hash_cache.get_hash(c.location),
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 69, in get_hash
    hash_value = self._get_file_hash(new_location) if not new_location.url.startswith("ssh") else None
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 77, in _get_file_hash
    with open_local_or_remote_file(location, self.session) as fp:
  File "C:\Program Files\Python36\Lib\contextlib.py", line 82, in __enter__
    return next(self.gen)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\piptools\repositories\pypi.py", line 531, in open_local_or_remote_file
    response = session.get(url, headers=headers, stream=True)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\sessions.py", line 525, in get
    return self.request('GET', url, **kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_internal\download.py", line 397, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\sessions.py", line 512, in request
    resp = self.send(prep, **send_kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\sessions.py", line 622, in send
    r = adapter.send(request, **kwargs)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\cachecontrol\adapter.py", line 53, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "c:\program files\python36\lib\site-packages\pipenv\patched\notpip\_vendor\requests\adapters.py", line 513, in send
    raise ConnectionError(e, request=request)
pipenv.patched.notpip._vendor.requests.exceptions.ConnectionError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/c6/ad/5e48dd6d5486db6b694eac415b52eb3b1b06c89e00721283cada147a2ae6/scipy-1.2.2-cp35-cp35m-manylinux1_i686.whl (Caused by ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)",))

Think it is a scipy error, apologies.