pull/push: add end-to-end encryption and decryption

It would be great to have the ability for a user to do encrypted/decrypted pushes/pulls, after the user passes in their credentials, and the subject content should be stored encrypted on Google Drive but only decrypted by the user.
Such was done as an experiment ages ago with drive and with https://github.com/odeke-em/sasel -- my first real-ish Java program, so don't judge :)

Sounds like a very good idea :+1:

Disclaimer: I suck at cryptography but I'd love to learn and work with ideas.
I have been thinking about this lately and so far I haven't found a good way in Go to do this. The crypto examples and APIs all seem to be return a []byte slice (even though they might take in an io.Reader). This means that the result of any operation will be wholly buffered into memory, and for example if it is a 5GB file, this could potentially blow up memory.
Adapting from wiki entry https://github.com/odeke-em/drive/wiki/[Use-Case]-Backup,-archive,-encode-and-push-directory.#above-encrypted-with-openssl-aes-256, we can easily wrap this into
$ drive push --pass-key-file=passKey --enc [files...]

Adaptation
We can adapt that option to build a small package that basically translates to:
Encryption
a) Obtain an io.Reader for that file.
b) exec to openssl and then pass the reader in a) as stdin to openssl enc -aes-256-cbc -salt, along with the passKey(which could be written to a tempfile instead of passed in directly as an argument to the exec).
c) Obtain the Stdout from the openssl exec and then use that as the handle to a drive file upload.
Decryption
Would be the reverse of encryption ie remote source, local destination, decrypt instead of encrypt.
a) Obtain the io.Reader handle for the encrypted file on Google Drive.
b) exec to openssl and pass the reader in a) as stdin to openssl enc -d -aes-256-cbc -salt, along with the passKey(which could be written to a tempfile instead of passed in directly as an argument to the exec).
c) Obtain the Stdout from the openssl exec and use that as the source of data to write to file.
In short, a simple middle man module that will take a stream of bytes, a mode (encryption/decryption), encryption key and algorithm e.g
type CipherMode uint
const (
    Unknown = 1 << iota
    Encrypt
    Decrypt
)

const (
   DefaultOpenSSLAlgo = "aes-256-cbc" // Define these as enums
)

func Cipher(src io.Reader, mode CipherMode, key []byte, openSSLAlgorithms ...string) (io.Reader, error)

func Encrypt(src io.Reader, key []byte, openSSLAlgorithms ...string) (io.Reader, error) {
    return Cipher(src, Encrypt, key, openSSLAlgorithms...)
}

func Decrypt(src io.Reader, key []byte, openSSLAlgorithms ...string) (io.Reader, error) {
    return Cipher(src, Decrypt, key, openSSLAlgorithms...)
}

Example when uploading
fHandle, err := os.Open(localPath)
if uploadArgs.Encrypt && err != nil {
  fHandle, err = enc.Encrypt(fHandle, uploadArgs.EncryptionKey, uploadArgs.Algorithms...)
}
if err != nil {
  return nil, err
}

// Write to cloud handle now

Example when downloading
fHandle, err := g.remote.Open(remotePath)
if uploadArgs.Decrypt && err != nil {
  fHandle, err = enc.Decrypt(fHandle, uploadArgs.EncryptionKey, uploadArgs.Algorithms...)
}
if err != nil {
  return nil, err
}

// Write to disk now
localF, err := os.Create(g.context.AbsPath(remotePath))
...
io.Copy(localF, fHandle)

Ideas, thoughts, criticisms are greatly appreciated. Thanks.

The AES block cipher in golang should be sufficient and since it is a block cipher should only have to operate on the 128/192/256 bits at a time depending on the AES key length. The []byte in and out shouldn't be an issue, I have some similar code in a project of mine that reads 4 byte blocks and performs a function on them to swap bits around but implements io.Reader https://github.com/sselph/scraper/blob/master/rom/hash/hash.go#L148
You should also considering use a MAC to authenticate the message contents. This is great for determining that the passkey is correct; otherwise you decrypt data not knowing if the key is right and the data coming out is random.

I actually had some time and this seemed like a fun thing to do, so I decided to write some code. I was able to use pure Go and can encrypt large files without holding the file in memory. I used AES-256 in CTR mode with random per file IV. I used a SHA-256 HMAC for authenticating the message. This was less ideal than using GCM but allowed me not to hold the entire file in memory. The keys used for AES and HMAC are created using scrypt with password provided by the user and a random per file salt. I created 2 structs that wrap io.Reader and implement io.Reader but encrypt/decrypt while reading. The only issue is that for the decryption I had to read the encrypted contents to a temp file to authenticate it before decrypting.
I need to clean it up, add documentation, add testing, add some logic for having multiple algorithms and determining which was used to encrypt, etc. I also haven't added it to the drive push/pull commands and have just been using byte slices in and out to test it.
There is also the matter of determining if the remote file is different than the local file. The hashes won't match obviously and since the file has a random per file salt+iv we can't just re-encrypt locally to see if the hash would match. There are solutions to this but they all have some drawbacks.
If this sounds like the right track, I can continue to polish it up and can send a PR to a branch for this feature but I would probably need to leave it up to you to actually plumb in the code to make use of this.

Awesome 🔥🔥, thanks for working on this @sselph. Ahh I see. That's great news that this can be done 128 bits at a time, we are in business!
Your implementation wraps this into io.Reader/Writer consumers which is what we want. Thanks for the example in https://github.com/odeke-em/drive/issues/543#issuecomment-217689534.
Since I am not that familiar with block ciphers, I wanted to ask does decryption work the same way ie chunk by chunk?
Great idea about using a MAC to check if the key is right. Just as a note to us when rolling this out,  it may increase the attack surface for someone trying to crack a password/decrypt files. I mean the attacker could easily do it with a few techniques such as frequency analysis on every round of decryption or checking mimes but with a MAC that becomes less deterent with fewer bytes making for more retries i.e
func sign(hash, challenge []byte) []byte {
   mac := hmac.New(theChosenAlgo, hash)
   mac.Write(challenge)
   return mac.Sum(nil)
}

// Arbitrary: we can use 4 Blocks or chose however many bytes
// ephemeralTextChallenge could be fresh RandomBytes(), etc
localMAC := sign(password+first512BytesBeforeEncryptionAndUpload, ephemeralTextChallenge)
remoteMAC := sign(password+firstDecrypted512BytesAfterDownloading, ephemeralTextChallenge)
if !hmac.Equal(localMAC, remoteMAC) {
   return nil, ErrInvalidPassword
}

would be easier to crack than decrypting an entire 1GB file and then fail. However, the attacker could just have the file downloaded and then go at it locally with various techniques so never mind, let's go with the MAC solution.
If need be we could let the user choose what mode they'd like e.g whole file decrypting, no MAC-ing etc.
As for determining if the remote file is different from the local file, maybe we could use the MAC comparison provided above as a compromise? Also, here is an bad and unsecure idea that breaks the purpose of random salt+IV concatenated to the file, but just an idea nonetheless -- we could potentially store some meta data about the file it in the Meta part of the remote file e.g the hash without the salt+IV included, or does the crypto API hide the ability for us to seek to areas in which the Salt+IV are not included? Using meta fields we can also add some unique identifiers that will match the file?
Please let me know what you think.
I was actually gonna take a stab at the exec-d openssl style I had talked about earlier on but was doing some bug triage and didn't get time to work on it yet. This sounds like the right track to me, am excited to see this come alive, thank you again @sselph!

Since I am not that familiar with block ciphers, I wanted to ask does decryption work the same way ie chunk by chunk?

Yes but as I mentioned, when NewDecryptReader is called it will read all the bytes from the provided reader via 16KB chunks to a temp file. This is because I have to hash the entire file to know if it is valid and safe to decrypt.

it may increase the attack surface for someone trying to crack a password/decrypt files.

I don't think this is too much of a concern since the attacker still has to hash the entire file to compute the MAC. The attacking psuedo-code would look something like this:
for _, password := range allPasswords {
  hmacKey := deriveHmacKey(password, knownSalt)  // Takes ~1s with a 3.4GHz processor
  h := hmac.New(sha256.New, hmac_key)
  hashEntireFile(h, fileMinusHMAC)  // The hmac still has to hash the entire file.
  if hmac.Equal(knownHMAC, h.Sum(nil) {
    break
  }
}

As for determining if the remote file is different from the local file

The location of the salt and IV are known(first 64b of the file) and they are unencrypted.
Some ideas I had are:

Store the original hash in the remote file unencrypted at the beginning of the file then do a partial download of that information or if there is a way to store metadata that is cool too. This seems like it might leak information and might be bad but I don't know enough about this to be sure.
Get the salt+iv and encrypt locally while computing the md5 hash for comparison. This has the draw back that computing the encryption key is purposely slow. But maybe the encrypted MD5 could be cached locally to speed up subsequent runs. If you already have a method to cache metadata locally, this is my current favorite.
Store the original hash in the remote file encrypted at the beginning of the file. Then do a partial download of that information. This has the same drawback as the previous but doesn't require encrypting the entire file.
Don't use a key derivation function and a password and force the user to pass in the full AES and HMAC keys. This solves the issue of taking time to derive a key but means it is more difficult to remember, ie you have to store them locally and back them up.
Speed up the key derivation. This makes it easier to brute force but does make generating keys faster and makes some of the other methods less painful.
Don't use a per file salt. This shouldn't be a concern since I'm using a different IV for each file and so the salt could be generated once per client and makes it easier to cache keys in memory.

Wanted to give an update. I cleaned up the code, added documentation, and added some tests that take random data of varying sizes and encrypt it then decrypt to make sure everything matches. I want to also have some static files encrypted and uploaded for testing to make sure that they are always decrypt-able. I also might look in to adding some way to speed up/bypass the key generation so each test case isn't taking 1-2s.
The next thing will be to figure out a good way to be able to create or fix issues while maintaining backward compatibility so people will always be able to get their files back. My current idea is to create some mapping of int32 to decryption method then prepend that to the file. So then when an old file is downloaded we can look up how to decrypt it.

@sselph thank you thank you. That's great news!
I want to also have some static files encrypted and uploaded for testing to make sure that they are always decrypt-able. I also might look in to adding some way to speed up/bypass the key generation so each test case isn't taking 1-2s.

Please let me know if you'd like files of varying sizes, and I can make a collection of these for you.
Aha great point about maintaining backward compatibility, sure we can do that. In the worst case, we can have an identifier say const EncryptorVersion = "0.0.1" baked into the binary and if things go wrong we can just look up that value in their binary and point them to a version of drive that matches that encryptor.
Please let me know how I could be of help in making this possible.

I think I can send a PR tonight or tomorrow. Is there a branch you'd like me to send it to or just send it to master? It still needs some work but figured it would be best to get it uploaded. This isn't integrated so shouldn't affect the stability of the code but thought you might want to have it somewhere else until it is complete and tested.

Sounds gucci. For sure, a PR to master would be alright. We can iterate on it, no worries.

I wrote up a a quick wiki page on how the library works. I thought it might help if someone wants to check the implementation for errors but can't read Go.
https://github.com/odeke-em/drive/wiki/End-to-End-Encryption

Is there any interest in adding an option for public key encryption (rather than password)? Or possibly an option that simply pipes out/in some command to encrypt/decrypt, like gpg?
Happy to open a separate issue if that seems sensible.

I think the piping is already supported using drive push -piped and drive pull -piped something like this as an example https://github.com/odeke-em/drive/wiki/[Use-Case]-Backup,-archive,-encode-and-push-directory.#above-encrypted-with-openssl-aes-256

Hello there @shazow, thanks for the request and welcome to drive!
Yap, like  @sselph mentioned in https://github.com/odeke-em/drive/issues/543#issuecomment-250978609, we support piping for both push and pull. However, Go's x/crypto has OpenPGP support https://godoc.org/golang.org/x/crypto/openpgp so if interested please feel free.
@shazow please go ahead and open a separate issue and we can discuss on that.
Also if am not mistaken, we'll need to work with dcrypto to serialize the version but also what kind of encryption was used. In order to do that though, we've still gotta wait for Google crypto and OSS confirmations with @sselph.


Multiplayer server console error spam

I am Running Windows 2012 R2, Unturned <IP_ADDRESS>, Rocket <IP_ADDRESS>
Server console is being spammed with the following error;
--- End of inner exception stack trace ---
at Rocket.Core.Assets.XMLFileAsset1[Rocket.Core.Serialisation.RocketPermissio ns].Load (Rocket.Core.Assets.AssetLoaded1 callback, Boolean update) [0x00000] i
n :0
at Rocket.Core.Assets.Asset`1[Rocket.Core.Serialisation.RocketPermissions].get
_Instance () [0x00000] in :0
at Rocket.Core.Permissions.RocketPermissionsManager.GetGroups (IRocketPlayer p
layer, Boolean includeParentGroups) [0x00000] in :0
at Rocket.Core.Permissions.RocketPermissionsManager.GetPermissions (IRocketPla
yer player) [0x00000] in :0
at Rocket.Unturned.Chat.UnturnedChat.handleChat (SDG.Unturned.SteamPlayer stea
mPlayer, EChatMode chatMode, UnityEngine.Color& incomingColor, System.String mes
sage) [0x00000] in :0

Rocket seems to still work perfectly fine it just spams this error in the console.

can be fixed by deleting your permissions file and allowing rocket to create a new one...


Error running demo environment

Hi 👋  Thanks @6eer for your work. Your code looks really promising.
I followed your instructions to deploy the demo environment. I ran ganache successfully (by forking mainnet), created the .env file and also ran demo_environment.js without issues, but when I either run bot_normalswap.js  or bot_flashswap.js I'm getting the following error:

UnhandledPromiseRejectionWarning: Error: Returned values aren't valid, did it run Out of Gas? You might also see this error if you are not using the correct ABI for the contract you are retrieving data from, requesting data from a block number that does not exist, or querying a node which is not fully synced.

Can you point me in the right direction or help me find out what is failling?

Hey Carlos, read this thread and let me know if it helped you!

Thanks @6eer I found the answer in the thread you shared. The demo environment is now working!

I've not been able to resolve this issue. I updated lined 148 to make the GasNeeded dynamic, and I've updated the Arbitrage and Util contract addresses to reflect those generated when I ran demo_environment. I've also updated the private key to use the first account after running Ganache. Yet, I am still getting the following error:
nhandledPromiseRejectionWarning: Error: Returned values aren't valid, did it run Out of Gas? You might also see this error if you are not using the correct ABI for the contract you are retrieving data from, requesting data from a block number that does not exist, or querying a node which is not fully synced.
I must be doing something stupid, but I just haven't been able to figure it out. Please help.  Thanks

Hi - first thanks for your great work and for sharing it!
I'm having the same issue as above and have - to some extent - tried to remove gasNedeed references after commenting out line 144 (or as it is now line 143)
This led me to think this issue might have been resolved - i.e. 144 is already commented out and you have new code at 143..?
Anyway, I commented out line 143 AND 144 and tried to rewrite further statements to make sense without gasNedeed - unfortunately I still receive all of the errors above such as:
"Error: Returned values aren't valid, did it run Out of Gas? You might also see this error if you are not using the correct ABI for the contract you are retrieving data from, requesting data from a block number that does not exist, or querying a node which is not fully synced.
Let me know if I should resolve this in another way. Thank you!!

I discovered that the gasNeeded issue has been solved and no need to comment out the lines. Line 143 fixes the issue.
The problem with my running the bot related to not replacing the below fields in the .env file with the results from running :
node ./src/demo_environment.js -a
#or
node ./src/demo_environment.js -b

.env
**ADDR_ARBITRAGE_CONTRACT** = '0xD3167f135a9e003B1bF2CB81c0738Fdbc0C9124F'

**ADDR_TOKEN0** = '0x20526CEd6B8e4601B45Ec931b6B68b72c0DB249C'
**ADDR_TOKEN1** = '0x3806F6B92F899ACD32C8285Df70cB0f379A38713'

**ADDR_UTILS** = '0x79F86fDb626533F6ed19722D7CC3784ED24876dd'

It works!

It works!

It works!

Does the bot still work ? Want to try and set it up, will be a big task for me.

@interzone2 how does line 143 fix the issue..mine still has the same issue running

it's just a matter of sending the transactions from the myAccount account. this would fix it:
`const Web3 = require('web3');
//provider
const localProviderUrl = 'http://localhost:8545'
const localProvider = new Web3.providers.WebsocketProvider(localProviderUrl)
const web3 = new Web3(localProvider)
//uniswap
const IRouter =<EMAIL_ADDRESS>const uRouter = new web3.eth.Contract(IRouter.abi, '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D')
//sushiswap
const sRouter = new web3.eth.Contract(IRouter.abi, '0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F')
//tokens
const ERC20PresetMinterPauser =<EMAIL_ADDRESS>let token0 = new web3.eth.Contract(ERC20PresetMinterPauser.abi, '', { data: ERC20PresetMinterPauser.bytecode })
let token1 = new web3.eth.Contract(ERC20PresetMinterPauser.abi, '', { data: ERC20PresetMinterPauser.bytecode })
//arbitrager
const Arbitrager = require('../build/contracts/Arbitrager.json')
const arbitrager = new web3.eth.Contract(Arbitrager.abi, '', { data: Arbitrager.bytecode })
//addresses
const addr0 = '0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac'//sushiswap factory
const addr1 = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D'//uniswap router
//utils
const Utils = require('../build/contracts/Utils.json')
const utils = new web3.eth.Contract(Utils.abi, '', { data: Utils.bytecode })
async function liquidity(amount0, amount1, amount2, amount3, amount4) {
myAccount = (await web3.eth.getAccounts())[0]

//deploying token0
console.log("deploying token 0");
let gasLimit0, gasLimit1, receipt, aux
gasLimit0 = await token0.deploy({ arguments: ['Pineapple', 'PNA'] }).estimateGas() * 2
console.log("estimating gas limit token 0");
receipt = await token0.deploy({ arguments: ['Pineapple', 'PNA'] }).send({ from: myAccount, gas: gasLimit0 })
token0.options.address = receipt._address

//deploying token1
console.log("deploying token 1");
gasLimit1 = await token1.deploy({ arguments: ['Watermelon', 'WTM'] }).estimateGas() * 2
receipt = await token1.deploy({ arguments: ['Watermelon', 'WTM'] }).send({ from: myAccount, gas: gasLimit1 })
token1.options.address = receipt._address

if (token0.options.address > token1.options.address) { aux = token0; token0 = token1; token1 = aux }

//prints
const token0Name = await token0.methods.name().call()
const token0Symbol = await token0.methods.symbol().call()
const token1Name = await token1.methods.name().call()
const token1Symbol = await token1.methods.symbol().call()
console.log(
    `\n${token0Name} (${token0Symbol}) {token0}\n` +
    `Deployed at ${token0.options.address}\n\n` +
    `${token1Name} (${token1Symbol}) {token1}\n` +
    `Deployed at ${token1.options.address}\n`
)

//minting token0
amount4 = web3.utils.toWei(web3.utils.toBN(amount4))
await token0.methods.mint(myAccount, amount4).send({ from: myAccount, gas: gasLimit0 })
console.log(`${web3.utils.fromWei(amount4)} ${token0Symbol} minted`)

//minting token1
await token1.methods.mint(myAccount, amount4).send({ from: myAccount, gas: gasLimit1 })
console.log(`${web3.utils.fromWei(amount4)} ${token1Symbol} minted\n`)

//creating pair
const deadline = Math.round(Date.now() / 1000) + 60 * 60

//on uniswap
amount0 = web3.utils.toWei(web3.utils.toBN(amount0), 'ether')
amount1 = web3.utils.toWei(web3.utils.toBN(amount1), 'ether')
await token0.methods.approve(uRouter.options.address, amount0).send({ from: myAccount, gas: gasLimit0 })
await token1.methods.approve(uRouter.options.address, amount1).send({ from: myAccount, gas: gasLimit1 })

let gasLimitRouter;

console.log("estimate gas of router");
gasLimitRouter = await uRouter.methods.addLiquidity(
    token0.options.address,
    token1.options.address,
    amount0,
    amount1,
    0,
    0,
    myAccount,
    deadline
).estimateGas({ from: myAccount })

console.log("add liquidity to router");
await uRouter.methods.addLiquidity(
    token0.options.address,
    token1.options.address,
    amount0,
    amount1,
    0,
    0,
    myAccount,
    deadline
).send({ from: myAccount, gas: gasLimitRouter })
console.log(
    `Uniswap ${token0Symbol}/${token1Symbol} pair created\n` +
    `Reserves: ${web3.utils.fromWei(amount0)} ${token0Symbol} | ${web3.utils.fromWei(amount1)} ${token1Symbol}\n` +
    `Price: ${(amount0 / amount1).toFixed(2)} ${token0Symbol}/${token1Symbol}\n`
)

//on sushiswap
amount2 = web3.utils.toWei(web3.utils.toBN(amount2), 'ether')
amount3 = web3.utils.toWei(web3.utils.toBN(amount3), 'ether')

gasLimit = await token1.methods.approve(sRouter.options.address, amount2).estimateGas({ from: myAccount })
await token0.methods.approve(sRouter.options.address, amount2).send({ from: myAccount, gas: gasLimitRouter })

gasLimit = await token1.methods.approve(sRouter.options.address, amount3).estimateGas({ from: myAccount })
await token1.methods.approve(sRouter.options.address, amount3).send({ from: myAccount, gas: gasLimitRouter })

gasLimit = await sRouter.methods.addLiquidity(
    token0.options.address,
    token1.options.address,
    amount2,
    amount3,
    0,
    0,
    myAccount,
    deadline
).estimateGas({ from: myAccount })
await sRouter.methods.addLiquidity(
    token0.options.address,
    token1.options.address,
    amount2,
    amount3,
    0,
    0,
    myAccount,
    deadline
).send({ from: myAccount, gas: gasLimit })
console.log(
    `Sushiswap ${token0Symbol}/${token1Symbol} pair created\n` +
    `Reserves: ${web3.utils.fromWei(amount2)} ${token0Symbol} | ${web3.utils.fromWei(amount3)} ${token1Symbol}\n` +
    `Price: ${(amount2 / amount3).toFixed(2)} ${token0Symbol}/${token1Symbol}\n`
)

}
async function deploy(amount0, amount1, amount2, amount3, amount4) {
await liquidity(amount0, amount1, amount2, amount3, amount4)

myAccount = (await web3.eth.getAccounts())[0]

//arbitrager
let gasLimit, receipt
gasLimit = await arbitrager.deploy({ arguments: [addr0, addr1] }).estimateGas()
console.log("gaslimit", gasLimit);

receipt = await arbitrager.deploy({ arguments: [addr0, addr1] }).send({ from: myAccount, gas: gasLimit })
console.log("receipt", receipt);

arbitrager.options.address = receipt._address

console.log(`Arbitrager contract deployed at ${arbitrager.options.address}\n`)

//utils
gasLimit = await utils.deploy().estimateGas()
receipt = await utils.deploy().send({ from: myAccount, gas: gasLimit })
utils.options.address = receipt._address

console.log(`Utils contract deployed at ${utils.options.address}\n`)

}
if (process.argv[2] == '-a') { //case A: token1 cheaper on sushiswap
deploy(10e2, 5e2, 1e4, 10e4, 1e6).then(() => { process.exit(0) })

}
if (process.argv[2] == '-b') { //case B: token1 cheaper on uniswap
deploy(1e2, 10e2, 3e4, 10e4, 1e6).then(() => { process.exit(0) })

}
`


Trev/Dusk GX SM217 - Attempt to fix Pale Moon GX

Pale Moon GX currently affects Pokémon that are ignoring effects from
attacks.

Did not accomplish what I wanted. Now the move does nothing.


HashiCorp Vault backup

HashiCorp Vault is currently has information that is potentially not stored anywhere else. It is important to have mechanism to backup vault information . This issue to come up with short-term and long term solution for vault backup

Immediate need for a backup and then implementation of scheduled/automated backups going forward.


Update WiX toolset to latest version

Fix available in 0.15.0 https://github.com/microsoft/PowerToys/releases


Background element should not be allowed to be moved as part of multi-selection

To reproduce

Select background element
Cmd-click on other element to start multi-selection
Move elements around

Actual behavior

The background element moves as part of the selection
As soon as moving stops, it goes back to its background element position, but it keeps the changed coordinates

Expected behavior
The background element should not move as part of the multi-selection, and coordinates should be unchanged

You shouldn't be able to select multiple elements with the background being one of them at all either by adding or toggling an element in selection.
But I do see the bug right there in both of them. If the selection is currently just the background element, nothing stops another element to be added to the selection. So, the fix would be quite simple here.

Perfect, even better! Thanks @barklund!


Update http4s-blaze-client, http4s-client to 0.23.8

Updates

org.http4s:http4s-blaze-client
org.http4s:http4s-client

from 0.23.6 to 0.23.8.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.http4s" } ]

labels: library-update, early-semver-minor, semver-spec-patch, commit-count:1

Codecov Report

Merging #369 (5956f4e) into main (df19298) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #369   +/-   ##
=======================================
  Coverage   59.87%   59.87%
=======================================
  Files          30       30
  Lines         987      987
  Branches       64       64
=======================================
  Hits          591      591
  Misses        396      396

Continue to review full report at Codecov.

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

Superseded by #371.


[fmi4cpp] Update to 0.7.0

Closes https://github.com/NTNU-IHB/FMI4cpp/issues/40

Hei, @markaren! Sorry for accidentally closing the PR with a force push. The changes still exist in my own fork, so you're welcome to re-open the PR by taking the changes, and that way you'll retain authorship. The changes look good and the PR should be ready to merge as soon as the CI build goes through. Thanks for the update!
Link to ffmicpp-0.7.0 branch on grdowns/vcpkg

I'm not sure if I totally understood. Do I need to do anything for this to be merged? (I do not care about the authorship)

No worries! The link broke anyway. I created a new PR with the changes and it will be merged as soon as CI goes through. Thanks for bearing with me @markaren, and thanks for contribution!


Create NewGoWorker

This pull request deprecates NewParallelWorker, replacing it with a new NewGoWorker constructor and corresponding implementation.  The new Worker implementation is vastly simpler than the original parallel Worker implementation, and should eliminate the bottlenecks present in the original parallel Worker.

I'm not sure if "gonner" is supposed to be a portmanteau of "go + runner" or if it's supposed to be "goner" as in "soon to die". If it's the latter, it needs to lose an "n".


Lock / Unlock the thermostat

Does anyone know a command to lock / unlock the thermostat? I dont want to press the two bottons at the thermostat.
Thanks.

Closed because fixed/clearified in #48

I am also interested in this. @RudyRatlos did you find out anything? #48 does not mention anything about it.


Heap and global allocator

Experimental heap and global allocator which can be optionaly enabled with "heap" feature.
This allows using for instance: String, format!, Vec... Current heap size is 8K.

I did some tests with the Rust boilerplate (see https://github.com/LedgerHQ/app-boilerplate-rust/pull/58) and with HEAP_SIZE=8K Ragger tests are ok with S+, X, Stax and Flex. However, for Nano S, it does not even compile, the relocation script fails (5000 bytes overflow). I have tried naively to decrease the heap size down to 2048 bytes, compilation is ok for Nano S but I have core dumped during Ragger tests. With '1024` bytes it works, but not sure it will be enough for any other app (Obsidian, Radix for instance)...


Add taxonomy tree to browse species

In GitLab by @vrechdelaval on Sep 7, 2015, 20:55
For instance, see http://pax-db.org/

In GitLab by @marcrr on Feb 4, 2019, 13:41
In the short term, just a list of species with the Latin and English names would be useful to allow people to search in the browser.

In GitLab by @marcrr on Jun 20, 2019, 08:56
moved to Roadmap suggestions
@vrechdelaval I'm letting you close it.

In GitLab by @vrechdelaval on Jun 20, 2019, 10:22
closed


⚠ Samsung has degraded performance

In e74e1a1, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2238 ms

Resolved: Samsung performance has improved in d80c9ec.


Tutorial updates

Tutorial needs updating.

anesthetic has been updated and so the load_chains function crashed because samples doesn't have an attribute weights anymore. Need to replace samples.weights with samples.get_weights().
Need to change bij = MAF(theta, weights) to bij = MAF(theta, weights=weights) as weights was made an optional with default np.ones(len(theta)).

Ohh it looks like the tutorial here is in a reasonably good state but the binder is out of date.


Choose files to sync

This is a feature request.
Could a button or option be added to only sync certain files rather than the whole working directory? This would be useful because sometimes when connecting a new computer to multihack-server, files that were previously synced but no longer exist get downloaded to all the computers.

This is a form of version control, something I'm not interested in adding to Multihack.
Although it seems like a good idea, the proper way to work with two different versions of a project is through version control software like Git or Subversion. Multihack isn't version control, it's for remote pair programming on a single version.
The fact that Multihack works with two different versions is just a side effect of the syncing, and will merge conflicts in unpredictable ways (as you've already seen with files always being added if they do not exist). The alternative would be throwing an error if the versions didn't match, which I thought was too strict.
Commit and merge your offline changes with Git, then pair on a single, shared version.

@RationalCoding Fair point I just thought it might help with the apparent bugginess. I will use git instead.


FEATURE: Wrap/Unwrap for Bridge

Summary of changes
Provide a detailed description of proposed changes.

UI and functionalities for Wrap/Unwrap on the bridge

Proposed area of change
Put an x in the boxes that apply.

[x] apps/bridge-dapp
[ ] apps/hubble-stats
[ ] apps/stats-dapp
[ ] apps/tangle-dapp
[ ] apps/testnet-leaderboard
[ ] apps/faucet
[ ] libs/webb-ui-components

Reference issue to close (if applicable)
Specify any issues that can be closed from these changes (e.g. Closes #233).

Closes #1426

Code Checklist
Please be sure to add .stories documentation if any additions are made to libs/webb-ui-components.

[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

useDefaultWrapperParams is an empty file, do we need? I think this is good to merge once we delete @vutuanlinh2k2


P1017: Server has closed the connection

I see this code error in the list of possible code errors but it is not explained how to fix it

That is because Prisma can not do anything about it - it is the database server that closes the conection.


Implement constructor tearoffs support in web debuggers

This issue tracks support of the constructor tearoffs feature.  See the enclosing meta-issue for details.
Update
Played with that a bit with @jakemac53's help.
Discovered some setup issues (not urgent as I can work around them by building SDK with tearoffs enabled)

--enable-experiment flag is not processed correctly in build_runner:

fixed in https://github.com/dart-lang/build/pull/3178

--enable-experiment flag is not processed correctly in build_daemon:

issue: https://github.com/dart-lang/build/issues/3180

--enable-experiment flag is not passed to the expression compiler in webdev:

https://github.com/dart-lang/sdk/issues/47068

Issues discovered during debugging apps with constructor tearoffs:

https://github.com/dart-lang/webdev/issues/1399

@annagrin - feel free to move this to another repo if it's more appropriate to have it there (e.g. webdev)

@sigmundch I will keep it here for now, if any work will be needed it would probably include SDK as well as webdev.

@annagrin - do you know if there will be work to do here? We expect ctor tearoffs to be feature complete early October. Note that there is another issue for any vm service protocol changes (https://github.com/dart-lang/sdk/issues/46240); I'm not sure if there are any but @bkonyi would know.

@devoncarew I run the debugger with code using constructor tearoffs and it works as expected.
Work remaining:

Expression evaluation tests:
https://github.com/dart-lang/sdk/issues/47214
@nshahan would you be interested in taking over this task?

Extra stack frame:
https://github.com/dart-lang/webdev/issues/1399
We cannot easily solve this without debug symbols work:
https://github.com/orgs/dart-lang/projects/29#card-68041615
that will take longer than the constructor tearoff feature deadline.
We could try using some naming heuristics to work around it if needed, but
I'd suggest to wait and collect user reaction first.

So as long as the expression evaluation tests are done we should be fine with shipping.

Writing some expression eval tests is on my todo list. I assigned that to myself.


Reload uvicorn on html file change

Description

Checklist:

[X] I've made sure that tests are updated accordingly (especially if adding or updating a template option)
[X] I've updated the documentation or confirm that my change doesn't require any updates

Rationale
After changing the html file uvicorn must be reloaded for Django to pick up the changes, otherwise it will show the old version of the template.

Thanks!


Add support for /projects//builds/

PR for issue #42

@ArkBriar thanks you so much for this PR!
I left quite some comments, but most of them are very small nits to ensure consistency throughout this package and should just take a minute to update.
Next to that there is one comment (regarding the build scopes) that is about the chosen approach which I would like to change a little to make it more straightforward and (IMO) more logical. But again that should easy enough to update.
But overall it looks great so again thanks for adding this API 😀

Thanks for your comments, that makes me more clear about how to write effective go codes.
I have modified builds.go according to your advices and performed an gofmt on this package.
The coverage field is always null when i test with "gitlab.com" and project "gitlab-org/gitlab-ce".

@ArkBriar thanks for the updates, just a few additional comments left...
As for the coverage , I think it's going to expect a struct here as well. But I also cannot find any detail on that one, so I suggest to just delete the field for now.
Thx!

LGTM! Again thanks for the PR @ArkBriar!


How to use outline version of icons?

[x] Review the documentation: https://github.com/oblador/react-native-vector-icons
[X] Search for existing issues (including closed ones): https://github.com/oblador/react-native-vector-icons/issues

Environment
Linux, Android react-native-vector-icons 8.1.0

Description
Cannot include different state of icons such as Outline, Rounded, etc.. of Google icons https://fonts.google.com/icons?selected=Material+Icons
Demo
import Icon from 'react-native-vector-icons/MaterialIcons';
<Icon size={30} name="backspace-outline" />

This is not supported by the library for now

Any plan of supporting latest version of Google icons?

Hi @flyingangel. We had the same issue that some icons were missing in this library. Therefore we created a fork and opened a pull request containing updated Material Icons and outlined Material Icons as described in our pull request #1372 :)

We’ve just released a major new version with significant changes and improvements. If you’re still experiencing this issue after upgrading, please open a new issue with updated details. We're closing all the very old issues to get on top of things. Thanks for your patience!


Use templates when generating a test file

Hello,
I was thinking about introducing a simple template engine to handle generation of test files as those vary between projects and as sls-mocha-plugin already creates test files, why won't make it more powerful?
The behaviour would be quite simple - if file xxx.yyy exists, use it, otherwise use a predefined template.
For the engine I was thinking about something simple like EJS or doT.js. I haven't tried them yet, but it looks like they're old enough to be used.
What do you think?

That’s a good idea, please go ahead. I was initially considering to create templates internally within the plugin, but ended up embedding the template to index.js for the sake of simplicity. Project level templates would provide optimal flexibility.

@rafaljanicki I've merged your PR and published version 0.5.12 of the package. Please verify and close the issue in case the merge is OK.

Looks good, thanks


Please remove scripts unnecessarily placed in rc/ and lib.kak

Lumping plugin scripts into rc/ and lib.kak is incohesive  given the intended use-case  of kakoune.cr. Each of these functions provide conflicts to other plugins which many people would prefer (auto-pair, surround, find, palette, etc) and none of these functions are related to the stated focus of kakoune.cr. Conglomerating unrelated functions into one project is a very poor design choice, especially in the context of a plugin. Most new users will choose not to bother with kakoune.cr after manually installing it (opposed to plug.kak) and finding out that the bloat will conflict with their preferred plugins and break their entire config.
At the very least the extra functions should be separated into a “library” repo:

still less repos to maintain for the author
understood that users copy/clone/source from the library however they see fit
kakoune.cr stays cohesive and predictable
kakoune.cr remains interoperable with existing configs and separate plugins
kakoune.cr is easier to maintain as an end user

Done


How to create a new branch

Can I use this library to create a new branch? because I can't find example in the project.

Hey @kairen,
If you are looking to create a new branch and check it out at the same time, you can use the Create flag on CheckoutOptions in a call to (*git.Worktree).Checkout.
If you just want to create a branch without checking it out (or if you want to create a branch in a bare repository that doesn't have a Worktree), you can do something like:
import "gopkg.in/src-d/go-git.v4/plumbing"
...
r, _ := git.PlainOpen("/path/to/repo")
r.Storer.SetReference(plumbing.NewHashReference("refs/heads/"+branchName, desiredHash))

Hi @orirawlings, thanks you for your help!! I will try this.


feat: Support obtaining client IP from CloudFront-Viewer-Address header

Hi! Thanks for the crate!
This PR adds support for the CloudFront-Viewer-Address header supported by AWS CloudFront.
I put the feature behind a feature flag, since it could hardly be called a standard, but this could also be omitted if you prefer the simpler version without the feature flag.
Thanks!

Hey :) Yes, I'd prefer removing the feature flag to keep it simple ;)

@imbolc Hi, thanks for the feedback. I have removed the feature flag. Technically, this is now a breaking change since the SecureClientIpSource enum is pub and people could potentially be matching exhaustively on it, but it's probably fine..

Published, thank you :)


Broken link

The URL in layouts/shortcodes/kubernetes-min-version.html(https://kubernetes.io/docs/imported/release/notes/) is broken.
Some alternatives:

https://kubernetes.io/docs/setup/release/notes/ (release notes for latest version, which may not always match the min version supported for Kubeflow - e.g. right now it's 1.13 vs. 1.8)
https://kubernetes.io/docs/setup/ (Kubernetes setup guide)
https://kubeflow.org/docs/started/getting-started/#set-up-kubernetes (Kubeflow's own Kuberenetes setup guide)
No link

How you resolve this review comment may affect what you choose here.

/good-first-issue

/assign

/close


Accessibility keyboard shortcuts

What problem does this feature solve?
When tabbing over router links, pressing the space or enter key does not trigger navigation. Although I can add this layer of logic myself, it seems that this should be natively supported.
What does the proposed API look like?
To the public, nothing would change, the links would just work on keyboard navigation.

This already works, if it doesn't provide a boiled down repro please

@posva You are right, and this issue may have been opened preemptively. However, we have identified the cause is that, somehow, the href is being stripped from the generated links, thus not becoming keyboard accessible. This could very well be a bug in our system, and we're looking into it, but it certainly is strange.

We encountered a problem similar to this but we can only reproduce it in Firefox (v79, no extensions) and Safari running on Mac, other browsers and OS did not have any issues.
I first assumed this was an issue with Vuetify but after further investigation we learned that the router-links (without any button) did not focus either when navigating with tab.
https://codepen.io/karatekaneen/pen/QWNpZmy?editors=1111


Run mvn goals twice fails

Hi,
When I run the following
mvn clean helm:init helm :dependency-build helm:package it builds the chart package successfully.
when I run the same command again immediately after, it fails with the following error
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ nope---
[INFO] Deleting /home/oops/projects/nope/target
[INFO]
[INFO] --- helm-maven-plugin:5.4:init (default-cli) @ nope ---
[INFO] Initializing Helm...
[INFO] Creating output directory...
[INFO] Downloading Helm ...
[INFO] Adding default repo [stable]
[INFO]
[INFO] --- helm-maven-plugin:5.4:dependency-build (default-cli) @ nope ---
[INFO] Build chart dependencies for /home/oops/projects/nope/src/main/helm/nope...
[ERROR] Error: no repository definition for https://helm.stackstorm.com/. Please add the missing repos via 'helm repo add'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

To get it back to a functional state, I have to delete the chart.lock manually along with the archive in the charts directory.
Is there a goal I'm missing, or is this a bug?

The plugin behaves as expected.
It looks like you process the chart in the src directory. To avoid this, it is recommended to move your helm sources to the target dir (so the clean will have an effect). This can be achieved by running the maven-resource-plugin upfront.
 If you still have trouble, feel free to re-open the issue.


TouchableHighlight Component doesn't disable click functionality when disabled

Description
When using a screen reader the TouchableHighlight component doesn't disable click functionality.
This issue is covered in-depth by parent issue #30840, please check there for more details.
React Native version:
0.63

I'd like to work on this issue :)

Thank you @Naturalclar for contributing! We appreciate your help in making React Native more accessible for everyone!

Closed by the PR #31135. Thank you @Naturalclar!


License Information

Thank you for your implementation!
Sadly, currently this project does not provide any license information so it is not clear how to use or reference the implementation.
Would it be possible to add license information e.g. MIT License to remove this uncertainty?

Thanks for the suggestion. I've updated the license to MIT License.


Needs more info

This is part of the text that is in the documentation:
There may be cases where the web server can't be relied upon to return consistent responses, and you have no choice but to disable integrity checks. To disable integrity checks, add the following to a property group in the Blazor WebAssembly project's .csproj file:
"There may be cases where the web server can't be relied upon to return consistent responses" doesn't explain examples of the cases. So basically, we can't know when to apply this setting. It would be good to give a couple of real scenarios to give context.
This is just an example, but it applies to everywhere. A lot of times the settings don't explain the scenarios in where they can be applied, only what it does. This makes difficult to know how if it's required for us or not.

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

ID: be59faf1-5a20-b7e9-19ff-06589023bb15
Version Independent ID: 250e7458-3c1d-0117-261d-c03ac136f16a
Content: Host and deploy ASP.NET Core Blazor WebAssembly
Content Source: aspnetcore/blazor/host-and-deploy/webassembly.md
Product: aspnet-core
Technology: aspnetcore-hostdeploy
GitHub Login: @guardrex
Microsoft Alias: riande

Hello @rmencia-isv ... This content came over directly from the PU ("product unit") who maintain the Blazor framework. I think they don't intend to provide a specific list, but you can ask them. Open an issue on their repo asking them the question ...
https://github.com/dotnet/aspnetcore/issues
Provide a link to the section where it's discussed ...
https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-6.0#disable-integrity-checking-for-non-pwa-apps
Please add ...
cc: @guardrex https://github.com/dotnet/AspNetCore.Docs/issues/25032

... to the bottom of your opening comment so that I follow along. I might re-open this for doc work depending on what they say.

Ok ... cool ... we'll add a bit on that aspect per https://github.com/dotnet/aspnetcore/issues/40288#issuecomment-1044518950.


Unable to craft

With this mod installed I am unable to craft sticks and a crafting bench, after working with a few friends we have found the same problem

Hello,
wow I see, but I am unable to craft anything in a inventory, with or without my mod.. There is something wrong with minecraft forge. Please try it without my mod.

Ok, try to upgrade minecraft forge, it has been fixed.. (<IP_ADDRESS>3)


'RZern' object has no attribute 'eval_curvature_grid'

Hello,
First, congrats for that proyect, it´s very interesting to  use a smartphone to  get corneal topography.
I'm trying to compute one of the sample images, but  I get the error:
File "C:\Users\Francisco\Desktop\SmartKC-A-Smartphone-based-Corneal-Topographer-main\main.py", line 139, in zernike_smoothening
k1, k2 = cart.eval_curvature_grid(c1, matrix=True)
AttributeError: 'RZern' object has no attribute 'eval_curvature_grid'
Looking at Zernike library, there is no  function called :'eval_curvature_grid'
Any idea?
best regards.
Franciso

Hi @frascuelilo, thank you for your interest in our work.
Sorry, I missed adding the updated zernike library code here.
However, I have created a pull request to the main Zernike repo: https://github.com/jacopoantonello/zernike/pull/10/commits/93b8dcd2ce462bcd691cdad77d38e55c2f69fac5
You can use the init.py function from here, and try to run it again. This time it should work. Hope you have fun using our code and testing things out :)


All example programs crash

All the example programs seem to crash as soon as I launch them. I'm currently running a local server on the default port. There is no console output from the program or from the server. The server is Bukkit and I'm running Minecraft 1.7.10. I unfortunately don't have a way to get any extra debug info, due to the lack of console output. There's a few second delay after the program is launched before it crashes.

Closing this, #198 for 1.8-support discussion and #193 for discussion about the current state of the project.


10.0.*: How to select first suggestion programmatically?

I'm using typeahead with Google Places api to pull cities. When user searches the location, he is then redirected to that location page. I will be remembering this location (either through cookie or backend) and pre-filling the typeahead field with it. Behaviour is similar that of Yelp, you type the location and when you refresh or come back you have location filed preffield...
I need to be able to set that location to a search field programmatically. How do I do that?
P.S.: right now, on 'completed' event there are some other things happening (like getting geo location of that particular location etc.), so ultimately I would need to trigger these events too.
Thanks!

I'm glad to see this has been added, but I don't see how to use it in the API.  Am I simply missing it?

I'm also confused about how to do this. I can use $(querySelector).typeahead('val', 'new value') to change the contents of the input and have the proper suggestions show, but cannot understand what to call next in order to select first option.


Platform Operations diagram?

I don't know if this is useful for the platform page - https://docs.microsoft.com/en-gb/azure/cloud-adoption-framework/manage/considerations/platform

@TheOpsMgr Love the diagram. Its very similar to what Microsoft Services uses during delivery of the CCOE offering. However, I like your view a bit better.
Is that image IP belonging to your company or did that originate elsewhere?

Terminated due to lack of response.


Improving the run time of the tests which use assert_almost_equal OR check_numeric_gradient functions

Description

The analog of numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False) is implemented as a MxNet operator:

    mx.nd.contrib.allclose(a, b, rtol, atol, equal_nan)

For now, besides the unit test test_allclose_function(), this method is used only in

def assert_almost_equal(a, b, rtol=None, atol=None, names=('a', 'b'), equal_nan=False)

where parameter a or/and b could be defined also as  mx.nd.array(s):
    Parameters
    ----------
    a : np.ndarray or mx.nd.array
    b : np.ndarray or mx.nd.array

When calling assert_almost_equal, no more asnumpy() conversion needed. It will be done automatically (in assert_almost_equal), if
(a) a or b has no attribute "context" OR
(b) these attributes are different.

The elimination of asnumpy() conversions and the use of mx.nd.contrib.allclose(...) for mx.nd.array's allows to achieve 5-7x speedup for GPU tests that use long arrays.

The MxNet operator mx.nd.contrib.approx_gradient(...), for calculation of one OR all coordinates of the numerical approximation of the gradient vector was implemented. This operator is called in the numeric_grad(...), which is called by widely used check_numeric_gradient(...)

New parameter  use_batch which was added to

    def check_numeric_gradient(... use_batch=False):

allows to calculate the approximation of gradient in a batch mode.

Unfortunately our current implementation of batch mode DOES NOT allow to use it for all operations. For instance, it is impossible to use it
(a) for operation, which are similar to matrix multiplications;
(b) when the shape of the output of the operation is NOT the same as the shapes of its input parameters;
(c) some other cases;

Currently we are using the batch mode only when we call
def test_elemwise_binary_ops():
        . . .
        if skip_gradient_check is not True:
            check_numeric_gradient(test, location,
                                   grad_stype_dict=grad_stypes, use_batch=True)

For elemwise operations the batch mode used in check_numeric_gradient(...) gives significant (3.5-5x on CPU and 6-10x on GPU) speedup.

Even when we cannot use  batch mode, we still see the run time improvement associated with the usage of new MxNet operators:

     mx.nd.contrib.approx_gradient(...)
     mx.nd.contrib.allclose(...)

There are two causes of this improvement:
(a) now the number of asnumpy() conversions, used inside check_numeric_gradient(...), is significantly less than before;
(b) more calculations which are made on GPUs.

In general, we see 1.58x improvement in runtime for the test suite L0_self_test:

Now:      Ran 520 tests in  994.935s
Before:   Ran 520 tests in 1574.341s

Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes
Comments
Perhaps, it makes sense:

to make possible to use (OR just start to use)  batch mode for other operations;
eliminate asnumpy() conversions used when assert_almost_equal function is called.

Unfortunately, it's not an easy task, because assert_almost_equal is used in many different places. But, it should make the Python code cleaner and some tests will run much faster, especially, those, where both parameters a and b are the  mx.nd.array's

@drivanov Thanks for your contribution. Could you please look into CI failures?
@mxnet-label-bot add [pr-awaiting-testing, test]

I think that fixed previously found problems.
The problem in  test_operator_gpu.py:test_laop was NOT reproducible due to nondeterministic behavior we see in that test. One of the cause of the non-determinism was eliminated. I am not sure that it was the last one, but at least, this test should become more predictable.

Started to use improved version of assert_almost_equal

From my comparison of the runtime of the centos-gpu CI for this PR vs. others, it appears that this saves over 10 minutes!  I'd think that would be a huge motivation to get this incorporated for the sake of developers and to the lower costs of maintaining the CI system.  @marcoabreu @larroy @szha

Thanks and great work! Happy to take a look after test passes.

Thanks for your contribution!
Why are there so much changed files in this PR?

Thanks for your contribution!
Why are there so much changed files in this PR?

I added 6 C++ files, with the implementations of 2 new MxNet operators
I changed 12-13 Python files where these operators were used (directly or indirectly). Most changes here are related to the removal of asnumpy() conversions.

Is it available to rebase this PR? It is too many changed files showed in Github to review.
Thanks!

To simplify the merge I will close current PR and will create two separate PRs for allclose and approx_gradient.


Weboji Example: All Oz Ramos tweets unavailable

All Tweets in the "examples" section of  are unavailable, since the account no longer exists.
That section needs to be refreshed.
https://handsfree.js.org/ref/model/weboji.html#examples

Hi, I'm currently homeless (technically just displaced now) and deleted my social medias mostly out of shame for the fact that I wasn't able to generate enough money/support with Handsfree.js. For now I'm not publicly working on the library, but I have tons of new examples and a methods that I've been working on to keep busy.
Once I have housing I will go full blast into this project again, but it's already been 2 months :(
I'm working on moving the documentation to Notion which will be much easier for me to maintain, and have started moving the examples here: https://www.notion.so/901ff075d8df4bd7b9500d134c22038b?v=f33d13f1c67b458487250992a8501e2c
Another link that might help is the WordPress documentation at https://handsfree.dev which explores my other tools like the Bookmarklet, Face Coding, and more.

Whoops sorry this is the correct Notion link: https://labofoz.notion.site/901ff075d8df4bd7b9500d134c22038b?v=f33d13f1c67b458487250992a8501e2c
It currently has 25+ example videos and some of them also include the source code. I have at least another 25 examples for Weboji, since face tracking was the genesis of Handsfree.js but it'll take time to migrate everything


refactor: remove wapc EvaluationContext global state and locking

Description
This PR removes the need to use a global state to store the retrieve the EvaluationContext of a waPC policy when the policy is using a host callback.
It introduces the new_host_callback constructor that takes a reference (Arc/Mutex) to the evaluation context and returns a higher-order function (the callback).
This removes the need for locking several times since the host callback function does not need to retrieve the EvaluationContext from a global state anymore.
Test
Existing tests were updated and refactored.
Lock-related tests were removed.
Also, the policy_evaluator_builder module was refactored as policy_evaluator sub-module.
This simplifies the testing, since this way, the tests in the policy_evaluator_builder can access private fields of the parent module.

I ran the load tests written with k6 against policy-server. The performance of this branch if comparable with the latest rewrite I introduced; the numbers are basically the same.
However, the policies being tested are not generating any context aware request. I a load test made against this PR + policies making context aware requests (like logstatements) will outperform the code we currently have. I know @fabriziosestito is writing a policy to be used for this testing scenario


Implement RobotDynamicsEstimatorDevice - PR6

This is the last PR for the RobotDynamicsEstimator. It implements the device that will be running on the robot and uses the full RDE library. I tested the device in simulation by commenting out the readings of the motor currents (not available in Gazebo) and by setting them manually.

I rebased on master. The PR is ready for review @GiulioRomualdi

Suggestions applied and class documented.
@GiulioRomualdi

I'm going to add the README. I'll let you know as soon as it is pushed.

README added (actually yesterday). @GiulioRomualdi

I just rebased on master


[NeurIPS 2023 OOD Track] Puck

Puck participated in the OOD track. This is the code for Puck. Thank you.

Did you intend to submit two entries to the OOD track?

Yes.
The difference between puck-fizz and puck is that puck-fizz uses the published query dataset during the indexing stage.

@nk2014yj  thanks for the PR. Does this agree with your experiments
puck,"Puck('C1000_F1000_Neighborhood16_Construction200', {'search_coarse_count': 10, 'tinker_search_range': 160})",text2image-10M,10,8861.585558682262,0.0,3725.2352855205536,10215024.0,0.0,0.0,ood,0.9015829999999999
puck,"Puck('C1000_F1000_Neighborhood16_Construction200', {'search_coarse_count': 10, 'tinker_search_range': 165})",text2image-10M,10,8635.750395405932,0.0,3725.2352855205536,10215024.0,0.0,0.0,ood,0.9040100000000001
puck,"Puck('C1000_F1000_Neighborhood16_Construction200', {'search_coarse_count': 10, 'tinker_search_range': 170})",text2image-10M,10,8423.64192677345,0.0,3725.2352855205536,10215024.0,0.0,0.0,ood,0.9061980000000001
puck,"Puck('C1000_F1000_Neighborhood16_Construction200', {'search_coarse_count': 10, 'tinker_search_range': 175})",text2image-10M,10,8312.184281522512,0.0,3725.2352855205536,10215024.0,0.0,0.0,ood,0.9083629999999999
puck,"Puck('C1000_F1000_Neighborhood16_Construction200', {'search_coarse_count': 10, 'tinker_search_range': 190})",text2image-10M,10,7772.49002208958,0.0,3725.2352855205536,10215024.0,0.0,0.0,ood,0.9141640000000001

Yes, agrees with our experimental results. Thanks


Atom autocompletes <> brackets in .rs files

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description

Steps to Reproduce

Open a .rs file
Type <
A > appears next to the <

Expected behavior:
.rs files are for Rust, which doesn't use <tags>, and this autocompletion is really annoying when I'm trying to write comparison operators (>,<,<=,>=)
Reproduces how often:
Always
Versions

Atom    : 1.42.0
Electron: 4.2.12
Chrome  : 69.0.3497.128
Node    : 10.11.0
apm  2.4.5
npm  6.12.1
node 13.5.0 x64
atom 1.42.0
python 3.8.0
git 2.24.1
OS: Arch Linux

The answer you seek is written here:
https://github.com/atom/bracket-matcher#scoped-settings
Possibly you would aim for:
".rust.source":
  "bracket-matcher":
    autocompleteCharacters: [
      "()"
      "[]"
      "{}"
      "\"\""
      "``"
    ]

Even when bracket-matcher is disabled, this still happens.
And this configuration didn't help too.

I failed to replicating your problem on my Atom installation.
I was using the built-in grammar.
Which packages do you have on your Atom installation?
You can reach a list by executing in your OS terminal:
apm list

> apm list
https://gist.github.com/PonasKovas/e57eb52f423cb32156cb2cac6a501517


Change celery warning alert to 5

Summary | Résumé
Change celery warning alert to 5 in 1 minute vs 1 in 1 minute

We had a talk on Slack on how to handle individual failures. We want to target specific failures because these can have different impact. We do not want to treat all celery errors as the same (and silence more serious issues). Silencing sparse SSL connection errors for example to reduce the noisy alerts could be a possibility.


reindeer: init at unstable-2023-05-18

Description of changes
This PR adds reindeer with the ability to auto update using nix-update-script.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Additional notes

Fixes #232693
Did not add anything to the release notes as buck2 is not a service

Addressing your comments! Thank you.

Other than our thread on nix-update-script, all comments have been addressed.

Since your approval (thank you by the way), I added the --depth=1 flag to the git clone in the update script. Everything else is the same.

https://github.com/ofborg build reindeer

@ofborg build reindeer


cannot use  when no PartitionKeys and ClusteringColumns exists.

In file keyspace.go, Line 33,
 33 func (k *k) Table(name string, entity interface{}, keys Keys) Table {
 34     n := name + "__" + strings.Join(keys.PartitionKeys, "_") + "__" + strings.Join(keys.ClusteringColumns, "_")
 35     m, ok := toMap(entity)
 36     if !ok {
 37         panic("Unrecognized row type")
 38     }
 39     return k.NewTable(n, entity, m, keys)
 40 }

I have a keyspace A, with table table_test
cqlsh> CREATE KEYSPACE IF NOT EXISTS A  WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor':0} AND DURABLE_WRITES = false;
cqlsh> CREATE TABLE A.Table_Test(indication_id timeuuid PRIMARY KEY);
cqlsh> DESCRIBE TABLES;

Keyspace a
----------
table_test

gocassa gen CQL like this:
SELECT indication_id FROM a.table_test____  WHERE indication_id = ? [0]

when run it in cqlsh
cqlsh> SELECT indication_id FROM a.table_test____  WHERE indication_id = 123;
InvalidRequest: code=2200 [Invalid query] message="unconfigured table table_test____"

@slayercat I would have to look into this a bit more but don't manually create the table, use gocassa to do it for your.
Common idiom is to try to create the table on binary startup and ignore the error.
https://godoc.org/github.com/hailocab/gocassa#TableChanger


Add a property to the tracker history for all queries

Closes #32

Thank you for the PR.
There is any which does the same thing...i think that will confuse people.

The difference is that history.any only holds queries matched using the on.any while history.all would have every query regardless of how it was matched.
For example:
tracker.on.insert('table_name').responseOnce(1);
tracker.on.update('table_name').responseOnce(1);

await knex.insert({id: 1, value: 1}).into('table_name').on_conflict('merge');

await knex.update({value: knex.raw('"value" + 1')}).from('table_name').where('id', 1);

// Contains only the insert
console.log(tracker.history.insert);

// Contains only the update
console.log(tracker.history.update);

// This one is empty
console.log(tracker.history.any);

// How to ensure that the update happened before the upsert?

For these places which you want to check order of exec, use the any matcher... Is it not enough?

Well... sure:
tracker.on.insert('table_name').responseOnce(1);
tracker.on.update('table_name').responseOnce(1);

// Could be replaced with
tracker.on.any(query => query.method === 'insert' && query.sql.includes('table_name')).responseOnce(1);
tracker.on.any(query => query.method === 'delete' && query.sql.includes('table_name')).responseOnce(1);

But this seems unnecessarily verbose.

Ok, You've convinced me, @aryehb let's fix the small things that I've mentioned, and we will merge it :]

@felixmosh I rebased and added the resetHistory() behavior, along with some tests. Let me know if there's any other tests you want me to add.

Thank you for this PR 🙏🏼


chore(deps): update common-dev-assets digest to c0b9fc9

This PR contains the following updates:

Package
Update
Change

common-dev-assets
digest
dda6d1f -> c0b9fc9

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

:tada: This PR is included in version 4.0.1 :tada:
The release is available on:

GitHub release
v4.0.1

Your semantic-release bot :package::rocket:


launch video frame from a JPanel

Hi,
First, I want to congratulate you for the API !
I am planning to use your webcam-capture API for a specific usecase :
I have a JPanel that offers users the possibility to load a profile image from disk. When done, the image is displayed on the JPanel.
I want it to offer also the possibility to display live stream video from a connected webcam, so I added a JButton that calls your WebcamPanelExample() class to make a primary test.
Unfortunatly, the frame stays on backgroud (which is normal), when I changed the WebcamPanelExample() class to extends from a JDialog instead of a JFrame, I cannot have the live stream video anymore !!! I think it is a matter of modality coming from the JDialog.
Can you give me a simple way to fix this problem ? I mean having the live stream video window as modal so I can see the video and take a capture to save it in a image for example...
Thanks a lot.

Hi @mhamed306, can you please post a simple code sample demonstrating the issue you've described?

Hi @sarxos ,
I prepared for you a little quick&dirty project where I test your API, sorry...
Can you send me an email to<EMAIL_ADDRESS>so I can send you the project ?
Thanks for all ;)

@mhamed306, the email has been sent.

@sarxos ,
thanks for your quick responding, but I found what was the problem ! I just changed some little things :
1- Change the WebcamViewerExample() class to extend from a JPanel instead of JFrame
2- Create a JDialog (to have a modal window) and add to it the WebcamViewerExample() object
3- Call the JDialog object into a thread (this is what allowed me to display the camera video stream)
Thanks for all ;)

Great :) I'm glad it works. The Swing can be tricky sometimes. Take care!


Breaking error when processing paper

When processing the following paper: rsef assess -i https://doi.org/10.1098/rsif.2022.0412 -U -B I get an incomplete JSON dumped, which corrupts the whole output. This is a bug.
{
    "RSEF Output": [
        {
            "title": "Learning anisotropic interaction rules from individual trajectories in a heterogeneous cellular population",
            "implementation_urls": [
                {
                    "identifier": "https://github.com/MathBioCU/WSINDy_CellCluster",
                    "type": "git",
                    "paper_frequency": 2,
                    "extraction_methods": [
                        {
                            "type": "regex",
                            "location": "",
                            "location_type": "",
                            "source": "",
                            "source_paragraph": ""
                        },
                        {
                            "type": "bidir",
                            "location": "RELATED_PAPERS",
                            "location_type": "ARXIV",
                            "source": "SOMEF",
                            "source_paragraph": ""
                        }
                    ]
                },
                {
                    "identifier": "https://github.com/MathBioCU/WSINDy",
                    "type": "git",
                    "paper_frequency": 1,
                    "extraction_methods": [

Fixed in #38


data inspection notebook

Maybe this would be more of a 'considerations for slower-moving glaciers' section or something like that, but I'm considering including another notebook/script that would show situations where certain types of outlier detection may be required, ie. for slower moving glaciers where ice movement is closer to the noise floor.
currently all of the methods are somewhat blunt but I think could be useful and discussing the issues is kind of a good 'due diligence' step for these workflows
I have a draft version I'll include for now but definitely open to making heavy changes /removing if it doesn't fit or doesn't come together enough

added in https://github.com/vdevauxchupin/ITS_LIVE_TOOL/pull/29 but keeping open for discussion/improvements for now

for sensor specific filtering, double check sensor ground sampling distances :
in ITS_LIVE docs (have they released new ones?)

[ ] check input data for landsat 5, check if ITS_LIVE uses TM or MSS bands -- matters for ground sampling distance

[ ] for landsat 7, confirm ITS_LIVE uses panchromatic band --> ground sampling distance = 15 m


def auto_follow does not continue loop once it hit's a user that has blocked you

C:\Twitter\twitter-master>python sample_twitter_codes.py
error: Twitter sent status 403 for URL: 1.1/friendships/create.json using parameters: (follow=False&oauth_consumer_key=HIDDEN&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1465750327&oauth_token=HIDDEN&oauth_version=1.0&user_id=HIDDEN&oauth_signature=HIDDEN)
details: {'errors': [{'message': 'You have been blocked from following this account at the request of the user.', 'code': 162}]}
I have not really touched Python development but will have a further look if I get time.

I don't see the auto_follow function, nor the sample_twitter_codes.py file in this project. Where is it?

Looks like it's from one of these spammy-looking repos:
https://github.com/ProgrammingforMarketers/grow-twitter-following
https://github.com/tron1991/Automate-Twitter-Followers-Python
@davebeaumont I suggest you report the issue at whichever repo you got your code from, or share here a minimal code example needed to reproduce the problem, ideally using this twitter module directly without third-party apps.
@sixohsix I suggest you close this in the meantime.


feature: Themeing Todo Telescope

Did you check the docs?

[X] I have read all the todo-comments.nvim docs

Is your feature request related to a problem? Please describe.
It is possible to theme Telescope (https://github.com/nvim-telescope/telescope.nvim#themes). However, due to the way you call telescope in todo-comments, it's hard to theme it in todos.
Describe the solution you'd like
It'd be awesome to be able to theme the telescope. Ideally, todo-comments should use the same extension system as other systems, making themeing trivial.
Describe alternatives you've considered
N/A
Additional context
No response

:TodoTelescope theme=ivy initial_mode=normal previewer=false layout_config={bottom_pane={height=12}}


Skip attrs in ast::Literal::token

ast::Literal::token panics on literals containing attributes. rust-analyzer crashed on the rust-lang/rust repository by parsing a test containing this.

bors r+
Thanks!


Basic search specs

Receive a NameSearchRequest and return a NameSearchResponse
From the request the following features should be working:

the req.content defining which fields the q search parameter is applied to
q search parameter
filter parameter inside the core MultivaluedHashMap<NameSearchParameter, String>. Different parameters should be logically AND-ed while multiple values are OR-ed.

Ideally support also the following:

req.sortBy

If they are not implemented in this Milestone please create a new issue and push to next search milestone

Implemented as described here


Cannot make a model a "target" into a NEURON network

Hi.
I have used your code, for the past year, without issues.
Now I'm trying to make a small scale network using PyNeuron-Toolbox to load the morphology of a model. I can correctly simulate, stimulate and record the cell in the network, but when i define it as a target for other cells, NEURONS replayed with a "NoneType".
I have tried the same code with another model, with a  "built in" morphology, and everything is fine.
cell = self, which is critical, is present. Maybe defining self.soma[0] causes the issue but i cannot change it back to a classic self.soma.

If you can find a way to fix it, I'm happy to review a PR to merge the
change!
On Sun, Jun 23, 2019, 3:58 AM Stefano<EMAIL_ADDRESS>wrote:

Hi.
I have used your code, for the past year, without issues.
Now I'm trying to make a small scale network using PyNeuron-Toolbox to
load the morphology of a model. I can correctly simulate, stimulate and
record the cell in the network, but when i define it as a target for other
cells, NEURONS replayed with a "NoneType".
I have tried the same code with another model, with a "built in"
morphology, and everything is fine.
cell = self, which is critical, is present. Maybe defining self.soma[0]
causes the issue but i cannot change it back to a classic self.soma.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ahwillia/PyNeuron-Toolbox/issues/10?email_source=notifications&email_token=AAE3NUIBDBCKVSPLSBJISGLP34ULLA5CNFSM4H2YKMHKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4G3EERVA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAE3NUKNGL6ZGV7FCWQXRHDP34ULLANCNFSM4H2YKMHA
.

Can you clarify what you mean by "NEURONS replayed with a 'NoneType'"?
Note that NEURON 7.5 and later (current version is 7.7) directly support instantiating a morphology in a Python cell class; an example method follows:
def load_morphology(self):
    h.load_file('stdlib.hoc')
    h.load_file('import3d.hoc')
    cell = h.Import3d_SWC_read()
    cell.input('c91662.swc')
    i3d = h.Import3d_GUI(cell, 0)
    i3d.instantiate(self)

Hi.
The following code check the existence of the cell GID and target.
if self.pc.gid_exists(tgt_gid):
    print self.pc.gid_exists(tgt_gid)
    target = self.pc.gid2cell(tgt_gid)
    print target

If i load the model using PyNeuron-Toolbox:
gid_exists is correctly 3 but "target" replays with "None".
Then "AttributeError: 'NoneType' object has no attribute 'L_PF'" - L_PF is the name of the list with the synapses.
Trying with your code @ramcdougal, without changing anything else, self.soma[0] included:
gid_exists is correctly 3 and reports <model_net.Model_net instance at 0x7fcb27046248>
The connection is made and works.
Thank you.
Best

I'm glad that solution worked for you.
I believe the problem you ran into is that this code wasn't associating sections with cell objects. Can you see if the change at
https://github.com/ahwillia/PyNeuron-Toolbox/commit/36ada2da6b2d508a3e7f054c40239044103a2234
fixes your original problem?
Thank you.

if the change at
36ada2d
fixes your original problem?

Yes, it solved the original issue.


Backport 2.1: remove additional zero byte when writing pub der

Description
Backport of #1258 to mbedtls-2.1
Status
READY

Needs a ChangeLog entry. Can be fixed in gatekeeping.


Pipeline for ocw-www homepage

Related to #196
Pipeline for previewing/publishing the ocw-www homepage.
Can be tested on the concourse QA site at ../teams/ocw/pipelines/ocw-www-preview-pipeline/jobs/build-ocw-www/
Also added fly bash scripts for creating the pipelines.  To try them, you'll have to set the following env variables:
export FLY_TARGET=<your_concourse_target>
export FLY_TEAM=ocw
export ARTIFACT_BUCKET=ol-eng-artifacts
export GIT_CONFIG_ORG=ocw-content-rc
export GITHUB_DOMAIN=<MIT github domain>
export HUGO_THEME_BRANCH=release
export OCW_WWW_REPO=the-ocw-www-rc_2b7b49fc4f784ca293edee4368e35a88
export OCW_CONTENT_BUCKET_PREVIEW=ocw-content-draft-qa
export OCW_CONTENT_BUCKET_RELEASE=<TBD>
export OCW_STUDIO_BASE_URL=<RC or prod base url of ocw-studio>
export FASTLY_SERVICE_ID_PREVIEW=<secret>
export FASTLY_API_TOKEN_PREVIEW=<secret>
export FASTLY_SERVICE_ID_RELEASE=<secret>
export FASTLY_API_TOKEN_RELEASE=<secret>
export GIT_PRIVATE_KEY=<secret>

Then you can run:
sh pipeline-theme-assets.sh

and
sh pipeline-ocw-www.sh preview

or
sh pipeline-ocw-www.sh release

@blarghmatey I just committed changes to address most of your comments, have some questions about other ones though.

:+1:

:+1:


Curious item compatibility

As of now, curious items are able to have the modifiers applied to them and take effect if held in a main or offhand slot. However, is there a way to have these modifiers take effect while the curious items are in their respective curious slots?

When playing with the Curious API and any of the mods you used, did you also encounter this issue, if so can you tell me how you got it to work wiht the tiered mod.
Here is the issue I keep getting, it only happens with Curious and Tiered not due to other mods.

P.S. I don't know if it is wrong of me to ask questions in these comments, sorry in advance!


Include tokens from failed transactions (develop)

Same as #12426, for develop.

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me


Stop help active from crashing when changing windows

In master, having 'help context' open and changing windows caused it to crash because it didn't have the new window in its dictionary (I think?).
Here is an example:
2021-08-05 08:43:33 ERROR cron interval error <bound method GUI._tick of <talon.imgui.GUI object at 0x0000000031682AF0>>
   10:                   threading.py:912* # cron thread
    9:                   threading.py:954*
    8:                   threading.py:892*
    7:                  talon\cron.py:155|
    6:                  talon\cron.py:103|
    5:        talon\scripting\rctx.py:233| # 'cron' user.knausj_talon.code.help:call()
    4:                  talon\cron.py:178| # [stack splice]
    3:                 talon\imgui.py:894|
    2:                 talon\imgui.py:920|
    1: user\knausj_talon\code\help.py:204| context_name = display_name_to_context_name_map[display_name]
KeyError: 'draft global'

This change makes it regenerate it's dictionary before it renders, for me fixing this crash.
This is probably the wrong way to do it! I'm not sure why display_name_to_context_name_map doesn't contain all the help pages and not just the active ones. I don't know much python (or much talon scripting) but would it be better to generate this once with everything in it and rely on something else to detect what is and isn't active?

Actually this doesn't completely solve it. I still got this error:
2021-08-05 12:14:58 ERROR cron interval error <bound method GUI._tick of <talon.imgui.GUI object at 0x000000005B0EB1F0>>
   11:                   threading.py:912* # cron thread
   10:                   threading.py:954*
    9:                   threading.py:892*
    8:                  talon\cron.py:155|
    7:                  talon\cron.py:103|
    6:        talon\scripting\rctx.py:233| # 'cron' user.knausj_talon.code.help:call()
    5:                  talon\cron.py:178| # [stack splice]
    4:                 talon\imgui.py:894|
    3:                 talon\imgui.py:920|
    2: user\knausj_talon\code\help.py:229| draw_context_commands(gui)
    1: user\knausj_talon\code\help.py:258| commands = context_command_map[selected_context].items()
KeyError: 'user.knausj_talon.apps.vscode.vscode.talon'

Can reproduce this issue, swapping from my terminal to my slack window caused a crash KeyError: 'abbreviate'


Added EBS-driver fixture in integration test for k8s 1.23+

update eks cluster in integration test fixture and website doc from 1.22 to 1.24
added ebs_addon fixture to create iamservice account and addon per k8s 1.23+ requirement (https://docs.aws.amazon.com/eks/latest/userguide/csi-iam-role.html) and (https://docs.aws.amazon.com/eks/latest/userguide/managing-ebs-csi.html)
updated terraform eks variables from 1.22 to 1.24
ran black for code formatting

did you run black? looks good otherwise

yes per commit comment as well. @ryansteakley


noqa comments parsing logic

Currently these are all valid noqa comments:
# noqa: A100,B101
# noqa: A100 B101
# noqa: A100, B101
# noqa: A100 , B101

# noqa: A100B101
# noqa: A100,,B101

The formats in the second group should be invalid.

I think noqa: A100,,B101 is maybe ok since it's at least unambiguous (but not currently formatted).

# noqa: A100B101 is definitely wrong.


Skeleton of a line-list data conversion python script

This script right now only:

reads in a local copy of the line-list csv
changes the ID field to _id
writes it to a json file

But I wanted to get eyes on it since I'm not a python person, so I'd like to know about any structural issues/areas for improvement early on. Thanks!

If we stick to this script it is a good start, just a few things to consider:

you might want to use "file" types as argumentsto functions instead of string paths, it will make testing easier, I'm not sure if pandas support writing from those though.

why python? How do you ensure that the json written by this script conforms to our mongoose validators written in typescript? If you write this script using nodejs you could simply re-use those.

Is the idea to have another script that will then read from the json file and send it to mongo db? Why not doing this as part of this script? Or will this just be mongoimport? (that implies we ditched the idea of importing via the HTTP API, fine by me I just want to make sure we're all agreeing on that)

you might want to use "file" types as argumentsto functions instead of string paths, it will make testing easier, I'm not sure if pandas support writing from those though.

done, thanks!

why python? How do you ensure that the json written by this script conforms to our mongoose validators written in typescript? If you write this script using nodejs you could simply re-use those.

I think the short answer is, I can't ensure it conforms to our mongoose validators -- I was planning on using the schema that I checked in.
My rationale for using python instead of nodejs is that this is a "one-off" script (definitely will run it more than once, but hopefully it's still a temporary thing). I didn't want to add a bunch of custom stuff to our server to be able to handle this CSV format. I could probably write a standalone nodejs script, not integrated into our server, that could use the mongoose validators but I thought python would be easier for the purposes of converting the data. WDYT?

Is the idea to have another script that will then read from the json file and send it to mongo db? Why not doing this as part of this script? Or will this just be mongoimport? (that implies we ditched the idea of importing via the HTTP API, fine by me I just want to make sure we're all agreeing on that)

I originally planned to have this script import the data into mongodb as well, and I might still -- but I'm not quite sure if that's preferable to mongoimport yet, so I was leaving that to decide later :) I think we did set aside the idea of importing via the API since it's probably just more work.

 Ingest existing line-list data into MongoDB


Paket releases too often and often too soon

Description
Paket is a great way to deal with packages and versioning, but the versioning of Paket itself is not on a level suitable for enterprise development. New versions a released several times a day. We cannot keep up and we don't know which versions are stable.
Repro steps
Run paket.bootstrapper.exe and find out that an updated version is downloaded each time ;-)
Expected behavior
Paket should provide a stable release that is tested and will be maintained with bugfixes only. For the more experimental features an alpha/beta branch should be provided to test new features.
Actual behavior
Our GIT repository is filled with changes to C# project files, because Paket changes the behavior several times. Some versions keep downloading a lot of versions, spit out a lot of warnings, ...
Known workarounds
Keep with the version you like, but it's hard to coordinate this within your team.

@ramondeklein While I agree in theory and have thought about this myself. It is a little more difficult in practice than you might think. This is because of several reasons:

We depend on people to provide tests for bugfixes/new features for regressions to minimize. I think we can do better here and more often don't accept PRs as fast as we do now and request more tests. But often writing tests is hard, especially when fixing/reworking stuff for 3rt party nuget server implementations (as we are doing at the moment). We are interested in good ways to handle this and PRs ;). See https://github.com/fsprojects/Paket/issues/2511. Often we are forced to provide fixes for a broken state and don't add the necessary regression tests afterwards (again PRs are welcome to help out).
Practice and download numbers shows that prereleases are just not downloaded and tested at the rate we wish. Therefore even when we know that a change might be risky we have no other choice than releasing it because it doesn't really matter if it breaks now and we revert or we do the same after alpha phase.
Often after alpha phases it makes bugs more difficult to identify the faulty commit. This is much more easy in the current process.

So yes I get your point. And yes we tried that. Not working very well.
Finally it's obvious: This is an open-source project. The best way to make it stable for your use-case and stuff we broke for you in recent time is to provide test-cases for them. CI will make sure they won't break again.

You can use paket.bootstrapper in magic mode, fix version of paket in paket.dependencies file and update it only when you want (when you see new functions or bugfixes that will be useful for your project)

https://fsprojects.github.io/Paket/dependencies-file.html#Required-Paket-version
^^ this allows you to require a specific version from the deps file. this allows you to stay stable as long as you want.
Fast releases are really really important for us - other wise we can't react to that things in netcore and nuget ecosystem.

I think it's worth discussing the underlying issue. I think this is not about a lot of releases, but about stability.
It's not like we don't want to improve stability. It's just that we try this particular suggestion from time to time, and from experience it makes things worse for us, because we actually release more untested stuff in a single time (because nobody uses prereleases).
We are open for suggestions and definitely would love to get help on this. Additionally It's always a good idea to lock versions as @forki suggests, because you need stable version numbers for stable builds (that's why we have lockfiles after all).

Regarding changes in csproj files: with the new MSBuild we don't change the csproj at all. So when you convert to this model the csproj will stay stable for very very long time,

btw, maybe quick start should say something about locking paket version in deps file (or at least describe that renamed paket.bootstrapper would download newest paket version every time)?

yes please send a PR to the docs that clarifies things. would be very welcomed


fix unprepared statements

Fixes https://github.com/rails/solid_cache/issues/184

@djmb not sure why github tests are failing, it's working locally so i think this is ready for review if you're able to check it please?

Finally got this working @djmb sorry for the messy commits took a bit of back and forth but this is now passing all tests for prepared_statements: false and also extends the testing framework to ensure we run all tests against this as a scenario. This should be ready to go and would appreciate a review, thanks!


cmd/go: go test -mutexprofile does not retain test binary

What did you do?
Ran a test with -mutexprofile option enabled.
What did you expect to see?
The test binary in the current directory after the test completed.
What did you see instead?
No test binary.
Does this issue reproduce with the latest release (go1.7.4)?
-mutexprofile added for 1.8 release. Reproducible with latest master.
System details
go version devel +0b11f5e372 Wed Dec 28 20:04:34 2016 -0800 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/kale/go"
GORACE=""
GOROOT="/Users/kale/gomaster"
GOTOOLDIR="/Users/kale/gomaster/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/jv/fp0q8rhx427f6p892mh4mpx40000gn/T/go-build063411575=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
GOROOT/bin/go version: go version devel +0b11f5e372 Wed Dec 28 20:04:34 2016 -0800 darwin/amd64
GOROOT/bin/go tool compile -V: compile version devel +0b11f5e372 Wed Dec 28 20:04:34 2016 -0800 X:framepointer
uname -v: Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64
ProductName:	Mac OS X
ProductVersion:	10.12.2
BuildVersion:	16C67
lldb --version: lldb-360.1.70

is the binary still required for latest cmd/pprof and new protobuf based
profile format?

I can't answer that one, but the help says:
	-mutexprofile mutex.out
	    Write a mutex contention profile to the specified file
	    when all tests are complete.
	    Writes test binary as -c would.

CC @pjweinbgo

Yes: some test flags leave a binary behind and some don't. go/src/cmd/go/testflag.go has a switch at line 137 that deals with all the test-only flags. I'll either change the behavior or the comment. (It looks like it's the behavior that needs to be changed, but I'm not sure.)

(It would be nice to have a decision on this before the 1.8 release. Adding tentatively to the 1.8 milestone.)

I have a CL coming today or tomorrow. (changes the behavior)


Doc README.md and reference images

Readme file is updated for functional details and implementation of dp and dc

Merged


Will an agent have to go through multiple Oauth handshake for each of his/her client ?

Let's say an Agent (Accountant) has 10 clients. Will he have to go through 10 Oauth flows and get 10  access tokens, one for each client ?
Or there will be Oauth once and the same access token will suffice for accessing data of all 10 clients.

Hi sri-akshat, the same OAuth token can be used for all clients as long as the Agent-Client relationships are in place.

Thanks @dabd

Hi sri-akshat,
A correction to the previous answer: if the agent is using the client's credentials, then he will have to go through multiple OAuth flows and get multiple access tokens, one for each client.
If the agent is using his own credentials, the same access token can be used for all clients.


virtcontainers: fix hotplug block/net devices execeed pciBridgeMaxCap…

…acity bug
add rollback operations when hotplug block/net devices execeed pciBridgeMaxCapacity
Fixes: #1941
Signed-off-by: jiangpengfei<EMAIL_ADDRESS>

@woshijpf travis is failing mainly because of this
ERROR: Commit 371fc54ea9e2fd4cc3724df238f3af8c0e37c42a: subject too long (max 75, got 78): "virtcontainers: fix hotplug block/net devices execeed pciBridgeMaxCapacity bug"

could you please fix this? thanks

@GabyCT Thanks for you remind I have fixed this error.

/test

Rerunning jenkins-ci-ubuntu-nemu CI.


Jenkinsfile for bumping up automatically the kie-version after a comm…

…unity release
Added a Jenkinsfile for bumping up the versin after a community release
Thank you for submitting this pull request
referenced Pull Requests: (please edit the URLs of referenced pullrequests if they exist)

https://github.com/kiegroup/kie-jenkins-scripts/pull/1191
https://github.com/kiegroup/start.jbpm.org/pull/20

How to retest a PR or trigger a specific build:

* a pull request please add comment: Jenkins retest this

i am ok with addition, just could we rename/call Jenkinsfile.bump-up somehow more better?
like Jenkinsfile.update or so

OK - will do it later on
On Fri, Jan 14, 2022 at 11:53 AM Marek Novotný @.***>
wrote:

i am ok with addition, just could we rename/call Jenkinsfile.bump-up
somehow more better?
like Jenkinsfile.update or so
—
Reply to this email directly, view it on GitHub
https://github.com/kiegroup/start.jbpm.org/pull/20#issuecomment-1013014620,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA37YQYE6NZQ3QR3GB7O6ZTUV76CJANCNFSM5L4DPI7Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>

--
Michael Biarnés Kiefer
Release engineer
EMEA ENG Product-Middleware
Red Hat SL Barcelona Spain https://www.redhat.com
https://www.redhat.com


Login resister views no render.

Hi the auth specific view don't render and do nothing
thanks

Hola Julie!
You need to go to client\routes.js and then require the login, register and profile pages in the bottom of this if block, like so:

if (process.env.NODE_ENV !== 'production') {
// Require async routes only in development for react-hot-reloader to work.
require('./modules/Post/pages/PostListPage/PostListPage');
require('./modules/Post/pages/PostDetailPage/PostDetailPage');
require('./modules/User/pages/LoginPage/LoginPage');
require('./modules/User/pages/RegisterPage/RegisterPage');
require('./modules/User/pages/ProfilePage/ProfilePage');
}

Et voilá - it works! I even managed to get the "add posts" button to only show up when you are logged in :)


feat: breaking change footers

Adds a prompt, and the functionality, for adding a breaking change footer describing the breaking changes in detail, as described in the Conventional Commits specification. I decided against using a dash (-) between "BREAKING" and "CHANGE" as I fear that not every tool supports it, but it may be configurable in the future.
Closes #86

After committing, I noticed that the hint text under the body and the breaking change text prompts has a double comma, so I want to fix that for both before making it an actual PR.