iOS - IOU - Save button and offline message in Edit Amount page overlaps with navigation bar

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: <IP_ADDRESS>
Reproducible in staging?: y
Reproducible in production?: n
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed:

Launch New Expensify app.
Tap + > Request money.
Create a manual request.
Open the IOU details view.
Tap Amount.
Return to IOU details view.
Go offline.
Tap Amount.

Expected Result:
In Step 5, the Save button will not overlap with the white navigation bar.
In Step 8, offline message will not overlap with the white navigation bar.
Actual Result:
In Step 5, the Save button overlaps with the white navigation bar briefly.
In Step 8, the offline message overlaps with the white navigation bar.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[x] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/93399543/9b902992-d132-40d8-a8bb-44aabce3bc88

View all open jobs on GitHub

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

This looks like a regression of this PR
This PR introduces the shouldEnableMinHeight and apply it to EditRequestAmountPage and MoneyRequestSelectorPage
https://github.com/Expensify/App/blob/839545e846e1d61e5b10107f2ccc4d779a6bd35e/src/pages/EditRequestAmountPage.js#L47
https://github.com/Expensify/App/blob/839545e846e1d61e5b10107f2ccc4d779a6bd35e/src/pages/iou/MoneyRequestSelectorPage.js#L98
So this issue happens in MoneyRequestSelector page as well(in offline mode)
In order to solve this issue, we need to minHeight considering the paddingBottom and paddingTop

Remove this line
https://github.com/Expensify/App/blob/399b65e7598365922e6447501f24672876cd12bd/src/components/ScreenWrapper/index.js#L49
Add the following code here

        let minHeight = shouldEnableMinHeight ? initialHeight - (paddingStyle.paddingBottom || 0) - (paddingStyle.paddingTop || 0) : undefined;

This works as expected.

cc @sarious, could you handle this regression?

Yes, sure, it seems I found the issue, but now I can't the check it on android/ios browser, because the flow of running the app has changed, because of certificates.

@sarious
What do you think is the root cause of the issue?

cc @sarious, could you handle this regression?

@fedirjh should I create a new Pull Request to fix this issue? or where is it better to describe the fix?

should I create a new Pull Request to fix this issue?

@sarious Yes, you should create a new PR and include links to both this issue and the original issue.
Edit: Please be aware that any issues labeled as DeployBlockerCash need to be addressed promptly and resolved as soon as possible.

I understand that, so I've spent today the whole day to fix the issue. Of course, it took a lot of time to launch the application on different devices, due to the fact that the launch process changed, due to the addition of certificates. I still couldn't launch the app in Chrome on Android.

@ishpaul777 so, I've created a Pull Request with the fix. So I would be very grateful if you can watch it on Android mWeb Chrome and record the video. I will keep trying to run this on my emulator

@ishpaul777 I've done it by myself, but thank you for proposal.

Ok I'm going to close this since the fix has been CP'd and there's no payment needed specifically for this issue. Thanks y'all!


need a pointer on getting started with radSideDrawer

The API docs at https://svelte-native.technology/docs show an example of using radSideDrawer, but they don't show the steps required to make that component available. I think the first step is to run:
tns plugin add nativescript-ui-sidedrawer

After that I'm not sure what to do. Perhaps I need to import the component where I want to use it like this:
  import {RadSideDrawer} from "nativescript-ui-sidedrawer";

But I think the name needs to start lowercase.
What do I need to do to enable using this component?

For the nativescript-ui controls, you can use the plugin https://github.com/halfnelson/svelte-native-nativescript-ui
For those that haven't been integrated in the package above,  you need to register their element names with svelte-native, see https://svelte-native.technology/docs#using-nativescript-plugins

Thanks!

I can now render a radSideDrawer with any drawerContent and mainContent I want. But it's not clear what I'm supposed to do to listen for taps on items in the drawerContent and use that to change what is rendered in the mainContent. Do you have an example I could look at?

In the demo folder of the svelte-native-nativescript-ui , or svelte-native
repos
On Fri, 20 Mar 2020, 9:59 pm Mark Volkmann<EMAIL_ADDRESS>wrote:

I can now render a radSideDrawer with any drawerContent and mainContent I
want. But it's not clear what I'm supposed to do to listen for taps on
items in the drawerContent and use that to change what is rendered in the
mainContent. Do you have an example I could look at?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/halfnelson/svelte-native/issues/136#issuecomment-601664097,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEGS5AD7FGLKLG453A4T2DRINLCRANCNFSM4LO6BHTQ
.


BaseModel shape reconstruction: Use shape instead of waveform

Does this work? I was wondering this just now when working on the trimming/padding stuff in #276. It could be a way to save some GPU memory.

In our code, it'll work because we pass a jitable_shape. But if I pass a "normal" shape (e.g x.shape), this won't be scriptable anymore.
I'm undecided about this.
And it doesn't really save GPU memory because you pass a pointer. If you'd keep reassigning the same variable name to garbage collect and save memory, but you can't because you need to keep the reference, then it makes sense, but I'm not convinced that's a bottleneck.
I'd love to have feedback from torchscript experts, because I'm quite sure there are some things that we're overcomplicating :sweat_smile:

Well at least the tests are ok so we know this works. I'll close this; we can keep it for further reference if we want to work on it in the future


Household screen shows next/previous household

This should navigate from one household to the next within the census page, not the search results

This should be backwards and forwards between households

Brenda:
From your explanation in story #42, I assume that the order of
transcription is always the same as the order of the written entries in the
piece?  So if we just use the dwelling_number to decide which is the
previous/next dwelling, that is the desired order for previous/next
dwelling, correct?
On Fri, Sep 11, 2015 at 12:16 PM, sean-wood<EMAIL_ADDRESS>wrote:

Assigned #28 https://github.com/FreeUKGen/FreeCENMigration/issues/28 to
@dougkdev https://github.com/dougkdev.
—
Reply to this email directly or view it on GitHub
https://github.com/FreeUKGen/FreeCENMigration/issues/28#event-407360595.

Sean you are correct.
I assume that is how it works now in FreeCEN 1.
The difference is the researcher does not need to see that  DWELLING number as it confuses the issue.
It also takes up valuable space on the display.
Brenda
From: dougkdev<EMAIL_ADDRESS>Sent: Thursday, September 24, 2015 12:01 AM
To: FreeUKGen/FreeCENMigration<EMAIL_ADDRESS>Cc: Brenda<EMAIL_ADDRESS>Subject: Re: [FreeCENMigration] Household screen shows next/previous household (#28)
Brenda:
From your explanation in story #42, I assume that the order of
transcription is always the same as the order of the written entries in the
piece? So if we just use the dwelling_number to decide which is the
previous/next dwelling, that is the desired order for previous/next
dwelling, correct?
On Fri, Sep 11, 2015 at 12:16 PM, sean-wood<EMAIL_ADDRESS>wrote:

Assigned #28 https://github.com/FreeUKGen/FreeCENMigration/issues/28 to
@dougkdev https://github.com/dougkdev.
—
Reply to this email directly or view it on GitHub
https://github.com/FreeUKGen/FreeCENMigration/issues/28#event-407360595.

—
Reply to this email directly or view it on GitHub https://github.com/FreeUKGen/FreeCENMigration/issues/28#issuecomment-142755516 .


ServiceBusTrigger - receive message in all running instances of service

Library name and version
Microsoft.Azure.WebJobs.Extensions.ServiceBus <IP_ADDRESS>
Query/Question
I have a Azure Functions App with a ServiceBusTrigger Function which is connected to a ServiceBus Queue.
Now I want to publish a Message to that Servicebus Queue which is received (and therefor triggers the function) on any currently running instance of the Azuer Functions App.
Is there a way to do this?
the function looks like this:
[FunctionName("MappingCreatedIntegrationEventHandler")]
        public Task Run(
                    //trigger
                    [ServiceBusTrigger(nameof(MappingCreatedIntegrationEvent), Constants.SUBSCRIPTION_NAME, Connection = "ServiceBusConnectionString")] MappingCreatedIntegrationEvent[] events,
            ILogger log)
    {
        log.LogInformation("MappingCreatedIntegrationEventHandler {@events}",events);
        objectQueries.ResetCache();
        propertyMappingQueries.ResetCache();

        return Task.CompletedTask;
    }

Environment
Azure Functions App (Windows Host)
.NetFramework 6.0

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

It would trigger the function on one of the instances. Are you saying you want it to trigger all instances?

@JoshLove-msft  Yes, exactly. I need it to trigger all instances

I need to keep some configuration in cache for performance issues. When i update the config, i want to notify all instances about the new config.

I need to keep some configuration in cache for performance issues. When i update the config, i want to notify all instances about the new config.

I don't think Service Bus is the right mechanism for something like this as it . I think you could probably achieve this with the EventGrid trigger since it is just a webhook under the hood. I believe each running instance of your function app would be triggered when an event is delivered to your topic.


Enhancement request: Keyboard shortcut to apply block-level list formatting

It would be great if Roam42 assigned a keyboard shortcut to apply block-level list formatting. This would allow you to change whether the block you are in shows as a bulleted list, numbered list, or document (no bullets).

Roam42 Issue Log Audit - Could add to Mouseless extension with resurfaced interest


[FLOC-2873] REST API client logging

HTTP requests and response are logged.
Logging can be traced from the requesting process on to the REST API process.

Builds on #1898, which should be reviewed first.

This looks good. Merge once the dependent PR is merged, and after optionally addressing the inline comments.

Reviewed 2 of 2 files at r1, 2 of 2 files at r4.
Review status: all files reviewed at latest revision, 2 unresolved discussions, all commit checks successful.

flocker/apiclient/_client.py, line 254 [r4] (raw file):
If #1898 change the header, it should be changed here as well.

flocker/apiclient/test/test_client.py, line 362 [r4] (raw file):
Should this also assert that _LOG_HTTP_REQUEST is an intermediate action?

Comments from the review on Reviewable.io

_LOG_HTTP_REQUEST being intermediate is... over-specified I think. Mostly we just care that the logging spans the two subsystems, not the specific details of the particular actions logged.


(feature request?) parse transaction receipts for event log data output?

How to extract event logged output?
Please have a look first how it is working in javascript/truffle:
logArgs.contractId
txLoggedArgs
I really want to work with Python and not JS - and apart from some minor hickups it is looking good.
But now, I need to get a specific value logArgs.contractId from an event log after a contract call, and I am stuck.
Because when I try the same as above with the py transaction receipts that I get via
rec = web3py.eth.getTransactionReceipt(tx)

then this of course fails:
logargs = rec.logs[0].args

with
 AttributeError: 'AttributeDict' object has no attribute 'args'

because it simply does not exist - and that seems different from javascript/truffle?
Is it because the event output args are still all mixed up in the rec.logs [0].topics field (or in the rec.logs [0].data field) ?
Example (complete receipt below).
'data': '0x00000000000000000000000000000000000000000000000000038d7ea4c68000ec099eeb7c6385269c410da8eb2e028bf832c8418d731bf99f987e9d9357abe9000000000000000000000000000000000000000000000000000000005a0c6ae0'
'topics': ['0xa0085ce7b3f5d49ff7ac7b4f8caaf2f75147d0228c3811a6d3d41eb2029fe122', '0xa4162351c79a5ed77bfc705394785c93842b6fc2e55d2b302c86ee55540c5b24', '0x000000000000000000000000c62d9f5092737fa7689579e279a3a1dd5543fb9e', '0x00000000000000000000000025f579697ce3fe1cf122fc5ffae9f1d83f16c676'],

Wouldn't the ABI now help, to take those outputs apart?
Is there a helper function for that in web3py?   which one?
If not, wouldn't it be useful to have?    Or ... which external tool can I use now?
Or am I thinking this in a completely twisted way?
Is there a more direct way to access the answered contractId after a newContract call (solidity, abi) ?
because the web3.eth.contract(...).newContract(parameters, transact={...}) works well - but it returns only a a transaction hash. How does truffle actually manage it differently?
Thanks a lot.

{'blockHash': '0x9a120c06c6950f1a3fa29ebd2bfdd349652cda382087d3e402ccb0b56e87ac04',
 'blockNumber': 2076033,
 'contractAddress': None,
 'cumulativeGasUsed': 146500,
 'from': '0xc62d9f5092737fa7689579e279a3a1dd5543fb9e',
 'gasUsed': 146500,
 'logs': [AttributeDict({'removed': False, 'blockNumber': 2076033, 'logIndex': 0, 'data': '0x00000000000000000000000000000000000000000000000000038d7ea4c68000ec099eeb7c6385269c410da8eb2e028bf832c8418d731bf99f987e9d9357abe9000000000000000000000000000000000000000000000000000000005a0c6ae0', 'transactionIndex': 0, 'address': '0x131c7ba3ec8ebe69a6c58d084fd70adfacec76c5', 'topics': ['0xa0085ce7b3f5d49ff7ac7b4f8caaf2f75147d0228c3811a6d3d41eb2029fe122', '0xa4162351c79a5ed77bfc705394785c93842b6fc2e55d2b302c86ee55540c5b24', '0x000000000000000000000000c62d9f5092737fa7689579e279a3a1dd5543fb9e', '0x00000000000000000000000025f579697ce3fe1cf122fc5ffae9f1d83f16c676'], 'transactionHash': '0x3cffaa0926589452f9ead7eb016a8a63087051021beaab511fce366b5dcec3d8', 'blockHash': '0x9a120c06c6950f1a3fa29ebd2bfdd349652cda382087d3e402ccb0b56e87ac04'})],
 'logsBloom': '0x00000000000000000000000000000000000000000000002000000000000800400000000000000000000000000000000200000000080000400000000000000000000000000000000000000000000000000000002000200000000000000000000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000000000100000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000010000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000',
 'status': '0x1',
 'to': '0x131c7ba3ec8ebe69a6c58d084fd70adfacec76c5',
 'transactionHash': '0x3cffaa0926589452f9ead7eb016a8a63087051021beaab511fce366b5dcec3d8',
 'transactionIndex': 0}

This would fit well under the new my_contract.events.MyEvent api that we'll be implementing (in part borrowed from the web3.js API).
Something like this

my_contract.events.MyEvent.processReceipt(receipt) would return a rich version of all of the matching logs from a given transaction receipt.
my_contract.events.MyEvent.parseLog(receipt.logs[0]) would return the given log parsed to it's rich format.

A rich format for a log would allow things like:

log.args: returns the list of arguments passed into the log.
log.args[0]: returns the argument at position 0 in the log entry.
log.args.someArg: returns the argument named someArg from the log entry.

Fantastic. That rich version of the log is exactly what I am hoping for. Go go go.
What can I use until then? Any pointers?

P.S.: Anyone who wants to try out live how that txReceipt.logs[0].args.contractId looks like in truffle, the above mentioned code lines can be visited like this:
sudo apt install npm
sudo npm install -g npm
sudo npm cache clean -f
sudo npm install -g n
sudo n latest
sudo npm i -g ethereumjs-testrpc truffle
testrpc
git clone https://github.com/chatch/hashed-timelock-contract-ethereum
cd hashed-timelock-contract-ethereum
truffle test

@drandreaskrueger
ETA unknown but likely soon (1-2 months?) since overhauling these APIs is somewhat high on the current TODO list.  In the meantime... the following psuedo code should work.
from web3.utils.events import (
    get_event_data,
)
log_entry = receipt['logs'][0]  # pick the log entry you know corresponds to the event.
event_abi = my_contract._find_matching_event_abi('MyEvent')
rich_log = get_event_data(event_abi, log_entry)

Note that the rich_log object won't have the API outlined above, but it will have the extra keys event and args which contain the parsed event arguments and event name.

Fantastic. Hero!
I got that working, with find_matching...:
event_abi = [m for m in abi if m['name'] == 'LogNewContract'][0]

Probably I could now extract the correct contractId, we'll see.
Problem solved.

Just curious:
In this case, fortunately, that contract method newContract fires an event in the end, which also contains the relevant return value contractId.
But I am wondering - what if not?
The newContract ABI
[{'constant': False,
  'inputs': [{'name': '_receiver', 'type': 'address'},
             {'name': '_hashlock', 'type': 'bytes32'},
             {'name': '_timelock', 'type': 'uint256'}],
  'name': 'newContract',
  'outputs': [{'name': 'contractId', 'type': 'bytes32'}],
  'payable': True,
  'stateMutability': 'payable',
  'type': 'function'},
...

mentions outputs:
   'outputs': [{'name': 'contractId', 'type': 'bytes32'}],

where do those outputs end up?
How could they be parsed?

another question:
receipt={...
 'args': {... 'contractId': '\x9dÔMG¥6\x0fQ\x8dì\x8bGzõ´F\x96ü\t'
                                     '\x83¾Ð<\x16\x81\x9câÄ±Ö¾i',
              ...},
 'event': 'LogNewContract',
 'transactionHash': '0xb113b00306ba989c06f72dd73a3db6b3a88245ab1fd49b8c2a1675c5baf9372f',
 ...}
contractId = receipt['args']['contractId]

how do I convert that
len(contractId)= 32
type(contractId)= <class 'str'>

from 'str' to 32 bytes ?
I have tried these functions http://web3py.readthedocs.io/en/latest/overview.html#type-conversions but I end up with funny lengthed results.

Currently, you can only get the return value from functions
when interacting with the function via eth_call.

So constant functions, right?

In the case where your interaction involves sending a transaction,
there is currently no way to retrieve the call data

Alright, now that explains that. No amount of searching for solutions would have been enough.

unless you do something like log it using events.

Good to know. That means contract design has to take that into account.
And the EVM guys should really consider to solve that problem.
Why would it actually be difficult, to just include the return value into the transaction receipt?

So it looks like you found your contractId in the log data.
Yes, perfect, thank you very much.

by encoding it has hex using web3.toHex(bytes_value).

I'll try that, thanks.

by encoding it has hex using web3.toHex(bytes_value).

I'll try that, thanks.

And I see a problem (or I haven't understood something basic yet):
ropsten transaction  --> 0xa7397d1acae590b7b865eaf0fea806b3565e0cd229ab3453afd70fca96b1a184

contractId= GN¾ÁèïµÓ×ªÁËET,·Þ
5x¥é
type(contractId)= <class 'str'>
len(contractId)= 32
string? how to convert?

contractId_hex = web3.toHex(contractId)

contractId_hex= 0x474ec2bec2957fc381c297c3a8c3afc2b5c393c397c2aa02c38102c284c38b45542cc2b707171ac39e0d3578c28ec2a5c3a9
len(contractId_hex)= 102

but
ropsten transaction 0x3eca42175801a9648b98f57e847918b2d54030d66a84dac9a3ba35df64e4b719 -->

contractId= ñd§'¬Þ¼Zp¿kF uyVM@êp=?õÿ
type(contractId)= <class 'str'>
len(contractId)= 32
string? how to convert?

contractId_hex = web3.toHex(contractId)

contractId_hex= 0xc3b164c2a727c2acc39ec28fc2bc5a70c2bf7f6b46c2882075c29e7956c2824d40c290c290c3aa703d163fc3b5c3bf
len(contractId_hex)= 96

how can hex values be of different length (102 and 96) if both are 32 bytes?

I have not found any function which does the below (but probably exists, and I just haven't found it. If not,) ...may this be useful:
def dictifyFnOutput(output, fnName, abi):
    abi_fn = web3.utils.abi.filter_by_name(fnName, abi)
    assert (len(abi_fn)==1) # only 1 function with that name?
    abi_fn = abi_fn[0]

    types = [arg['type'] for arg in abi_fn['outputs']]
    names = [arg['name'] for arg in abi_fn['outputs']]

    return dict(zip(names, output)), dict(zip(names, types))

returns two dicts useful for easier postprocessing:
{'amount':<PHONE_NUMBER>000000,
 'hashlock': 'Ìò\x95\x99\x12yÃL\x8c\x8eQ7\x10\x886÷U\x8e\x9e\x97?;\x0es\x96v\n'
             '®¨ßo´',
 'preimage': '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
 'receiver': '0xc62d9f5092737Fa7689579e279a3a1Dd5543Fb9E',
 'refunded': False,
 'sender': '0x25F579697CE3FE1cf122fc5Ffae9f1d83f16C676',
 'timelock':<PHONE_NUMBER>,
 'withdrawn': False}

{'amount': 'uint256',
 'hashlock': 'bytes32',
 'preimage': 'bytes32',
 'receiver': 'address',
 'refunded': 'bool',
 'sender': 'address',
 'timelock': 'uint256',
 'withdrawn': 'bool'}

how can hex values be of different length (102 and 96) if both are 32 bytes?

I suspect you are not actually working with byte strings.  Try using web3.toHex(textstr=contract_id) and see if you get consistent return values.
Also, what version of web3.py are you using.
Re: the function output by argument names
That does look useful but I'm not entirely sure what the right way for us to incorporate such a thing into the web3 contract API.  cc @carver since this might fit well into the concept we've talked about for contract middlewares that do stuff like this to call and return data.

I suspect you are not actually working with byte strings but rather encoded text strings (maybe utf8?).

Yes, I suspect that too.
But I am just using what the get_event_data rich log returns to me.
(How) would I have to further postprocess that answer?

Try using web3.toHex(textstr=contract_id)

c2 = web3.toHex(textstr=contractId)

TypeError: to_hex() got an unexpected keyword argument 'textstr'

Have you perhaps implemented that textstr= only recently?

version?

 web3 version= 3.16.2

as the 4.0.0 is beta, that 3.16.2 is the newest, right?
And text= does not help, as
c3 = web3.toHex(text=contractId)
c2 = web3.toHex(contractId)

give identical results:
EXAMPLE TRANSACTION 0xa7397d1acae590b7b865eaf0fea806b3565e0cd229ab3453afd70fca96b1a184 on ropsten

contractId= GN¾ÁèïµÓ×ªÁËET,·Þ
5x¥é
type(contractId)= <class 'str'>
len(contractId)= 32
string? how to convert?

c2 = web3.toHex(contractId)
c2= 0x474ec2bec2957fc381c297c3a8c3afc2b5c393c397c2aa02c38102c284c38b45542cc2b707171ac39e0d3578c28ec2a5c3a9
len(c2)= 102

c3 = web3.toHex(text=contractId)
c3= 0x474ec2bec2957fc381c297c3a8c3afc2b5c393c397c2aa02c38102c284c38b45542cc2b707171ac39e0d3578c28ec2a5c3a9
len(c3)= 102

EXAMPLE TRANSACTION 0x3eca42175801a9648b98f57e847918b2d54030d66a84dac9a3ba35df64e4b719 on ropsten
###

contractId= ñd§'¬Þ¼Zp¿kF uyVM@êp=?õÿ
type(contractId)= <class 'str'>
len(contractId)= 32
string? how to convert?

c2 = web3.toHex(contractId)
c2= 0xc3b164c2a727c2acc39ec28fc2bc5a70c2bf7f6b46c2882075c29e7956c2824d40c290c290c3aa703d163fc3b5c3bf
len(c2)= 96

c3 = web3.toHex(text=contractId)
c3= 0xc3b164c2a727c2acc39ec28fc2bc5a70c2bf7f6b46c2882075c29e7956c2824d40c290c290c3aa703d163fc3b5c3bf
len(c3)= 96

some more (rather random) testing:
EXAMPLE TRANSACTION 0xa7397d1acae590b7b865eaf0fea806b3565e0cd229ab3453afd70fca96b1a184 on ropsten

c4 = contractId.encode('utf-8')
c4= b'GN\xc2\xbe\xc2\x95\x7f\xc3\x81\xc2\x97\xc3\xa8\xc3\xaf\xc2\xb5\xc3\x93\xc3\x97\xc2\xaa\x02\xc3\x81\x02\xc2\x84\xc3\x8bET,\xc2\xb7\x07\x17\x1a\xc3\x9e\r5x\xc2\x8e\xc2\xa5\xc3\xa9'
type(c4)= <class 'bytes'>
len(c4)= 50

c4 = contractId.encode('utf-16')
c4= b'\xff\xfeG\x00N\x00\xbe\x00\x95\x00\x7f\x00\xc1\x00\x97\x00\xe8\x00\xef\x00\xb5\x00\xd3\x00\xd7\x00\xaa\x00\x02\x00\xc1\x00\x02\x00\x84\x00\xcb\x00E\x00T\x00,\x00\xb7\x00\x07\x00\x17\x00\x1a\x00\xde\x00\r\x005\x00x\x00\x8e\x00\xa5\x00\xe9\x00'
type(c4)= <class 'bytes'>
len(c4)= 66

EXAMPLE TRANSACTION 0x3eca42175801a9648b98f57e847918b2d54030d66a84dac9a3ba35df64e4b719 on ropsten

c4 = contractId.encode('utf-8')
c4= b"\xc3\xb1d\xc2\xa7'\xc2\xac\xc3\x9e\xc2\x8f\xc2\xbcZp\xc2\xbf\x7fkF\xc2\x88 u\xc2\x9eyV\xc2\x82M@\xc2\x90\xc2\x90\xc3\xaap=\x16?\xc3\xb5\xc3\xbf"
type(c4)= <class 'bytes'>
len(c4)= 47

c4 = contractId.encode('utf-16')
c4= b"\xff\xfe\xf1\x00d\x00\xa7\x00'\x00\xac\x00\xde\x00\x8f\x00\xbc\x00Z\x00p\x00\xbf\x00\x7f\x00k\x00F\x00\x88\x00 \x00u\x00\x9e\x00y\x00V\x00\x82\x00M\x00@\x00\x90\x00\x90\x00\xea\x00p\x00=\x00\x16\x00?\x00\xf5\x00\xff\x00"
type(c4)= <class 'bytes'>
len(c4)= 66

EXAMPLE TRANSACTION 0xc4c89abe771c6c9e0f23b37cec3ef49b4d5d5168b6eea257ec26c402dd22e449 on ropsten

c4 = contractId.encode('utf-8')
c4= b'\xc3\x99\xc3\x81\xc2\xb2n\xc3\xa7\xc3\x97\xc2\x8d\\\xc3\xb9X\xc2\x95\xc2\xbf\xc2\x8f\xc2\x93\xc3\x9dQ\xc3\x89\x1dW:G\xc3\x853g\xc2\xa8;\xc2\xa3\n#\xc3\x90\xc3\xa9\xc3\x86'
type(c4)= <class 'bytes'>
len(c4)= 51

c4 = contractId.encode('utf-16')
c4= b'\xff\xfe\xd9\x00\xc1\x00\xb2\x00n\x00\xe7\x00\xd7\x00\x8d\x00\\\x00\xf9\x00X\x00\x95\x00\xbf\x00\x8f\x00\x93\x00\xdd\x00Q\x00\xc9\x00\x1d\x00W\x00:\x00G\x00\xc5\x003\x00g\x00\xa8\x00;\x00\xa3\x00\n\x00#\x00\xd0\x00\xe9\x00\xc6\x00'
type(c4)= <class 'bytes'>
len(c4)= 66

with utf-8 ==> different lengths
with utf-16 ==> identical lengths!
Again, I am only postprocessing what rich_log = web3.utils.events.get_event_data(abiEvent, log) returns for an object of type bytes32.

EDIT: Looks like I can simply pass that  contractId as a parameter into contract_instance.getContract(contractId) even though that would expect a  contractId as input parameter. Odd.

This is actually the best available answer for v3. v3 expects a latin-1 decoded string in bytes arguments. Is this sufficient for your solution?
If you really want to see the hex value in v3, you would need to do:
contract_id = '\x9dÔMG¥6\x0fQ\x8dì\x8bGzõ´F\x96ü\t\x83¾Ð<\x16\x81\x9câÄ±Ö¾i'
id_bytes = contract_id.encode('latin-1')
id_hex = Web3.toHex(id_bytes)
assert id_hex == '0x9dd44d47a5360f518dec8b477af5b44696fc0983bed03c16819ce2c4b1d6be69'

with utf-16 ==> identical lengths! But why 66?

32 bytes * 2 for hex encoding + 2 for 0x prefix.
Very odd that utf-16 worked...  paging @carver any ideas?

@drandreaskrueger is any of this on the mainnet/ropsent/rinkeby?  can you provide abi, address, and transaction hash for a transaction with one of these values in it?

sure. gimme a sec.

expects a latin-1 decoded string

that's it. Hooray.

EXAMPLE TRANSACTION 0xa7397d1acae590b7b865eaf0fea806b3565e0cd229ab3453afd70fca96b1a184 on ropsten

c6 = contractId.encode('latin-1')
c6= b'GN\xbe\x95\x7f\xc1\x97\xe8\xef\xb5\xd3\xd7\xaa\x02\xc1\x02\x84\xcbET,\xb7\x07\x17\x1a\xde\r5x\x8e\xa5\xe9'
type(c6)= <class 'bytes'>
len(c6)= 32

contractId_hex = c7 = Web3.toHex(c6)
c7= 0x474ebe957fc197e8efb5d3d7aa02c10284cb45542cb707171ade0d35788ea5e9
type(c7)= <class 'str'>
len(c7)= 66

EXAMPLE TRANSACTION 0x3eca42175801a9648b98f57e847918b2d54030d66a84dac9a3ba35df64e4b719 on ropsten

c6 = contractId.encode('latin-1')
c6= b"\xf1d\xa7'\xac\xde\x8f\xbcZp\xbf\x7fkF\x88 u\x9eyV\x82M@\x90\x90\xeap=\x16?\xf5\xff"
type(c6)= <class 'bytes'>
len(c6)= 32

contractId_hex = c7 = Web3.toHex(c6)
c7= 0xf164a727acde8fbc5a70bf7f6b468820759e7956824d409090ea703d163ff5ff
type(c7)= <class 'str'>
len(c7)= 66

EXAMPLE TRANSACTION 0xc4c89abe771c6c9e0f23b37cec3ef49b4d5d5168b6eea257ec26c402dd22e449 on ropsten

c6 = contractId.encode('latin-1')
c6= b'\xd9\xc1\xb2n\xe7\xd7\x8d\\\xf9X\x95\xbf\x8f\x93\xddQ\xc9\x1dW:G\xc53g\xa8;\xa3\n#\xd0\xe9\xc6'
type(c6)= <class 'bytes'>
len(c6)= 32

contractId_hex = c7 = Web3.toHex(c6)
c7= 0xd9c1b26ee7d78d5cf95895bf8f93dd51c91d573a47c53367a83ba30a23d0e9c6
type(c7)= <class 'str'>
len(c7)= 66

that is looking very good. Thanks a million.

So the web3.utils.events.get_event_data(abiEvent, log) returns a latin-1 encoded str for a bytes32.

@drandreaskrueger glad to get this resolved.

Released in beta 9: http://web3py.readthedocs.io/en/latest/releases.html#v4-0-0-beta-9


Rect Select in Timeline

You currently have to individually shift select different keyframes if you want to move them together. Being able to drag a rect around a group of keyframes would be really helpful.
The user should be able to rect select keyframes of different timelines together.

Closed by #13


User exp

Fixes #92

Pull Request Test Coverage Report for Build 1043

7 of 7 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.01%) to 99.182%

Totals

Change from base Build 1032:
0.01%

Covered Lines:
485

Relevant Lines:
489

💛  - Coveralls


QWidget: Cannot create a QWidget without QApplication

Hi,
I followed all your steps and addition to it i have added to my pro file.
MAKE_CXXFLAGS += -std=c++11
QT += qml quick
QT += widgets
QT += printsupport
but still it says QWidget: Cannot create a QWidget without QApplication. Any idea where i went wrong? Thanks

I changed QGuiApplication in main.cpp to QApplication.Then it worked but i want to work with QGuiApplication. Please tell me how can i do that.Thanks

QApplication inherits QGuiApplication.

so you mean to say that the problem is not with QApplication? If so any idea what might be causing " Qwdiget cannot create a Qwidget without QApplications" ?
P.S: Did you test with Qt5.4 using QGuiApplication? Thanks a lot

try to use QApplication instead of QGuiApplication

Its works with QApplication but the application i have developed so far is using QguiApplication. when i replace in my project it is creating problem. That's y i am requesting you is there any other way to draw graph?

qcustomplot based on QWidget.
QGuiApplication do not support QWidget, so qcustomplot object can't be used in QGuiApplication.

okay bad luck for me :(

hai,
I some how made it work with QApplicatoin thanks for your help. If you don't mind can you please give me an example where i can push the data at run time. for example i get the data from Cpp side throught a signal to QML side now how can i apped the data and plot it for specific time choosen by the user.
Eg: let say user chooses plot for 10 sec. Then i need to plot graph for 10 sec on x axis and the data on y axis.Thanks

I tried adding data to the graph like this:
plot.addPoints(2,4)
and i got the error
TypeError: Property 'reduceRight' of object 4 is not a function. Can you please throw some example where  i can add the data at run time. for example i get the data from Cpp side throught a signal to QML side now how can i apped the data and plot it for specific time choosen by the user.
Eg: let say user chooses plot for 10 sec. Then i need to plot graph for 10 sec on x axis and the data on y axis.Thanks

1st setup graph(s): to add graph call addGraph(name,visible,color,width,style)
to add point(s) call  plot.addPoints(x, [y1,y2,...])
y - is array of Y coordinates.

Yeah i have done as you said but still no result.
property var names: ['T1']
 Component.onCompleted: {
            // add new graphs
            //            for (var i=0; i < colors.length; i++)
            addGraph(names[0], true, colors[0], 1, 'solid');
            var y = [3,4,5,6,7]
            addPoints(x,y)
        }

i even tried varies values of x but still no result.May i know what wrong am i doing?

Is it possible to show me your code the picture you have show as an example . where you have added some data.

addPoints adds points for all graphs, for single X coordinate.
Since You have only one graph, the right sequence is:
addPoints(0,[3]);
addPoints(1,[4]);
addPoints(2,[5]);
addPoints(3,[6]);
addPoints(4,[6]);

Thanks a lot. now i understood. how it works.


This page seem to contain outdated information

This page seem to contain outdated information.
The image showing as GUI operation example (https://learn.microsoft.com/en-us/azure/cosmos-db/cassandra/media/how-to-provision-throughput/provision-table-throughput-portal-cassandra-api.png)
does not match what we actually see on current Azure page when on "create table" panel,
even when we use account with admin auth.
The page we see does not have the form to adjust Throughput RU/s like in the bottom right of the image,
thus not providing such utility (to adjust or assign) the page is about.
We tested this page on Aug 25 2023.

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

ID: 203b8bb4-6eb0-39ff-5967-6674db29eca0
Version Independent ID: c7aebbf4-47e2-6b37-5746-72c80e13a508
Content: Provision throughput on Azure Cosmos DB for Apache Cassandra resources
Content Source: articles/cosmos-db/cassandra/how-to-provision-throughput.md
Service: cosmos-db
Sub-service: apache-cassandra
GitHub Login: @TheovanKraay
Microsoft Alias: thvankra

Hi @ceoper ,
Thanks for sharing this feedback. We will look into this and update as appropriate.
Hi @TheovanKraay,
Could you please look into this document request, thanks.

@ceoper I am not able to reproduce what you are seeing. Can you please attach a screen shot of what you see and, if possible, generate a HAR file for the period prior to when you clicked on "New Table"?


Unify Chrome and Firefox extensions

See AndrewBastin/postwoman-chrome#2 for more details.
I would propose to merge and release this change here a few days before releasing a new version of the extensions. So the new code inside Postwoman is loaded on most machines and nothing breaks.
Please wait until the PR at AndrewBastin/postwoman-chrome is approved before merging anything. Maybe more changes here are needed based on feedback.

Hey @levrik,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 1a4fa160-5030-11ea-99fd-116f3aa85035

Hey @levrik,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 679bba20-5031-11ea-99fd-116f3aa85035

Hey @levrik,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 89c549e0-50cc-11ea-8780-e55e8d131b8a

Hey @levrik,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 507aeda0-50ce-11ea-8780-e55e8d131b8a

@levrik
Thanks for the contribution!
I will review the PR in the coming days as I am kinda taking a break right now for personal reasons.
Hope to get back to you on this by Tuesday.

@liyasthomas you can merge when you ready :+1:

Hey @levrik,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: a6056da0-5389-11ea-b947-7d804ffb522c


Document IDE usage

Document:

How to install IDE plugin
How to run Kantra from inside of IDE
How to view analysis results
How to select an analysis issue to 'Generate a Fix'
How to view the Generated fix and reject/modify/accept

For reference we started some docs here: https://docs.google.com/document/d/1E2e6hAbrqQNstUuqGHi49F6t2ewYj9iKXPOknrncR6g/edit#heading=h.sgnn4lx17pld


adding code_of_conduct.md file

adding a code of conduct file

@ColinEberhardt could you please review and merge


Implement shorthand methods lit() and raw()

raw() would be same kind of lazily evaluated wrapper for raw that is done for ref() so that one doesn't have to dig it from knex instance.
lit() would be used to be able to give for example javascript array to different array format {1,2,3} vs. (1,2,3) etc. and to be able to cast literal explicitly like ref() allows for field expressions.

I'm currently refactoring the code to get rid of the hideous stashedQueryProps hack. I'll move the logic to UpdateOperation and InsertOperation where it goes naturally. This should make implementing these easier.

raw is now implemented.


postgres:12.0-alpine upgrade to postgres:12.1-alpine double size

Is there any reason for the size increase from 12.0-alpine 72.8 MB to 12.1-alpine 146.2 MB?

Postgres:11.6-alpine and 12.1-alpine now include support for JIT compilation https://github.com/docker-library/postgres/pull/643
https://github.com/docker-library/postgres/issues/475


Convert this to a protected and public page

A protected page example could be more realistic and practical.
I will try to make a PR which does this with a middleware on a page called /todos

Why do you think it will be more practical?
Happy to see a PR to showcase more features yes

@Atinux I think this is what a typical app looks like: some public pages, such as the home page, pricing page, and some protected ones, like the profile page and dashboard.
I am working on a PR, will share soon.


OT: Help!  I can't see any of the comments on the reddit site.  Haven't a clue what is going on or how to research it.

Stratux version:

Stratux config:
SDR
[ ] single
[ ] dual
GPS
[ ] yes
[ ] no
type:
AHRS
[ ] yes
[ ] no
power source:
usb cable:

EFB app and version: (e.g., WingX Pro7 8.6.2)
EFB platform: (e.g., iOS 9.2)
EFB hardware: (e.g., iPad Mini 2)

Description of your issue:

If possible, enable "Replay Logs", reproduce the problem, and provide a copy of the logs in http://<IP_ADDRESS>/logs/stratux/ and http://<IP_ADDRESS>/logs/stratux.log.

I found a way to research it.  Sorry.


boards: pinetime_devkit0: add compatible for generic spi nor flash

add compatible for generic spi nor flash so that user could use external flash

Please rebase and force push to remove the merge commits. See the Contribution Workflow for more details.

stale, closed


Azure DevEx Architecture Board: Review of IC3 ACS Calling

New SDK Review meeting has been requested.
Service Name: IC3 ACS Calling
Review Created By: Jorge Garcia Hirota
Review Date: 3/13/2023 2:05 PM PT
Hero Scenarios Link: here
Architecture Diagram Link: here
Core Concepts Doc Link: Not Provided
APIView Links: Javascript,
Description:  Developers could use the new APIs from TeamsCall class to admit or reject the users from Teams meeting lobby. This scenario is only available for Teams interop users.
Artifacts per language.
Detailed meeting information and documents provided can be accessed here

Hi @garchiro7,
Just wanted to ask if there will be other API View for the other languages for this review?

Hi @garchiro7,
Wanted to ping again about my question above.

Hi @garchiro7,
Just wanted to ask if there will be other API View for the other languages for this review?

Hi @ronniegeraghty , no only JS at this time.


JSON Support

Hello
I am giving a try to Pistache (seems very attractive!  :-) ) and I have a first question but I did not find any forum or mailling list. Have you got?
If this site is not the appropriate site for this question sorry in advance:
I am trying to create a web api (rest) and I am trying the post action passing json body.
On the service side, how can I process the json string got from req.body?
(By process I mean extract values for keys)
Should I look for an external lib to process json or pistache has that support?
I found a function called rapidJson  but i can not figure out how to use it.
Any sample code?
Thank you
Av

You are looking for something like openapi. They generate example function handlers for pistache given a YAML file with all the paths and parameters.
That code gets JSON and serialises into C++ objects.
Look for the pistache-server language generator
https://github.com/OpenAPITools/openapi-generator

I'm quite the fan of using nlohmann/json.
I think using it with Pistache is pretty straight forward and obvious if you use the examples from pistache and from nlohmann/json.
Let us know how it goes for you!

(Ok, no native support.)
I chosen nlohmann/json too!
Single header file, different API available, ... easy to use...
Great!


Malware & Antivirus Remove Buildclient.Exe on Another pc When Install.

Hello.
When I build client and install generated .exe file on another PC then it is being deleted by antivirus (Malware) ? I don't know where exactly the problem is. Please guide me for proper way or solution.
Any help would be greatly appreciated.

Make a rule for your antivirus maybe

Maybe it's a traditional issue

Do FUD before deliver to your target.


add tests to ensure functions preserve comments

closes: https://github.com/GoogleContainerTools/kpt/issues/1815

@mengqiy what was the root cause and how is this fixed in code ?


Per-server reconfiguration admins

Add commands to control the list of per-server admins. All are only usable by admins:

Cadence add admin <mention target>

Add the mentioned target to the set of admins for the current server. Duplicates generate an appropriate "Already admin" response.

Cadence remove admin <mention target>

Remove the mentioned target from the set of admins for the current server. Generates errors for non-admins, oneself (to avoid mistaken retirement) and the instance admin.

Cadence admin retire

Remove the sending user from the set of admins for the current server.

Add commands to inspect the list of per-server admins. These are usable globally, but can at least be configured by an admin to be disabled (Should they also be configurable to admin-only?)

Server admins are permitted to run any admin-only command in their server. This includes ban and config, enabling them to run and customize the server to their liking. However, as part of this, a few changes need to be made (to account for the fact that multiple people can run these commands, avoid crashing the bot with bad config, and that not all configurables make sense to alter for one server):

ban must now check whether the target user is an admin, and refuse to ban them if so (add admin does not imply unban, and these can be done in either order if necessary, but being an admin makes one ban-proof)
config needs a mechanism to determine whether an admin command can alter a given option. My design for this is a flag "editable" which propagates to the entire subtree - If it is unset or falsy, Cadence config will refuse to alter it (printing it is probably okay though). This is set in the two per-instance config files default-config.json and config.json, allowing the instance admin to override it if desired. Propagation is performed at load time (during the defaulting of config over default-config). The editable flag shall not be saved in persistent-config, and it is itself implicitly non-editable.

This ensures that for example the ID of the instance admin, the streaming source, or the timer for the automatic now-playing presence are not edited (They will probably just get checked against the global default config which results from the merge of default-config and config, but it's still not sane to pretend they're mutable per-server).

config also needs some defenses to prevent server admins from doing things which endanger the bot's stability. Ideas (not mutually exclusive):

Add a "persistent" option to config objects, which governs the result of deleteing them: ie if you delete customCommands.equalTo, it will revert to an empty object - Which will avoid crashing the bot, but will behave as if it was removed entirely.
Do a review of config consumption to ensure that no editable setting will affect other servers if set to an invalid value.
Do a review of config consumption to ensure that no input will leak into executed code.
Do a pass of exception safety around config consumption.
Wrap command itself in a try/catch block as a last line of defense
Suggestions?

Question: Should the list of server admins be stored outside of config? i.e. should performing a restore of a backed-up server config restore the list of server admins as of the backup?

@kenellorando As you are the only person besides myself who admins a server with CadenceBot, you are definitely the launch customer for this project - please do feel free to comment on the design or request changes for this and the other server-configurable CadenceBot issues (Perhaps especially #42 )

@za419

Cadence remove admin <mention target>
Remove the mentioned target from the set of admins for the current server. Generates errors for non-admins, oneself (to avoid mistaken retirement) and the instance admin.

Perhaps we can also consider another configuration option to disallow regular-admins attempting removals on other regular-admins, or regular-admins making more admins. Essentially, this empowers server owners to reduce the risks of accidental admin creation or admins "going rogue" or getting hacked and messing up the server config.

Cadence admin retire

I like this, but because the remove admin command returns an error after running on oneself, admin retire should also prompt a self-removal verification for safety. Seems easier to type the retirement command alone than to type the remove command + one's name.

Should [admin list commands] also be configurable to be admin-only?

I say no, but that is a personal preference. I see there being safety with the option of hiding who the admins are, but I think everyone has the right to know who has what power.

Should the list of server admins be stored outside of config? i.e. should performing a restore of a backed-up server config restore the list of server admins as of the backup?

I generally think no, just leave the admins in the file. I would considered the list of admins part of a bot's configuration. I see the value in keeping it separate though, but I should ask though what does the process look like for "restoring" a backed-up server config?

In order:

Are you suggesting a mechanism to set a (list of) "super-admins"? Thus leaving us with four classes:

The instance (global) admin is implicitly super admin, and cannot be deposed except by manually editing the config file (The King)
Each server has one/several super admin(s), which can do anything an admin can do, plus they can add or remove super and regular admins, and perform backup-reset-restore operations (As per below in point #4) (The aristocracy)
Each server has some number (Between zero and infinity) of admins, who can access administrative commands - Banning or unbanning users, altering the server configuration for additional custom commmands, altered help text, alternate command names, and potentially in the future alternate response strings (ie reconfiguring the message for 'no results' from a search) (The bourgeoisie)
Each server then has some number (between zero and infinity) of users, who can only interact with Cadence via commands (play, stop, search, request, library, now playing, and help), and custom commands (the working class/the serfs, depending on which part of history you choose this metaphor to apply to)
(I don't feel like figuring out this Markdown, this is no longer under iv) That would be possible, and I can see the value in this. Do you think this is needed in #45 or a new issue? Do you have a recommended interface (Off the top of my head - Cadence set super admin/Cadence remove super admin? Do we need to handle the corner case of transitioning super=>admin? If we set an admin to super, do they retain admin rights when de-supered? Do we need to add a variant of retire to perform super=>admin for self, given that normal retire would de-admin entirely?)

Are you asking for Cadence admin retire @za419, or a two-step retirement command? I figured that it was unlikely enough that one would accidentally type a retire-self that this would be unnecessary. I wouldn't mind the first one, given that we then generate an error for Cadence admin retire @someoneElse ("Go use Cadence remove admin if super"). The latter is a bit more tricky just because CadenceBot is (mostly) stateless with respect to messages - The only real state is the server-level array of last-searched-songs for requests - This would require another large piece of global state (an array of per-server arrays of admins whose last message to Cadence was a retire request, for whom we're waiting to see something like Cadence admin confirm retire). Not that that's impossible of course - I simply find it wise to pause before adding something like that.

I agree that the users should have the right to know who's an admin. I will leave out configuring this then.

"Restoring" here has the meaning of issuing the command Cadence config restore, as defined in #43. That is to say, "Please replace my config with the last time I asked you to make a copy of it"
I now notice I missed the opportunity to spec a Cadence config backup in #43, as per the current spec one would need to reset their config to make a copy - It isn't possible to make a copy but keep what you have. I am not sure why I made this omission, as it seems intentional... But I will go add it now.
The main drawback here to me is the potential for surprise - Since we don't really know when the last backup was taken, it would be entirely possible to run Cadence config restore, and find it's older than expected - But now you're unable to fix it, because the backup is so old that you're no longer an admin. Alternatively, if an admin is removed for misbehavior, a backup could inadvertently restore their powers.
This is somewhat similar in reasoning to the (not explicitly called-out) design that bans do not necessarily participate in backup-and-restore (dynamic bans, ie Cadence ban @JakobFrank, are saved to a file named bans.json, which is not a participant in backup-and-restore - Technically. Since bans gets loaded into persistent-config, the current implicit behavior is for the set of bans post-restore to be all users who are banned by either the newly-restored config or the dynamic banlist that did not participate in restore - But this is a less severe issue because bans are (typically intended to be) time-limited, so a ban until "Tuesday Jan 10 2021 10:00:00 AM UTC" that gets restored in February 2022 won't bother anyone) - There are less 'gotchas' involved if the admin list is the same pre- and post-restore (Another example: What if the backup only has one admin, who has since left the server? After restore, we now are in a state where we won't trigger admin onboarding, and no one has rights to perform any administrative operation except the instance admin - We have to depend on them to come fix our server).

Sorry, I wasn't trying to suggest different levels of admin access. I was imagining three levels:

Instance Admin - Exactly as you mention (I'll call it IA)
Regular Admins - They are a single level, but their specific access can be tuned by the IA to have the set of permissions the IA thinks they should have. Whether that includes permissions to add/remove other admins, ban/unban, server config, backup/reset, etc. is up to the IA. If the instance admin thinks his or her server admins should have that power stays with them. Just a suggestion, as it sounds tedious to implement.
Regular Users - Exactly as you mention

I was thinking two-step verification because the remove admin  is designed to error if run on oneself (as you mentioned was to "avoid mistaken retirement"), whereas there's no similar consistency when typing admin retire. Let's say someone types remove admin <self> to which the bot replies, "You can't remove yourself, d-dummy!" From the user's perspective, they might expect some check if they get curious and type admin retire. Of course, I understand that Discord two-step is tedious too, though my opinion is it may lead to some accidental self removals without it.

Yeah, the only drawback I could perceive was the accidental restoration of a banned admin. I still don't have any strong opinion yet on the issue of config restores. Maybe we can leave it a matter to the IA to create a backup as soon as they ban someone? Or maybe automatically backup after any ban.

1. I see - You're suggesting a more fine-grained design, where one receives a role rather than a more generic 'admin' status.
That is probably more tedious, especially on the interface side - We require a lot more commands for that. I suppose it's a greater burden on resources, but that shouldn't be an issue. So tedious yes, difficult no - If you would make use of the increased granularity, I would be willing to implement it. Perhaps then admin = (all permissions), and then admins can execute something like Cadence add permission ban @kenellorando - Simply to remove the condition of "If I can grant anyone roles, do I have to grant myself ban rights"?
Or in other words - The super-admin design, but instead of a standard admin class regular users can be granted permission to use particular admin-level commands.
2. I see your point. I will at least attempt to implement this - If the implementation of the retire-and-verify flow is too complicated I'll back out from it, but I can envision the value in having it.
4. Exactly - I'm nervous about a backup being able to accidentally grant rights to bad actors, or even deny rights to good admins. Backing up after a ban is a decent solution - But then not restoring the bans/permissions is equivalent, and gives us the added power that we control what the backup is (Since the design only allows one backup of config, backing up is inherently destructive - It erases our existing backup.)
So my concept of the backup/restore process is that it affects how CadenceBot acts, but not who it interacts with. In other words - Roles and bans are properties of the user, and backup-and-restore affects properties of the bot.

-1. Not so fine grained that permissions could be defined for the individual-- how about just the 'Admin' level as a whole? Cadence admin permission add ban -> "OK, all Admins can now ban".  That said, for my use case it might not be worth your time; I don't know any particularly trustworthy admins outside of you or I in a certain Discord channel.
-4. Looking at it this way now, I think it's sound to leave it separate from the config. Roles and bans for user, backup and restore for bot. I like the succinctness of that.

1. I see what you mean. I would still like to assign at least one user that isn't the IA to be able to do things - Then we could have IA, Server Admin/SA (All permissions and rights of IA plus retirement (with some way to set the new SA), but only within the Discord server), and then n admins that have the rights granted by IA/SA - Essentially, the theory being that one can add CadenceBot to a discord server without adding me and still someone can admin it.
I don't know how necessary it would be - For our usecase at least, I don't know who would have any permission besides possibly configure - IE the right to add custom commands. That is kind of an 'eh'....
4. Excellent. I will go ahead with that then.


Adding parent header for tables

This branch extracts the new table column styles for bulk payroll and brings them into the Table component to make them available across the app.

This branch doesn't move the vertical border class down to the cell level, which we discussed last week. Is that something you're still planning to do (in a separate branch)?

@paddyduke Added these examples for individual left/right cell borders to the documentation. Good call that :+1:

Looks great. PASS


[test][arm-newrelicobservability] reduce playback test time

Reacts to test-credential changes.
While at it I also reduced waiting time for playback mode.

has been fixed by #30021

@kazrael2119 please take a look. thanks!

/check-enforcer override


Redis Rate Limiter Request By Minute

Hello,
Is there anyway to do 5 request/min in redis rate limiter? I've searched proper way to do that but no chance.
I can maximal do 60 req/min. Can we decrease the 60 req?
Thanks
Erkan

Thanks, we have achived by using "requestedTokens" property.

Hello @Erkanerkisi ,
Thats great to hear, we also have same requirement, can you explain how you achieved it or is there any good document to refer.


Motivation behind new security advisory schema standard in this repo

Hi,
I recently happened to come across the vulnerability JSON schema in this repo that is supposed to standardize exchange of security advisories in machine-readable format. Is there any reason to duplicate this effort and not promote the use of an existing standard?
The CVRF spec (currently v1.3) that exists today was designed exactly for this purpose:
https://docs.oasis-open.org/csaf/csaf-cvrf/v1.2/csaf-cvrf-v1.2.html
and a lot of work is being put into its next iteration, CSAF 2.0 (currently in draft form):
https://github.com/oasis-tcs/csaf/blob/master/csaf_2.0/json_schema/csaf_json_schema.json
The CSAF schema is both more comprehensive and could be adopted by all current users of CVRF.
Are there any specific problems that the schema in this repo is trying to solve that CVRF/CSAF are not? Are there any improvements that could be made to CSAF 2.0 to meet the goals of this work group?
Thanks!

I'm a bit curious how the oasis spec overlaps with the current efforts of the MITRE automation WG. https://github.com/CVEProject/automation-working-group/tree/master/cve_json_schema/v5.x_discuss
Is there any collaboration, or consensus, if these are competing standards or if they compliment each other?

I imagine all of these are this
https://xkcd.com/927/
I didn't know CSAF 2.0 even existed until just now. It's hard to keep track of all these things. I mean, maybe just keeping track of things could be a goal of this group.
That said, the the CSAF schema looks VERY heavy, possibly too heavy to anyone other than an enterprise to adopt and use. A lot of these sort of standards are too difficult for most open source projects to adopt.
Whatever this group does, it's imperative to make "zero friction" part of the DNA.

I'm a bit curious how the oasis spec overlaps with the current efforts of the MITRE automation WG. https://github.com/CVEProject/automation-working-group/tree/master/cve_json_schema/v5.x_discuss
Is there any collaboration, or consensus, if these are competing standards or if they compliment each other?

@Foxboron That schema has a different scope: it's supposed to represent a single vulnerability in machine-readable format. The CSAF schema represents a security advisory, which in loose terms is a "collection" of vulnerabilities and their relationships to products that the advisory describes. There is some overlap in the way vulnerabilities are represented in the CSAF schema and in the CVE schema; for example, both have a list of acknowledgements. And I suppose a case could be made that the vulnerabilities array in the CSAF schema could just point to the CVE schema, much like it does for CVSS scores. Although, I imagine that the vulnerability information in a CSAF document may represent be a subset of all the information present for a particular CVE, for which an explicit vulnerability entry may be useful.
@joshbressers

I imagine all of these are this
https://xkcd.com/927/
I didn't know CSAF 2.0 even existed until just now. It's hard to keep track of all these things. I mean, maybe just keeping track of things could be a goal of this group.
That said, the the CSAF schema looks VERY heavy, possibly too heavy to anyone other than an enterprise to adopt and use. A lot of these sort of standards are too difficult for most open source projects to adopt.
Whatever this group does, it's imperative to make "zero friction" part of the DNA.

It being "heavy" shouldn't be the sole argument for creating an entirely new schema. It's an open standard so if you feel it's too complicated, suggest changes how to make it less so (and right now is the time to do it since 2.0 is still in draft!). It's designed the way it is to cover a lot of use cases and provide plenty of information. If it's difficult to adopt, then let's write tooling that makes it easier to do so!
Also, if you're looking at the (example)[https://github.com/oasis-tcs/csaf/blob/master/csaf_2.0/examples/cvrf-rhba-2018-0489-modified.json] in the CSAF repo, it can be overwhelming since it represents an OpenShift release that consists of a ton of components. For comparison, here is a quick hypothetical security advisory for the latest Django security release with the bare minimum of information (covering only one of the fixed CVEs for brevity):
{
"document": {
  "csaf_version": "2.0",
  "title": "Django security releases: 3.1.1, 3.0.10, 2.2.16",
  "publisher": "Django Security Team",
  "type": "Security Advisory",
  "tracking": {
    "id": "DJANGO-SEC-2020:1234",
    "status": "final",
    "version": "1",
    "initial_release_date": "2020-01-01T00:00:00Z",
    "current_release_date": "2020-01-01T00:00:00Z",
    "revision_history": [
      {
        "number": "1",
        "date": "2020-01-01T00:00:00Z",
        "description": "Current version"
      }
    ]
  },
  "references": [
    {
      "url": "https://www.djangoproject.com/weblog/2020/sep/01/security-releases/",
      "description": "Security advisory web URL."
    }
  ]
},
"product_tree": {
  "full_product_names": [
    {
      "product_id": "DJANGO-PID-1",
      "Django 3.1.1"
    },
    {
      "product_id": "DJANGO-PID-2",
      "Django 3.0.10"
    },
    {
      "product_id": "DJANGO-PID-3",
      "Django 2.2.16"
    }
  ]
},
"vulnerabilities": [
  {
    "cve": "CVE-2020-24583",
    "product_status": {
      "fixed": [
        "DJANGO-PID-1",
        "DJANGO-PID-2",
        "DJANGO-PID-3",
      ]
    }
  }
]
}

90% of this is boilerplate that can be generated by a tool whose input could literally be a list of CVEs, the versions in which they are fixed, and w/e title you want to provide for the advisory. Obviously, providing more information than the bare minimum should be encouraged.

Is there any adoption of the oasis schema currently? The RedHat advisory JSON API seems to be loosely(?) based on CVRF but I take it 1.2 was never adopted as JSON?
Has there been any effort check if NVD would standardize the current JSON dumps to use the OASIS schema?

Is there any adoption of the oasis schema currently? The RedHat advisory JSON API seems to be loosely(?) based on CVRF but I take it 1.2 was never adopted as JSON?

Red Hat primarily published CVRF documents using the 1.2 schema, which are available here:
https://www.redhat.com/security/data/cvrf/
The Security Data API serves those same files in XML but also transform it to JSON, e.g.:
https://access.redhat.com/labs/securitydataapi/cvrf/RHSA-2019:3200.json
That JSON doesn't use the CSAF 2.0 spec though, it's merely a 1:1 copy of the XML ran through a xml-to-json conversion.
Once the 2.0 spec is finalized, I'm sure we'll look at deprecating the old XML files and replacing them with the JSON-only ones both on the data/cvrf/ file share and in the API.

Has there been any effort check if NVD would standardize the current JSON dumps to use the OASIS schema?

NVD is a database of vulnerabilities, not advisories. So there is nothing for them to adopt from the CSAF schema. They do publish individual CVEs using the CVE JSON schema mentioned earlier:
https://nvd.nist.gov/vuln/data-feeds#JSON_FEED

Just to be clear @Foxboron , don't get confused by the new name - CSAF 2.0 is the successor to CVRF 1.2. It was made by the same stakeholder group. Don't view them as competing, it is the successor.

@mprpic
Right, so CVRF only solves one part of the problem which is advisory consumption. But the main issue (in my opinion) is CVE consumption. So even if we did standardize on CVRF for advisories, consuming CVE data would still be left to the will of whoever publishes the data. This means the CVE JSON object between RedHat, NVD, Mitre or Vendor XYZ is still going to be in different formats. It seems like redhat publishes a partial object for the CVE data, but I haven't looked too closely on it.
Is there any intention of standardize on a format for CVE so it's the same across the ecosystems? I feel like that was the original goal of the MITRE schema and the schema worked on by this WG.
@JasonKeirstead I didn't see they changed the name, so I thought it was "CVRF 2.0" :smile: But yes, noted! Thanks!

I've been thinking about this a bit, and this may be a topic for the purpose of this group.
An advisory contains vulnerabilities. A vulnerability might have a CVE or might not. It is a different discussion as to if all vulnerabilities should have a CVE, today they do not and that isn't getting fixed quickly.
Is the group's focus vulnerabilities or advisories? They're similar, but I think the difference is important.

@Foxboron Red Hat's JSON representation for a CVE (example) predates the CVE schema from MITRE and closely matches the data we want displayed on our CVE pages (example). It also includes some data that is outside of scope of a general CVE representation.
With that being said, I don't see why we couldn't migrate to use the MITRE CVE schema. We'll have to do that gradually as we probably have several users of the current API, but the ultimate goal should be to publish the information in an industry-accepted standard rather than roll our own. We already publish CVRF and OVAL metadata, which are industry standards, so we might as well do the same for CVEs. The custom bits that we include in our API right now and don't fit in the MITRE CVE schema could use the newly-proposed x_ prefix attributes (https://github.com/CVEProject/automation-working-group/pull/92) to allow some flexibility.

@mprpic Let me clarify that I'm not explicitly talking about redhat, I'm just motioning towards them as they seem to have implemented parts of the CVRF 1.3 spec. I'm more thinking about OASIS standardizing on a subset of the vulnerability schema for CVE representation as part of CSAF 2.0, which then can be utilized by MITRE, NVDE, RedHat and so on. I'm a bit weary if having multiple specs for advisories and CVEs is a good idea or not.
I realize you do work for oasis and Redhat so it's probably a bit hard to be explicit about which part I'm referring to :)

CVE-JSON schema is an atomic representation of vulnerability information.
V5 supports multiple perspectives on the same vulnerability from different vendors and researchers to coexist.
CSAF is a molecular representation of one or more vulnerabilities, mainly from one vendor's perspective.
I do not see them as competing standards.
To me, the schema here looks like a fork of the CVE-JSON with few additional fields covering OSS use cases. I like the impacted_methods and impacted_apis fields. CVE JSON does not capture that resolution.

After discussion in today's working group I am inclined to think we should mostly be finding existing items and pointing people to them (at first) and perhaps in future helping add tooling to them (if needed), but i don't feel that we should be designing anything novel.

If you need to capture impacted methods/APIs related to a vulnerability, please suggest enhancing CVE JSON format (via https://github.com/CVEProject/automation-working-group/). Descriptions of many CVEs (often in the libraries) do often cite the vulnerable method/call/function - it would be beneficial to capture those in machine readable format where available.

Per agreement in the last WG meeting we decided to focus on existing standards.
@mprpic are you OK to close this issue with the ☝ conclusion? Then I would open a new issue to catalog existing standards.

@MarcinHoppe Absolutely! I would also simply remove the vulnerability.schema.json file from this repo. I don't see it documented anywhere nor used by any existing tooling so I don't think much harm will be done if we remove it.
I'd be happy to contribute to an existing catalog of vulnerability metadata formats.

@mprpic I just opened #67 to start this work.


⚠ PrivateHD has degraded performance

In 1739c4b, PrivateHD ($PHD) experienced degraded performance:

HTTP code: 200
Response time: 2225 ms

Resolved: PrivateHD performance has improved in 6e40b03.


Don't fail with valid options in requirements.txt files

When parsing requirements.txt files, a number of options can be used
that shouldn't make the parser fail. The list of options can
be seen at:
https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format

Note that the travis build fails because a test was broken before this PR. In any case, I created a PR to fix that at https://github.com/davidfischer/requirements-parser/pull/48/

Resurrecting this PR - @antlarr-suse - if you are still willing and will rebase from master, ready to accept.
If not, I can recreate your work.

Hey all. I would love to has this functionality merged so if I can help please pull me in :)

Thanks for the PR @antlarr-suse - we've recreated similar in #63 so we'll close this PR.


Dghazi/testimonials button

The testimonials buttons now route to the proper pages on the landing page.
Fixed the button font/width sizes responsiveness for the testimonials button.

@dghazi12  conflicts need to be resolved here

@dghazi12  conflicts need to be resolved here


Spaces: simple GPU instructions for PyTorch, JAX and tensorflow

Fixes #3656.
I also updated the overview to mention upgrades. If you'd rather have this as a separate PR just let me know :)

Thanks for the suggestions @osanseviero! I just added them.

I love the new content and just fixed a typo in the link from spaces.md, so it's good to go in my opinion!

alright feel free to merge! cc @gary149 for context too

the CI failed on main so the doc hasn't been deployed to https://huggingface.co/docs/hub
Any idea why? cc @mishig25 too

@mishig25, I just saw you triggered a re-run and it worked this time, thanks a lot! Is there anything I should have done differently in the first place?


Offer to help fast local releases?

Offer to bump an npm whoami pre-release –– i.e. bump package.json version, commit it and tag –– to help fast publishing. This makes sense when working dir is clean, process.stdin.isTTY, package version is an npm whoamipre-release and there's no HEAD tag.

Let’s really clearly separate safe and fast publishing into two separate bin scripts. The first is safety and dist-tag selection, the second is rapidly publishing under my own tag for colleagues or where link isn’t cutting it (CI for example). Renaming this issue.


fix(material/select): make VoiceOver read options for selects in dialogs

Fixes #20694
@zelliott noted that this issue was caused by aria-modal preventing
VoiceOver from accessing the select's listbox overlay. He suggested
using aria-owns to re-parent the overlay element to the select
trigger. I tried this and it works great.

After having refreshed myself on the various combobox patterns, you're right that this does stray from ARIA 1.2 (which is what I'm guessing you're following here). I'm concerned that adding aria-owns here might cause some of the issues that the ARIA 1.0 combobox encountered, but I don't quite know enough about comboboxes to know for sure. @stevenyxu likely has some thoughts here.

I didn't realize the fix was already done so I took a stab at it and fwiw did confirm it fixes the issue. Here's my snippet (slightly different flavor than your fix but very similar):

  <button onclick="trigger.setAttribute('aria-activedescendant', 'opt1')"
          id=trigger
          role=combobox
          aria-controls=listbox>
    select trigger
  </button>

opt 1

opt 2

+1 to Zack's point about the risk of appearing like a 1.0 combobox. In my separate discussions with Deque to get axe updated to permit the 1.2 pattern, one potential that was raised was to warn when people set aria-owns to nudge them to the 1.2 pattern instead. By being stuck in the middle here, overzealous heuristics may match you in a way you don't intend. An easy alternative is to put aria-owns on a roleless sibling to the mat-select, which is widely supported and doesn't result in mixing the 1.0 and 1.2 patterns. Of course, the combobox being the component's host element makes this slightly awkward.

@stevenyxu I moved aria-owns to a child element of the combobox without a role (.mat-select-trigger). This seems to work just as well on VoiceOver, NVDA, and ChromeVox.

Forgot to link the demo: https://material2-dev.firebaseapp.com/select

If I understand @stevenyxu correctly, he recommended placing the aria-owns on a sibling of the combobox to avoid mixing the 1.0 and 1.2 patterns (but noted this would require some refactoring). As of now, aria-owns is still a child of the combobox, so IMO this still runs the risk of being flagged in an Axe check or as a WCAG failure potentially.
Regardless, I think this PR is still an improvement over the status quo, which renders popup listboxes wholly inaccessible within modal dialogs, so I wouldn't block on this concern.

Yeah, the only way I see the sibling approach working is if we manually insert a DOM element, which obviously isn't ideal. I figure it's better to hold off on that and see if anyone actually reports a problem.

This PR does not resolve the main issue. Select component is not being read by screen readers. The solution would be to follow the suggestion by @zelliott.

@rameshworsht feel free to file a new issue if you have steps to reproduce. I confirmed that this fix worked for VoiceOver, NVDA, and ChromeVox.

@jelbourn I used the like that you provided for the demo: https://material2-dev.firebaseapp.com/select and test it. Here is the GIF of the test.


Blob upload optimisations

Follow up optimisations for #2827

Improve sync flow. Since #2692 contract deployment has been non blocking. The blob deployment process first deploys blocking blob txs then a non blocking create tx. We should make the whole flow non blocking. Full context here.
Improve chunk size estimation. Based on discussions with @danielbate we determined chunk estimation can be improved. The rationale is that if we know the account's balance, the transaction limit, contract limit and maximum configurable request body size, we can determine an accurate cost before deployment, and thus reduce the need for the user provided value for chunk size tolerance.
Blob tx retry conditions - comment

Wouldn't this be a breaking change?
If yes, would it be worth basing off #2827 and getting it into the release?

IMO the above optimisations that @maschad mentions will definitely reduce the importance of the tolerance level. However unknowns at compile time such as the configurable graph QL body size limit means we should still keep this parameter, and this not introduce a breaking change.

@maschad I'm going to transition this whole issue to blob follow ups.

https://github.com/FuelLabs/fuels-ts/pull/3434#issuecomment-2512170624


List Files and Folders by size on Disk

Thanks a lot for such a great Tool. It is light weight and simple. The only problem is it lists files and folder by its shown size not its actual size on disk. The downside of this is it lists all my files on onedrive folder which are not even locally stored on my PC.

You can see, Onedrive files are even not downloaded but all of its folder are shown here:
Specially "Kurulus 2"is not locally available but it is shown most weight in the app:

Update:
I have only 250 GB SSD but it shows size of my C drive much larger.

In v3.5.0 I added support for handling compressed files and OneDrive's on-demand files, Now it reports "size on disk" instead of just the file size.


build_and_deploy: Adapt for ESR releases

Parse the latest tag and call an ESR deploy job if it matches an ESR
tag.
Change-type: patch
Signed-off-by: Alex Gonzalez<EMAIL_ADDRESS>

@balena-ci I self-certify!


Add missing import for custom DbAdapters.

The instanceof check for custom DbAdapters via Shopware_Components_SwagImportExport_Factories_CreateDbAdapter is always failing as the import for DataDbAdapter is currently missing. This PR fixes the issue by adding the import.

Hi @kleinmann
thanks for your contribution. your commit is merged with e5111d1ba29808b8a9ba0616db802ef7774fffa0


Move Timeit service into this repo?

It kind of seems like maybe it belongs here?
https://github.com/fitzgen/tokio-timeit-middleware

(I can submit a PR if this is desired)


vulkansdk can not find in ubuntu

Xmake Version
xmake v2.7.8+20230406
Operating System Version and Architecture
ubuntu 22.04
Describe Bug
After I installed vulkansdk to /usr, I add add_requires("vulkansdk 1.3.243", {system = true}) in my xmake .lua.
When I execute xmake, it log:
checking for platform ... linux
checking for architecture ... x86_64
note: the following packages were not found on your system, try again after installing them:
  -> vulkansdk 1.3.243

Expected Behavior
I want to know how to make sure to find vulkansdk in xmake.
Project Configuration
No response
Additional Information and Error Logs
No response

you can debug here. https://github.com/xmake-io/xmake/blob/643719b7e52a0a2bf458853d2b0381e416bdf433/xmake/modules/detect/sdks/find_vulkansdk.lua#L45
https://github.com/xmake-io/xmake-repo/blob/2f6b80ca04b15a0e4b9be35ed3be5740da50ad05/packages/v/vulkansdk/xmake.lua#L22

Currently vulkansdk do not support find by version; please use add_requires("vulkansdk", {system = true}) and change environment variable VK_SDK_PATH to select right version

Currently vulkansdk do not support find by version; please use add_requires("vulkansdk", {system = true}) and change environment variable VK_SDK_PATH to select right version

This has nothing to do with xmake, I had some problems when installing vulkansdk, now it is solved. Sorry to bother you.


All Tanstack documentations are dead, including the router.

Which project does this relate to?
Router
Describe the bug

Your Example Website or App
https://google.com
Steps to Reproduce the Bug or Issue
go to https://tanstack.com/router/latest
click get started
get navigated to https://tanstack.com/router/latest/docs/framework/react/overview
error

go to https://tanstack.com/virtual/latest
dead

Expected behavior
read docs and leave
Screenshots or Videos
No response
Platform
Latest version of macOS and Safari.
Additional context
i can still read an archived copy https://web.archive.org/web/20241129155650/https://tanstack.com/router/latest/docs/framework/react/quick-start

You may have gotten caught in a bad cache purge whilst we were playing with the CDN settings. This should be resolved now.

@SeanCassiere yes it all works fine now. just unlucky moment. thank you


Add online notification switch to settings

Automated message from Dropbox CLA bot
@kunall17, it looks like you've already signed the Dropbox CLA. Thanks!

Done 👍

Cool. Looks done.


Purity RB

Summary
#188
Details and comments

@dcmckayibm - could you please review the circuits for purity RB? (I also added an example notebook)

@dcmckayibm - could you please review the circuits for purity RB? (I also added an example notebook)

Looks good

@dcmckayibm - could you please review the code?
After you approve the code for the purity rb fitter, I will add a test for this fitter.

The code is ready for review. It also contains tests and tutorial notebook.

I updated the test_rb.py to include an option for seed_offset and align_cliffs (see #189)

@mtreinish - do you know why Azure pipeline is failing?

@ShellyGarion the tests failed on python 3.6: https://dev.azure.com/qiskit-ci/qiskit-ignis/_build/results?buildId=161&view=logs&jobId=19c563d8-3dcd-57d1-cd5e-9dd946b0a29b&taskId=c276ab56-9c7b-560d-e018-453666437518&lineStart=222&lineEnd=223&colStart=1&colEnd=1
with this traceback:
======================================================================
FAIL: test_anglecalCX (test.characterization.test_characterization.TestCals)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\a\1\s\test\characterization\test_characterization.py", line 386, in test_anglecalCX
    self.assertAlmostEqual(fit.angle_err(0), 0.1, 2)
AssertionError: 0.10584389795572832 != 0.1 within 2 places

----------------------------------------------------------------------

The tests did pass on python 3.5 and python 3.7 though.

@mtreinish - the failing test is not relevant for the RB code.
This test belongs to other part of the code and fails sometimes, see issue #127.
What can be done so that the RB code could be merged?

I manually kicked of a rebuild of the azure pipelines jobs, hopefully the non-deterministic failure from #127 won't happen again.

I manually kicked of a rebuild of the azure pipelines jobs, hopefully the non-deterministic failure from #127 won't happen again.

It's odd because that test shouldn't be stochastic. A while ago I fixed the fit guesses and that seemed to make this happen less often, but I guess it will still happen every now and then.

A good test of whether the code works is to look at the same circuits with coherent errors and with incoherent errors. In the first case the purity RB will give 0 error, but the error from standard RB will be non-zero. In the later case the purity and standard RB should give the same answer

One of the lint errors is:
qiskit/ignis/verification/randomized_benchmarking/fitters.py:1:0: C0302: Too many lines in module (1113/1000) (too-many-lines)
How to handle this?

How should we handle the lint error: "Too many lines in module" ?

@dcmckayibm - the code of the purity rb fitter is ready for review. There is also a notebook & test_fitters.
(I still left some prints in comments in case I need to debug - I will remove them later).

@mtreinish - Is it possible to change the linter max number of lines in module?
Currently it fails due to:
qiskit/ignis/verification/randomized_benchmarking/fitters.py:1:0: C0302: Too many lines in module (1139/1000) (too-many-lines)

I disabled "too-many-lines" error in .pylintrc - I hope it's OK with you @dcmckayibm @mtreinish

Any idea why test.characterization is constantly failing?
======================================================================
FAIL: test_ampcal1Q (test.characterization.test_characterization.TestCals)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/build/Qiskit/qiskit-ignis/test/characterization/test_characterization.py", line 314, in test_ampcal1Q
    self.assertAlmostEqual(fit.angle_err(0), 0.1, 2)
AssertionError: 0.09154844442610209 != 0.1 within 2 places
======================================================================
FAIL: test_ampcalCX (test.characterization.test_characterization.TestCals)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/build/Qiskit/qiskit-ignis/test/characterization/test_characterization.py", line 364, in test_ampcalCX
    self.assertAlmostEqual(fit.angle_err(0), 0.15, 2)
AssertionError: 0.011211176344008636 != 0.15 within 2 places

I also have a similar problem with test_fitters. The test works well in my machine (Linux 4.4.0-154-generic x86_64) but fails here. I added atol=0.01 to isclose checks, but there is still AssertionError (I can remove some of the failing tests).