Exceptions in the Qt event handler cause Mapviz to crash

Exceptions that are thrown by plugins in Qt's event handler will cause Mapviz to crash; see #327 for an example (although that issue should still be fixed so it doesn't happen in the first place).  Even if something bad happens, it would be better to log appropriately and keep running.

Hello I am not sure if it is directly related but I think that I am having a crash due to an unhandled event in MapApplication. I am running ROS Kinetic on Ubuntu 16.04
Here is  the backtrace:
(gdb) backtrace
#0  0x00007ffff7646f77 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#1  0x00007fffd8e22610 in QXcbConnection::handleXcbEvent(xcb_generic_event_t*) ()
from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#2  0x00007fffd8e2305d in QXcbConnection::processXcbEvents() () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#3  0x00007fffef590c01 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff75ea05c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5  0x00007ffff75ef516 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6  0x00007ffff7b983af in mapviz::MapvizApplication::notify(QObject*, QEvent*) ()
from /opt/ros/kinetic/lib/librqt_mapviz.so
#7  0x00007fffef56138b in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffef563786 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007fffef5b73c3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007fffeeab8197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fffeeab83f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007fffeeab849c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007fffef5b77cf in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007fffef55eb4a in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007fffef566bec in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00000000004051e4 in main ()
(gdb)


tensorflow docker images with python3.6 as default version

Since many repo using python 3.6 as default version, so recommend using python3.6 as default version for tensorflow docker images.

On this page: https://hub.docker.com/r/tensorflow/tensorflow/ it states:

Images built after May 20 2019 (TF nightly, plus TF versions 1.14 and onward) are based on Ubuntu 18.04. Earlier images are based on Ubuntu 16.04.

Python 3.6 is the default for Ubuntu 18.04, so while the web page doesn't clearly state it. Starting from TF 1.14 the -py3 docker containers will have python 3.6 as the default.
$ docker run --rm tensorflow/tensorflow:1.14.0-py3 python --version
Python 3.6.8

FYI @angersson - if you want to consider updating the doc for that. [The section that says python 3.5 is now wrong.]

Thanks @wdirons! I've updated the page.
@zh794390558, @wdirons is correct -- recently built py3 images (1.14+ and nightly images) include Python 3.6 thanks to Ubuntu 18.


Fix deprecation warning

This pull request fixes the following deprecation warning:
CLI options definitions were upgraded with "type" property (which could be one of "string", "boolean", "multiple"). Below listed plugins do not predefine type for introduced options:
 - ServerlessManifestPlugin for "json", "silent", "output", "disableOutput", "postProcess", "location"

Released with<EMAIL_ADDRESS>


Validation loss in progress bar printed line by line (again)

Bug description
See #330 for details
I also have this issue when using the Running command of Pycharm

TQDM version: 4.64.1
Pytorch Lightning version: 1.9.0
How to reproduce the bug
No response
Error messages and logs
No response
Environment

Current environment
#- Lightning Component (e.g. Trainer, LightningModule, LightningApp, LightningWork, LightningFlow): LightningModule
#- PyTorch Lightning Version (e.g., 1.5.0): 1.9.0
#- Lightning App Version (e.g., 0.5.2):
#- PyTorch Version (e.g., 2.0):
#- Python version (e.g., 3.9): 3.9
#- OS (e.g., Linux): Windows
#- CUDA/cuDNN version: 11.7
#- GPU models and configuration: RTX 3070
#- How you installed Lightning(`conda`, `pip`, source): Conda
#- Running environment of LightningApp (e.g. local, cloud): Local

More info
No response

This is a limitation of tqdm with PyCharm. You can find some suggested options online: https://stackoverflow.com/questions/45012964/stdout-progress-bars-dont-work-in-pycharm

How does the training progress bar work fine with PyCharm then?


Setting IP Address to docker0 interface

Hi,
thanks for fixing #1 so fast.
I got another related one.
When I use the com.docker.network.bridge.host_binding_ipv6 option the ip6tables rules are now created fine. But my IP is not reachable from the outside.
I took a look how this handled in the IPv4 case.
When I use  "com.docker.network.bridge.host_binding_ipv4"="<IP_ADDRESS>" the ip address <IP_ADDRESS> is assigned to the docker0 interface. I guess something equivalent should be done when using the com.docker.network.bridge.host_binding_ipv6 option.
Of course I can add the ip address manually to the docker0 interface. But if I restart docker the IP is gone, I guess it flushes the assigned IPs on start (after service docker stop it's still there).
Do you think this is in the scope of this progress? Or any other idea how to achieve this?

Hi, thanks again, just keep 'em coming!
Since docker0 is the bridge interface for the default bridge network, I assume you've assigned <IP_ADDRESS> using --ip=<IP_ADDRESS> on the Docker daemon. Is that correct?
I've just created a user-defined network like this:
docker network create \
  -o com.docker.network.bridge.host_binding_ipv4=<IP_ADDRESS> \
  -o com.docker.network.bridge.name=br-test \
  test

However, I don't see this IP auto-configured on any interface, not on docker0 and not on br-test.
My guess is that the auto assignment to the docker0 interface is a "bonus feature" of the --ip= flag. If you supply a non-existing IP address there, it will create it for you. Since there is no IPv6 equivalent of this flag, and the binding option is therefor only available on user-defined networks, I don't think there's a good place for docker-ipv6nat to do this. After all, Docker doesn't do it for IPv4 on user-defined networks either.
I believe binding is really meant for IP addresses that are already configured on your system, outside of Docker, in your network configuration. Compare this to other network daemons, like for example sshd. By default it binds on all addresses, but by supplying a ListenAddress in sshd_config you can bind it to a specific (pre-configured) address. sshd will fail to start when this address is not configured (unless net.ipv4.ip_nonlocal_bind=1).
What do you think?

Hi,
you are right, I had the ipv4 address assigned before via the --ip flag before I was switching to the user-defined network. For some reason the IPv6 address gets removed on docker start but the ipv4 stays.
I now just added both, my IPv4 and my IPv6 address for the network to the eth0 interface, so it is independent from docker startup or anything.
Seems to work fine, so nothing to be done here ;)
Just some background on what I'm using ipv6nat for. I have a gitlab installation where I want to send the http(s) traffic through an nginx proxy which handles all the letsencrypt renewal and provisioning stuff. But for git I need the ssh port to be reachable on the same IP address. So the nat solution is the only way I found to achieve that.
So thanks for your solution and your help! Cheers.

Hi, I have a similar solution as far as Let's Encrypt proxy (I created https://github.com/robbertkl/docker-proxy for this). I'm also running a mail server and basically wanted everything to be reachable on IPv6. For mail, it's also important the original source IPv6 address ends up in the mail container, so SPF filters function properly.
Thanks for using docker-ipv6nat and let me know if you run into any other issues.


How to change all the specified values to another value?

Code Sample, a copy-pastable example if possible
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(0, 15).reshape(5, 3),
index=['a', 'b', 'c', 'd', 'e'],
columns=['c1', 'c2', 'c3'])
How to change all the places where c1==0 to c1=5 for example? (In this example only the [a][c1] is changed, but could be multiple places if there are more 0 in the c1 column.)
Thinking of something like df[df.c1==0].c1=5.
(This is similar to fill na with a pecified value)
Expected Output
output of pd.show_versions()

Use df.loc[df.c1==0, "c1"] = 5.

Also, pls use stackoverflow for usage question.


[Proposal] CI for benchmark tests

💥 Proposal

What is your proposal for snarkOS?
Hi, we're working in a Criterion benchmark framework to test performance regressions and improvements in the code of the aleo APIs we're developing. We would like to be able to integrate these tests execution with every merge of a PR.
To do this we need to know which CI system you're using and where its execution it's hosted.
What are the implications of this proposal to snarkOS?
It doesn't have any implications for snarkOS.
Does your proposal affect other aspects of Aleo as well?
It doesn't affect other aspects of Aleo. We'll add an independent functionality.

snarkOS uses CircleCI. not sure where the execution is hosted, perhaps @zosorock does?


db worker and strategic worker crashed unexpectedly

I start the thrift server with this command hbase-start thrift -c -nonblocking
worker config
HBASE_USE_FRAMED_COMPACT = True

dbw.py
ERROR:db-worker.batchgen:Exception in the main loop
Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/__init__.py", line 78, in loop
    is_backoff_needed = self.run()
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 61, in run
    for partition_id in partitions)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 61, in <genexpr>
    for partition_id in partitions)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 73, in _handle_partition
    partitions=[partition_id]):
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 596, in get_next_requests
    max_requests_per_host=self._max_requests_per_host)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 238, in get_next_requests
    for rk, data in scan_gen:
  File "/opt/anaconda3/lib/python3.7/site-packages/happybase/table.py", line 402, in scan
    self.name, scan, {})
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 200, in _req
    self._send(_api, **kwargs)
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 212, in _send
    self._oprot.trans.flush()
  File "thriftpy2/transport/framed/cyframed.pyx", line 107, in thriftpy2.transport.framed.cyframed.TCyFramedTransport.flush
  File "thriftpy2/transport/framed/cyframed.pyx", line 95, in thriftpy2.transport.framed.cyframed.TCyFramedTransport.c_flush
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/transport/socket.py", line 136, in write
    self.sock.sendall(buff)
BrokenPipeError: [Errno 32] Broken pipe

sw.py
[strategy-worker] [Errno 32] Broken pipe
NoneType: None
ERROR:strategy-worker:[Errno 32] Broken pipe
NoneType: None
[strategy-worker]   File "/home/hduser/.local/lib/python3.7/site-packages/twisted/internet/defer.py", line 151, in maybeDeferred
    result = f(*args, **kw)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/strategy.py", line 192, in work
    self.workflow.process()
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/strategy.py", line 47, in process
    self.states_context.fetch()
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/core/manager.py", line 815, in fetch
    self.states.fetch(self._fingerprints)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 356, in fetch
    records = table.rows(keys, columns=[b's:state'])
  File "/opt/anaconda3/lib/python3.7/site-packages/happybase/table.py", line 162, in rows
    self.name, rows, columns, {})
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 200, in _req
    self._send(_api, **kwargs)
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 212, in _send
    self._oprot.trans.flush()
  File "thriftpy2/transport/framed/cyframed.pyx", line 107, in thriftpy2.transport.framed.cyframed.TCyFramedTransport.flush
    self.c_flush()
  File "thriftpy2/transport/framed/cyframed.pyx", line 95, in thriftpy2.transport.framed.cyframed.TCyFramedTransport.c_flush
    self.trans.write(size_str[:4] + data)
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/transport/socket.py", line 136, in write
    self.sock.sendall(buff)

A screen recording : https://www.dropbox.com/s/xd61st39e60buo1/final_5d03df6c62558100144de067_986170.mp4?dl=0
The sw.py is not crashed in the screen recording, but it does sometime.
https://github.com/scrapinghub/frontera/issues/266
my hbase config
<property>
<name>hbase.regionserver.thrift.framed</name>
<value>true</value>
<source>hbase-site.xml</source>
</property>

<property>
<name>hbase.regionserver.thrift.compact</name>
<value>true</value>
<source>hbase-site.xml</source>
</property>

Second problem
This error thriftpy2.thrift.TApplicationException: Missing result will be occur sometime
[db-worker.batchgen] Exception in the main loop
Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/__init__.py", line 78, in loop
    is_backoff_needed = self.run()
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 61, in run
    for partition_id in partitions)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 61, in <genexpr>
    for partition_id in partitions)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 73, in _handle_partition
    partitions=[partition_id]):
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 596, in get_next_requests
    max_requests_per_host=self._max_requests_per_host)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 238, in get_next_requests
    for rk, data in scan_gen:
  File "/opt/anaconda3/lib/python3.7/site-packages/happybase/table.py", line 402, in scan
    self.name, scan, {})
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 203, in _req
    return self._recv(_api)
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 239, in _recv
    raise TApplicationException(TApplicationException.MISSING_RESULT)
thriftpy2.thrift.TApplicationException: Missing result
ERROR:db-worker.batchgen:Exception in the main loop
Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/__init__.py", line 78, in loop
    is_backoff_needed = self.run()
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 61, in run
    for partition_id in partitions)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 61, in <genexpr>
    for partition_id in partitions)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/worker/components/batch_generator.py", line 73, in _handle_partition
    partitions=[partition_id]):
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 596, in get_next_requests
    max_requests_per_host=self._max_requests_per_host)
  File "/opt/anaconda3/lib/python3.7/site-packages/frontera/contrib/backends/hbase/__init__.py", line 238, in get_next_requests
    for rk, data in scan_gen:
  File "/opt/anaconda3/lib/python3.7/site-packages/happybase/table.py", line 402, in scan
    self.name, scan, {})
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 203, in _req
    return self._recv(_api)
  File "/opt/anaconda3/lib/python3.7/site-packages/thriftpy2/thrift.py", line 239, in _recv
    raise TApplicationException(TApplicationException.MISSING_RESULT)
thriftpy2.thrift.TApplicationException: Missing result

There are some problems in Thrift py when used with Python 3.7, I would suggest to rollback to Python 3.6 until there is a solution for this.

@sibiryakov I found a solution for this problem, using the command hbase thrift start -c -nonblocking to start the Thrift server.


added author details and blog post for author : damodardatta (UCSC,OSAVC)

Thank you, @damodardatta -- Please make above changes and then I should be able to merge.

Thanks, Carlos. I have made the change as suggested. Please verify it.


Add metrics reporting to vault client

Add metrics functionality to vault client. Vault will send metrics to Prometheus.
issue #160

@gonzamontiel
YEs. It is ready for review because this pr cover everything related to metrics from parachain.
The next one will be the pr with metrics for stellar network by vault id.

@cr4pt0 what about this PR by the way? I'm pinging you again because it would actually be nice to have metrics for our vault once we launch on our main networks.

@cr4pt0 what about this PR by the way? I'm pinging you again because it would actually be nice to have metrics for our vault once we launch on our main networks.

@ebma
sure. i finished the implementation. but you are right i need to remove warnings.
will do after we finish with chain extension and foucoco upgrade runtime.

Can you please also address the other issues I mention in my last comment? 😬

[...] Also, there are plenty of occurrences of BTC and Bitcoin which should be either renamed or removed. The test module included in metrics.rs also either has to be changed or removed; it is of no use to us the way it is now.

Can you please also address the other issues I mention in my last comment? 😬

[...] Also, there are plenty of occurrences of BTC and Bitcoin which should be either renamed or removed. The test module included in metrics.rs also either has to be changed or removed; it is of no use to us the way it is now.

@ebma
Done

I fixed the remaining problems. This is now ready for merge once CI passes.

Thanks 🙏
Wow. Amazing 🚀


Device selection tweaks

Some styling enhancements for the new UI with device selection.

LGTM code wise.
Do the ellipses hide anything we need to see for the long OmniPod name?? Or are we just doing the file pick on the only file we can pick for OmniPod?

People will only see one file available, yes. And we give an error message if you upload something with a non .ibf extension.
Also, the full filename is visible in a browser-default tooltip when you hover - the browser provides that for free.


bugfix: add timeout for download piece

Signed-off-by: Starnop<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
When dfget download files from other peers, we should set a timeout for that. And the timeout should be calculated by fileLength and the network rate.
Ⅱ. Does this pull request fix one issue?

None
Ⅲ. Why don't you add test cases (unit test/integration test)? (你真的觉得不需要加测试吗？)
Added.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #815 into master will increase coverage by 0.02%.
The diff coverage is 22.22%.

@@            Coverage Diff             @@
##           master     #815      +/-   ##
==========================================
+ Coverage   39.69%   39.71%   +0.02%
==========================================
  Files         109      109
  Lines        6409     6413       +4
==========================================
+ Hits         2544     2547       +3
- Misses       3655     3657       +2
+ Partials      210      209       -1

Impacted Files
Coverage Δ

pkg/netutils/netutils.go
0% <0%> (ø)
:arrow_up:

dfget/core/api/download_api.go
0% <0%> (ø)
:arrow_up:

dfget/core/core.go
55.17% <0%> (+2.54%)
:arrow_up:

...get/core/downloader/p2p_downloader/power_client.go
51.64% <100%> (+0.53%)
:arrow_up:

dfget/core/downloader/downloader.go
100% <100%> (ø)
:arrow_up:

supernode/daemon/mgr/scheduler/manager.go
24.81% <0%> (+0.75%)
:arrow_up:

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 ba585e2...05f0aa0. Read the comment docs.

LGTM


Bump denon

closes https://github.com/foxriver76/ioBroker.denon/issues/78

RE-CHECK!

Automated adapter checker
ioBroker.denon

:thumbsup: No errors found
Add comment "RE-CHECK!" to start check anew


[Pilot] TestFlight Upload issue

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description

This seems to be related to Apple's Transporter API changes.  In the last week or 2 I started getting errors in Pilot.  We have multiple apps and they're getting this error in the Pilot step:
[08:53:34][Step 1/1] [08:53:33]: -------------------
[08:53:34][Step 1/1] [08:53:33]: --- Step: pilot ---
[08:53:34][Step 1/1] [08:53:33]: -------------------
[08:53:34][Step 1/1] [08:53:34]: Login to App Store Connect<EMAIL_ADDRESS>[08:53:36][Step 1/1] [08:53:36]: Login successful
[08:53:37][Step 1/1] [08:53:37]: Ready to upload new build to TestFlight (App: xxxxxxxxx)...
[08:53:38][Step 1/1] [08:53:38]: Going to upload updated app to App Store Connect
[08:53:38][Step 1/1] [08:53:38]: This might take a few minutes. Please don't interrupt the script.
[08:53:44][Step 1/1] [08:53:44]: [Transporter Error Output]: Resolver: Install error - org.bitbucket.b_c.jose4j Exception's name: org.osgi.framework.BundleException, Exception's message: Error occurred installing a bundle.
[08:53:44][Step 1/1]
[08:53:44][Step 1/1] [08:53:44]: [iTMSTransporter] [2019-04-10 08:53:42 MDT]   INFO: Transporter is searching for new software components.
[08:53:44][Step 1/1]
[08:53:44][Step 1/1] [08:53:44]: [iTMSTransporter] [2019-04-10 08:53:43 MDT]   INFO: Update check complete.
[08:53:44][Step 1/1]
[08:53:44][Step 1/1] [08:53:44]: [iTMSTransporter] could not find the service with interface (com.apple.transporter.osgi.TransporterService)
[08:53:44][Step 1/1]
[08:53:44][Step 1/1] [08:53:44]: [iTMSTransporter] [2019-04-10 08:53:44 MDT]  ERROR: Resolver: Install error - org.bitbucket.b_c.jose4j Exception's name: org.osgi.framework.BundleException, Exception's message: Error occurred installing a bundle.
[08:53:44][Step 1/1]
[08:53:44][Step 1/1] [08:53:44]: iTunes Transporter output above ^
[08:53:44][Step 1/1] [08:53:44]: Resolver: Install error - org.bitbucket.b_c.jose4j Exception's name: org.osgi.framework.BundleException, Exception's message: Error occurred installing a bundle.
[08:53:44][Step 1/1] The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.
Command executed

  pilot(username<EMAIL_ADDRESS>      skip_waiting_for_build_processing: true)

Complete output when running fastlane, including the stack trace and command used

 [REPLACE THIS WITH YOUR INFORMATION]

Environment

✅ fastlane environment ✅
Stack

Key
Value

OS
10.14.2

Ruby
2.2.4

Bundler?
false

Git
git version 2.17.2 (Apple Git-113)

Installation Source
~/.fastlane/bin/bundle/bin/fastlane

Host
Mac OS X 10.14.2 (18C54)

Ruby Lib Dir
~/.fastlane/bin/bundle/lib

OpenSSL Version
OpenSSL 1.0.2g  1 Mar 2016

Is contained
true

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
10.1

System Locale

Variable
Value

LANG
en_US.UTF-8
✅

LC_ALL
en_US.UTF-8
✅

LANGUAGE
en_US.UTF-8
✅

fastlane files:
`./fastlane/Fastfile`
# More documentation about how to customize your build
# can be found here:
# https://docs.fastlane.tools
fastlane_version "2.68.0"

#default_platform :ios
app_name = "MyAppName"
ROOT = "/users/buildagent"
BuildTemp = "${ROOT}/SABUILDTEMP"
BuildOutput = "${ROOT}/SAClient_Builds"
APKRootFolder = "#{BuildTemp}/platforms/android/app/build/outputs/apk"

platform :ios do
  lane :debug do |options|
    Dir.chdir ".." do
      sh("cordova prepare ios")
    end

    # build your iOS app
    gym(
      scheme: "MyScheme",
      project: "platforms/ios/#{app_name}.xcodeproj",
      export_method: "development",
      export_options: {
        provisioningProfiles: {
          "com.Company.AppName" => "match Development com.Company.AppName"
        }
      }
    )

    # Copy the IPA to the builds folder
    Dir.chdir ".." do
      if options[:version]
        sh("cp -f MyAppName.ipa #{BuildOutput}/MyAppName-debug-#{options[:version]}.ipa")
      else
        sh("cp -f MyAppName.ipa #{BuildOutput}/MyAppName-debug-#{Time.now.strftime('%F-%H-%M-%S')}.ipa")
      end
    end

    # upload to Testflight
    #pilot(username<EMAIL_ADDRESS>    #    skip_waiting_for_build_processing: true)
  end

  lane :release do |options|
    # build the release variant

    Dir.chdir ".." do
      sh("cordova prepare ios")
    end

    # build your iOS app
    gym(
      scheme: "MyScheme",
      project: "platforms/ios/#{app_name}.xcodeproj",
      export_method: "app-store",
      export_options: {
        provisioningProfiles: {
          "com.Company.MyAppName" => "match AppStore com.Company.MyAppName"
        }
      }
    )

    # Copy the IPA to the builds folder
    Dir.chdir ".." do
      if options[:version]
        sh("cp -f MyAppName.ipa #{BuildOutput}/MyAppName-release-#{options[:version]}.ipa")
      else
        sh("cp -f MyAppName.ipa #{BuildOutput}/MyAppName-release-#{Time.now.strftime('%F-%H-%M-%S')}.ipa")
      end
    end

    if options[:testFlightEnabled]
      # upload to Testflight
      pilot(username<EMAIL_ADDRESS>          skip_waiting_for_build_processing: true)
    end
  end
end

platform :android do
  lane :debug do |options|
    # build the debug variant

    sh("cordova build android --debug")

    # Copy the APK to the builds folder
    Dir.chdir ".." do
      if options[:version]
        sh("cp -f #{APKRootFolder}/debug/app-debug.apk #{BuildOutput}/MyAppName-debug-#{options[:version]}.apk")
      else
        sh("cp -f #{APKRootFolder}/debug/app-debug.apk #{BuildOutput}/MyAppName-debug-#{Time.now.strftime('%F-%H-%M-%S')}.apk")
      end
    end
  end

  lane :release do |options|
    # build the release variant

    sh("cordova build android --release")

    # Copy the APK to the builds folder
    Dir.chdir ".." do
      if options[:version]
        sh("cp -f #{APKRootFolder}/release/app-release.apk #{BuildOutput}/MyAppName-release-#{options[:version]}.apk")
      else
        sh("cp -f #{APKRootFolder}/release/app-release.apk #{BuildOutput}/MyAppName-release-#{Time.now.strftime('%F-%H-%M-%S')}.apk")
      end
    end
  end
end

`./fastlane/Appfile`
# The Appfile can be used to specify information that's used across all fastlane
# tools, like your username or the app's bundle identifier.
  I finally stumbled onto the answer on StackOverflow here.  My build machine has been upgraded across multiple versions of XCode and somehow the .itmstransporter folder wasn't upgrading.


Almost success with your EFI Folder

Hi Baughmann,
Finally, I've managed to install Big Sur 11.1. Everything is working fine. Except for Fenvi T919. It was working. But Suddenly my PC wasn't booting at all (Not even Bios). The PC was shutting down immediately. After almost 2 days, I've found the culprit. It's the wifi card. Once I removed it, everything is fine. I've changed the port but the issue was still there. So I've decided to remove Fenvi card and use only Ethernet.
I just want to know what I need to remove in config.plist to cleanup the section regarding this wifi card. Because I still have the wifi symbol at the top right eventhough the card was removed.
Thanks for your help. And thanks again for EFI Folder
Kind Regards

You're likely still seeing the wifi Icon because of the integrated BT/WiFi on the mobo. WiFi will work OK on the integrated chip, but BT will not. You can disable the integrated chip in the BIOS if you no longer want to use it.
As of Big Sur I'm no longer using any AirportBrcm kexts IIRC, so you should not have to remove anything there.
I would suggest returning your Fenvi and getting another one. Also, if your CPU cooler uses the USB header on the motherboard (most nice ones do), then you will need to get an internal USB hub like I did, otherwise your PC will have issues because the cooler will not function correctly (i.e. the PC will shut down after a little while of running).

Thanks Baughmann for your reply. Actually Wifi and Bluetooth is working fine with itwlm and two other kexts. The complete procedure is here : https://www.youtube.com/watch?v=no_XkR_LLNc

Ahh I’ve been keeping an eye on that kext as it develops, seems like an interesting idea.

So we’re all good then? Can I close this?

Yes thanks again for your help. You can close it.


[HOLD for payment 2022-11-16] [$250] Workspace settings - The "Save" button is unavailable offline

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

Action Performed:

Go to URL https://staging.new.expensify.com/
Log in with any account
Go to Settings->Workspaces
Click on any workspace->Workspace settings
Kill the internet connection

Expected Result:
The "Save" button should be available
Actual Result:
"Save" button is unavailable
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/199837705-b67ee0d3-1f07-4adc-a7da-d7ba63da8133.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

Proposal
We need to pass enabledWhenOffline at Form to keep it enabled
https://github.com/Expensify/App/blob/1dd71747ba2b0c8553d84d51d863d8ae4e12ef64/src/pages/workspace/WorkspaceSettingsPage.js#L82

Confirmed in open-source that we should support saving when offline. Marking external

I'm guessing this regression happened here when we refactored this page to use a form? https://github.com/Expensify/App/pull/11615

Yup I think so. We already have a proposal which will fix this. What's the next step here?

It looks like this issue was created after the 7 day regression period, so I believe we should review proposals in this issue, no need to have the author of the regression fix the issue.
However, I think we need an RCA since the regression made it all the way to production?

Job posting on upwork!
https://www.upwork.com/ab/applicants/1589654996264235008/job-details

However, I think we need an RCA since the regression made it all the way to production?

cc: @rushatgabhane (since you reviewed https://github.com/Expensify/App/pull/11615)

Maybe this just needs to be added to TestRail, not sure if this is technically a "regression"

Issue not reproducible during KI retests. (First week)

@Beamanator is this eligible for payment now?

Yessir @mateocole !

Job posting on upwork! https://www.upwork.com/ab/applicants/1589654996264235008/job-details

@mateocole, the link is for the job details.

Following payment steps here
Hey @Puneet-here can you apply directly to the upwork posting so I can document and hire from there

I have applied as well, thanks!
@Puneet-here, this is the correct link https://www.upwork.com/jobs/~01961de86d5adc919f (you can always search the upwork posting through the issue number)

@Puneet-here, this is the correct link https://www.upwork.com/jobs/~01961de86d5adc919f

Thanks.
@mateocole, I have applied to the job.

Bump @mateocole - has everyone been paid? If so, let's close this out!

Another bump @mateocole :D

Okay offers have been sent over, once accepted will pay out!

Accepted, thanks!

Accepted the offer @mateocole
Note: This is eligible for 50% bonus because the PR was merged within 3 days

Okay both payments are complete!

@mateocole, the 50% bonus is also applicable for C+ reviewer

bump @mateocole ^


Page change animated twice

Hi,
When I change the page programmatically, it is animated once. If I swipe to the next page, I get it animated twice, i.e., once with my swipe and again (to the same page) upon release. This ONLY happens if i change the color of the buttons' texts according to the index. If i leave the color as is, it works fine.
Used your demo "OnboardingView" for this.
`struct OnboardingView: View {
@State var index: Int = 0

var body: some View {
    VStack {
        HStack {
            Button(action: {
                self.index = 0
            }) {
                Text("page 1")
                    .foregroundColor(self.index == 0 ? Color.red : Color.black)
            }
            Button(action: {
                self.index = 1
            }) {
                Text("page 2")
                .foregroundColor(self.index == 1 ? Color.red : Color.black)
            }
            Button(action: {
                self.index = 2
            }) {
                Text("page 3")
                .foregroundColor(self.index == 2 ? Color.red : Color.black)
            }
            Button(action: {
                self.index = 3
            }) {
                Text("page 4")
                .foregroundColor(self.index == 3 ? Color.red : Color.black)
            }
        }
        Pages(currentPage: $index, wrap: false) {
            WelcomePage(background: "avenue",
                        title: "Ready. Set. Apple.",
                        subtitle: "Insert witty remark about your app that will catch potential users.")
            WelcomePage(background: "elephant",
                        title: "Wow. An elephant.",
                        subtitle: "Did you know these magnificent mammals spend between 12 to 18 hours eating grass, plants and fruit every single day?")
            WelcomePage(background: "nature",
                        title: "Nature.",
                        subtitle: "I'm running out of subtitles.")
            WelcomePage(background: "landscape",
                        title: "Ah yes, Scotland.",
                        subtitle: "They may take our lives, but they'll never take our freedom!")
        }.padding()

    }
}

}`
Same issue with wrap: true.
Printout (e.g., Current page is 1, going to 0) is done once, when the page is changed twice.
Afraid that I have no idea how to fix this...

Setting animated to false in line 72 in PageController.swift fixes it. But then the animation is gone when clicking and the view just appears...

Had the

Setting animated to false in line 72 in PageController.swift fixes it. But then the animation is gone when clicking and the view just appears...

Thanks for sharing! I am experiencing the same thing. It only fixes it for scroll gestures, but when changing the index of the page programmatically, it does not animate.

PageViewController.swift line 115 causes this on pageCurl. commenting it out fixes it, but breaks update on the control dots. If you aren't using those and want a page curl, just cloning a copy and commenting that out will do it. If I find a better fix, I will post that.

Seeing this as well but @swofml4 suggestion works for me since not using the controls

I see this when binding currentPage to a published ObservableObject property, but not when I use @State.

The reason for the bug is because of this block that instantiates a UIHostingController every time the views are refreshed and state changes. Passing brand new UIHostingControllers to UIPageViewController on every update causes the unpredictable behavior. The solution is to ensure that UIHostingControllers are reused per view, which is challenging because there's no good way to identify a view without requiring more from the consumer (i.e. forcing child pages to implement Identifiable).
The least invasive way to fix the problem:

add caching to Pages component@State private var controllers: [UIHostingController<AnyView>]

Instantiate the cache on init  self._controllers = State(initialValue: self.pages.map { UIHostingController(rootView: $0.eraseToAnyView()) })

Use the cache in this block  controllers: pages.enumerated().map { i, page in
      let h = controllers[i]
      h.rootView = page.eraseToAnyView()
      return h
  }

This solution has a limitation that you cannot add/remove/reorder Pages dynamically, because the number of cached HostingControllers would get out of sync and potentially cause out of range exceptions.
I'll try to issue a PR that adds more dynamic controller caching (and in the right place), but for now this should unblock the majority of scenarios.

Hey @sjmueller thanks for the catch, I was going crazy with this bug.
I still think that adding/removing/reordering are important features to have, so I'm going to keep it as it is for now.
If you find out how to make it work please do issue a PR!

The issue now occurs in iOS 14, even when I bind to a state with initial value 0 😓

I just found out that TabView can be made to behave like a page control in iOS 14. It's well described here: https://stackoverflow.com/questions/58388071/how-can-i-implement-pageview-in-swiftui/63159912
You basically just have to set .tabViewStyle(PageTabViewStyle(indexDisplayMode: indexDisplayMode)) on the TabView, which is strange since the result isn't semantically a tab view.
However, the end result is very nice and stable, so you may want to consider using it as an internal implementation detail for iOS 14. It lets you get rid of all UIKit wrapping, which also makes it run on other platforms as well.
This is the code I use in a personal library (https://github.com/danielsaidi/SwiftUIKit). Just let me know if you would like me to provide it to you as a PR:
@available(iOS 14.0, *)
public struct MultiPageView: View {

    public init<PageType: View>(
        pages: [PageType],
        indexDisplayMode: PageTabViewStyle.IndexDisplayMode = .automatic,
        currentPageIndex: Binding<Int>) {
        self.pages = pages.map { $0.any() }
        self.indexDisplayMode = indexDisplayMode
        self.currentPageIndex = currentPageIndex
    }

    public init<Model, ViewType: View>(
        items: [Model],
        indexDisplayMode: PageTabViewStyle.IndexDisplayMode = .automatic,
        currentPageIndex: Binding<Int>,
        pageBuilder: (Model) -> ViewType) {
        self.pages = items.map { pageBuilder($0).any() }
        self.indexDisplayMode = indexDisplayMode
        self.currentPageIndex = currentPageIndex
    }

    private let pages: [AnyView]
    private let indexDisplayMode: PageTabViewStyle.IndexDisplayMode
    private var currentPageIndex: Binding<Int>

    public var body: some View {
        TabView(selection: currentPageIndex) {
            ForEach(Array(pages.enumerated()), id: \.offset) {
                $0.element.tag($0.offset)
            }
        }
        .tabViewStyle(PageTabViewStyle(indexDisplayMode: indexDisplayMode))
    }
}

Does anyone found a solution for this bug yet?

Everything works fine after I modified class PagesCoordinator like below:
func pageViewController(
    _ pageViewController: UIPageViewController,
    viewControllerAfter viewController: UIViewController
) -> UIViewController? {
    guard let index = parent.controllers.firstIndex(of: viewController) else {
        return nil
    }
    return index == parent.controllers.count - 1 ? (self.parent.wrap ? parent.controllers.first : nil) : parent.controllers[index + 1]
}
/*
func pageViewController(
    _ pageViewController: UIPageViewController,
    didFinishAnimating finished: Bool,
    previousViewControllers: [UIViewController],
    transitionCompleted completed: Bool
) {
    if completed,
    let visibleViewController = pageViewController.viewControllers?.first,
    let index = parent.controllers.firstIndex(of: visibleViewController) {
        // Here is the issue
        parent.currentPage = index
    }
}*/

If I won't use didFinishAnimating in PagesCoordinator, Everything works fine except flip page by changing currentPage.
func pageViewController(
    _ pageViewController: UIPageViewController,
    viewControllerAfter viewController: UIViewController
) -> UIViewController? {
    guard let index = parent.controllers.firstIndex(of: viewController) else {
        return nil
    }
    return index == parent.controllers.count - 1 ? (self.parent.wrap ? parent.controllers.first : nil) : parent.controllers[index + 1]
}

/*
func pageViewController(
    _ pageViewController: UIPageViewController,
    didFinishAnimating finished: Bool,
    previousViewControllers: [UIViewController],
    transitionCompleted completed: Bool
) {
    if completed,
    let visibleViewController = pageViewController.viewControllers?.first,
    let index = parent.controllers.firstIndex(of: visibleViewController) {
        parent.currentPage = index
    }
}
*/

If won't change current page in PagesCoordinator didFinishAnimating, everything works fine
func pageViewController(
    _ pageViewController: UIPageViewController,
    viewControllerAfter viewController: UIViewController
) -> UIViewController? {
    guard let index = parent.controllers.firstIndex(of: viewController) else {
        return nil
    }
    return index == parent.controllers.count - 1 ? (self.parent.wrap ? parent.controllers.first : nil) : parent.controllers[index + 1]
}
func pageViewController(
    _ pageViewController: UIPageViewController,
    didFinishAnimating finished: Bool,
    previousViewControllers: [UIViewController],
    transitionCompleted completed: Bool
) {
    if completed,
    let visibleViewController = pageViewController.viewControllers?.first,
    let index = parent.controllers.firstIndex(of: visibleViewController) {
        print("current page:\(index)")
        /*parent.currentPage = index*/
    }
}

f won't change current page in PagesCoordinator didFinishAnimating everything works fine except flip page by changing currentPage in my project view.
func pageViewController(
    _ pageViewController: UIPageViewController,
    viewControllerAfter viewController: UIViewController
) -> UIViewController? {
    guard let index = parent.controllers.firstIndex(of: viewController) else {
        return nil
    }
    return index == parent.controllers.count - 1 ? (self.parent.wrap ? parent.controllers.first : nil) : parent.controllers[index + 1]
}

func pageViewController(
    _ pageViewController: UIPageViewController,
    didFinishAnimating finished: Bool,
    previousViewControllers: [UIViewController],
    transitionCompleted completed: Bool
) {
    if completed,
    let visibleViewController = pageViewController.viewControllers?.first,
    let index = parent.controllers.firstIndex(of: visibleViewController) {
        print("current page:\(index)")
        /* parent.currentPage = index */
    }
}

#20 This pull request should fix it


Form Schemas should be stored in the database

Describe the task
Right now, form schemas are hard-coded in app/data/jsonSchemaForm
They should be instead versioned and stored in the database, in a similar way to CIIP.
The reason is that we don't want to break old forms rendering after schema updates, and keep the flexibility of evolving our data schema. This will become important every year when the program wants to revise their intake forms depending on program requirements.
AC:
As GGIRCS developer
When I display a form for a form_change
Then I want to retrieve which schema to use
And which version of that schema
Developer checklist:

[ ] create a cif.form_schema table with (id:int, table_name: varchar(1000), json_schema: jsonb) table, and seed it with the contents of app/data/jsonSchemaForm
[ ] alter the cif.form_change table, change json_schema_name to json_schema_form_id FK pointing at our new table with the forms
[ ] backend: refactor the formChangeValidationPlugin to retrieve the schema used to validate the record from the cif.form_schema table
[ ] frontend: each form component will need to retrieve the json_schema from that table. It should be automatically exposed via formChange { formSchemaByJsonSchemaFormId { jsonSchema }}

@matthieu-foucault I'm wondering how to version the form schemas in the best way possible. Do we want to use a slug like we do in CIIP? Or is it worth implementing a more complete versioning system?
Maybe that could be a question for the business area @LindsayMacfarlane : How often are the forms expected to change? And if so, what kind of changes can we expect?

Sprint planning (July 8, 2022): lower priority currently; however, should be looked at prior to Jan 2023.

duplicate of #1004


Why do we render a div instead of React Fragment?

Because React.Fragment requires react 16.2+, and we support 0.14+.


Q&A: How to adjust log level? (and turn off DEBUG logs)

Describe the documentation issue
By default, I get tons of log messages like this, that I don't find useful / wish I could easily turn off.
DEBUG Core add-on kube-proxy is at version auto
I'm new to TypeScript and didn't see an easy way to disable the logging. After about a day of digging through the source code, following a trail of bread crumbs, reading upstream docs, and trial and error I learned a solution. I decided to document it in this issue ticket in case it helps anyone else out in the future.
https://tslog.js.org/#/?id=changing-settings-at-runtime
https://tslog.js.org/#/?id=default-log-level
^-- based on this
I eventually learned, I can put the following in my cdk-main.ts
import { userLog } from '@aws-quickstart/eks-blueprints/dist/utils';
userLog.settings.minLevel = 3; //3 = info, 2 = debug & info
//^-- for more info see https://tslog.js.org/#/?id=default-log-level

Links
This isn't documented anywhere on the docs, but maybe it should be, it could maybe go here?
https://aws-quickstart.github.io/cdk-eks-blueprints/core-concepts/

Note:
upstream as in (import * as eks from 'aws-cdk-lib/aws-eks';)
Which cdk-eks-blueprints depends on uses it's own different log/warning methodology.
So the above userLog based solution only applies to eks-blueprints specific warning/debug messages.
Here's an example of how to disable other Warning messages that can come from upstream:
https://github.com/aws/aws-cdk/blob/v2.158.0/packages/aws-cdk-lib/aws-eks/lib/cluster.ts#L2171
^-- per this, upstream uses
Annotations.of(this).addWarningV2('@aws-cdk/aws-eks:clusterMustManuallyTagSubnet', 'Could not auto-tag ${type} subnet${subnetID} with "${tag}=1", please remember to do this manually');
I took care of such tags in IaC, and was annoyed by the false positive warnings, so I wanted to disable them.
Here's an example of how to disable it:
cdk.Annotations.of(this.stack).acknowledgeWarning('@aws-cdk/aws-eks:clusterMustManuallyTagSubnet');
^-- Note in my custom implementation:
I have a stack that looks up a pre-existing VPC
I then I build eks-blueprint clusters from a construct, that references the pre-existing VPC
My eks-blueprint construct is then stored in this.stack, so my example won't work perfectly for most.
Based on this
export class EksBlueprint extends cdk.Stack
since EksBlueprint is a cdk.Stack, it'd probably look more like this for other people.
cdk.Annotations.of(my_object_instance_of_type_EksBlueprint).acknowledgeWarning('@aws-cdk/aws-eks:clusterMustManuallyTagSubnet');


#check (rfl : powmod 2 1 1 = 1) exhausts 8GB RAM

Prerequisites

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

Checked that your issue isn't already filed.

Specifically, check out the wishlist, open RFCs,
or feature requests.

Reduced the issue to a self-contained, reproducible test case.

Description
I took two attempts at implementing the standard algorithm for x^n mod m in Lean, neither of which sufficed for executing #check (rfl : powmod 2 1 1 = 1) in 8GB of RAM.
Steps to Reproduce
import init.data.nat.bitwise.

section powmod
  variables (m : nat)
  definition powmod (x:ℕ) : ℕ → ℕ :=
    nat.binary_rec 1 (λ b _ r,
      let rr := r*r % m in
      if b = tt
      then rr*x % m
      else rr)
end powmod

#reduce powmod 2 0 0
#check (rfl : powmod 2 0 0 = 1)
#reduce powmod 2 0 1.
#check (rfl : powmod 2 0 1 = 0)
#reduce powmod 2 1 1   ---------------------------- OOM
#check (rfl : powmod 2 1 1 = 1)
#reduce powmod 17 2 4
#reduce powmod (2^7-1) 2 (2^7-1-2)
#reduce powmod (2^31-1) 2 (2^31-1-2)
#reduce powmod (2^127-1) 2 (2^127-1-2)
#check (rfl : powmod (2^127-1) 2 (2^127-1-2) * 2 mod (2^127-1) = 1)

Expected behavior: the file is processed with no errors
Actual behavior: The third #reduce runs out of memory in roughly two minutes.
Reproduces how often: always
Versions

Lean Lean (version 3.2.1, commit b50597228b42, Release)  (from Aug 6)
Linux 4.12.4-1-ARCH

Additional Information
Using eval instead of reduce generates correct answers (but as far as I understand, there is no way to prove a lemma using eval).
Alternative attempt in lean, same issue: https://gist.github.com/andres-erbsen/b31b9ea61c833e6fa66bbe1f07624bda
Similar attempt in Coq, completes in four seconds: https://gist.github.com/andres-erbsen/8660a0dbcea22fb5fb4434d63ef4951a

I will let others comment on the performance problem with the #reduce. As for proving theorems, definitions by well-founded recursion come with equation lemmas which can be selectively applied to prove (propositionally) the value of an expression. Here is a proof of the given value:
section powmod
  variables (m x : nat)
  def powmod : ℕ → ℕ :=
    nat.binary_rec (1 % m) (λ b _ r,
      let rr := r*r % m in
      cond b (rr*x % m) rr)

  theorem powmod_zero : powmod m x 0 = 1 % m := rfl

  theorem powmod_bit (b n) : powmod m x (nat.bit b n) =
    let rr := (powmod m x n * powmod m x n) % m in
    cond b (rr*x % m) rr :=
  begin
    simp [powmod]; rw nat.binary_rec_eq; simp,
    cases m with m, refl,
    cases m with m, refl,
    simp [nat.mod_eq_of_lt (dec_trivial : 1 < nat.succ (nat.succ m))]
  end
end powmod

example : powmod 2 1 1 = 1 :=
show powmod 2 1 (nat.bit tt 0) = 1, by rw powmod_bit; refl

Reduction of large nats in the kernel has horrible performance, so there is no hope of evaluating 2^127-1 let alone powmod (2^127-1) 2 (2^127-1-2) by #reduce. Instead tactics like norm_num are used to produce short proofs showing equality to the expected evaluation result.
It should not be difficult to prove that powmod m x n = x^n % m, and this latter expression is easier to reason with, if you want to prove theorems about it.

Thank you for the tutorial. I take that norm_num is the supported way for dealing with large numbers. It seems to do the trick on examples that are large enough for unary arithmetic to be useless (but still much smaller than the powmod I tried). If I wanted to teach norm_num about powmod to carry out a less unfair large-scale benchmark, how would I go about it? It seems that it does not evaluate normal pow right now either:
open tactic

meta def eval_num_tac : tactic unit :=
do t ← target,
   (lhs, rhs) ← match_eq t,
   trace lhs,
   trace rhs,
   (new_lhs, pr1) ← norm_num lhs,
   trace new_lhs,
   (new_rhs, pr2) ← norm_num rhs,
   trace new_rhs,
   is_def_eq new_lhs new_rhs,
   `[exact eq.trans %%pr1 (eq.symm %%pr2)]

example : 10 - 5 * 5 + (7 - 3) * 6 = 27 - 3 := by eval_num_tac
example :<PHONE_NUMBER>99 =<PHONE_NUMBER>99 := by eval_num_tac
example :<PHONE_NUMBER>999999998+1 =<PHONE_NUMBER>999999999 := by eval_num_tac
example :<PHONE_NUMBER>99999999999999999999999999999999999998+1 = 3*3*3*7*11*13*17*37*73*101*137*9901*5882353*99990001*9999999900000001 := by eval_num_tac
example : 2^127-1 =<PHONE_NUMBER>60469231731687303715884105727 := by eval_num_tac
-- 19:67: failed to evaluate arithmetic expression
-- state:
-- ⊢ 2^127 - 1 =<PHONE_NUMBER>60469231731687303715884105727

The Lean kernel is not currently designed for efficient computing. There may be other options for fast, trusted definitional equality checking in the future. Until then, you need to use rewriting, as @digama0 showed. Sometimes just writing a more efficient algorithm suffices though. The following is nearly instantaneous on my machine:
def modular_power_core (m b : ℕ) : Π (e c : ℕ), ℕ
| 0     c     := c
| (e+1) c     := modular_power_core e ((c * b) % m)

def modular_power (m b e : ℕ) : ℕ := modular_power_core m b e 1

#reduce modular_power 2 0 0
#check (rfl : modular_power 2 0 0 = 1)
#reduce modular_power 2 0 1
#check (rfl : modular_power 2 0 1 = 0)
#reduce modular_power 2 1 1
#check (rfl : modular_power 2 1 1 = 1)

@dselsam The difference between your implementation and Andres' is that the exponent e is treated in unary by your implementation but in binary by Andres'. His implementation is the most efficient you can reasonably write if your goal is fast #eval. If your goal is fast #reduce (for small inputs), your version is probably the best within the constraints of nat. If you really really need fast #reduce / rfl for larger inputs, you will have to go the Coq route and use num instead (which is a binary representation of natural numbers found in mathlib).
It is unfortunate that the goals of fast VM evaluation vs fast kernel reduction pull in opposite directions, but this is a side effect of the emphasis on tactic evaluation over definitional reduction in modern Lean. binary_rec is a great option for writing functions on nat that inspect the underlying binary representation in the hardware, but it's going against the grain from the kernel's point of view, which only sees the unary representation.

Let's assume I do not need reduce or rfl, but would still want to directly prove equations about large numbers, for example the last check in the first code snippet I posted (I know there is a number-theoretic proof for that one that would not require manipulating large numbers, I'm using it just as an easy-to-check). It seems that the thing to do in lean would be to prove equations about _ ^ _ % _  that when used for rewriting specify the same system as executed in the Coq N version during reduction.
So the question I have left is how the performance of rewrite in this style would compare to reduction in the Coq kernel (Coq's kernel is pretty fast, but OTOH Lean tactics have been faster than Coq kernel for implementing non-verified procedures). This is not trivial to measure, because in small examples additive-constant overhead dominates, and if I just wrote down a huge multiplication, I'm worried that I would be benchmarking the parser and memory allocator more than the arithmetic implementation. This is why I chose modular exponentiation: it can require measurable amounts of time while using a "small" amount of memory (a couple hundred digits). For this to be possible, norm_num (or something similar) would need to support raw % and ^ first. I don't know from the top of my head how to implement %, so even though I would be willing to code it in principle, some reading would be required first.
Are there currently any benchmarks for computation-by-rewriting in Lean, and regardless, would there be interest in the one I am proposing here?

@digama0 Yes, "more efficient" was clearly the wrong choice of words.

It seems that the thing to do in lean would be to prove equations about _ ^ _ % _ that when used for rewriting specify the same system as executed in the Coq N version during reduction.

You could also use binary natural numbers everywhere, like you do in Coq.

So the question I have left is how the performance of rewrite in this style would compare to reduction in the Coq kernel

There are two issues: (a) how fast it takes for the simplifier to do the computation (building up a proof certificate in the process), and (b) how long it takes the kernel to check the proof certificate. I do not know off-hand how Coq would check such a reflexivity proof by default: if you prove a goal by compute , will the kernel just re-run the computation during QED or would it resort to lazy unfolding?
In general, if the simplification lemmas are mimicking the definitional reduction rules used in Coq, I would expect the simplifier to be noticeably slower since there is extra work being done. Each time a head-symbol is encountered, all rules for the head-symbol will be tried in order, and each time, the unifier needs to check if the head-symbols match. Also, constructing the proof object itself takes some time and space as well.
Anecdotally, I have found that checking the proof certificates in the Lean kernel is relatively fast and not a bottleneck.

I'm closing this issue. As pointed out by @dselsam, the Lean kernel is not designed for efficient computing.
We use the simplifier and tactics for normalizing numeric expressions.
For example, norm_num  : expr → tactic (expr × expr) normalizes m a numerical expression, returns a pair (n, pr) where n is the resultant numeral, and pr is a proof that the input argument is equal to n.
In our experiments, the kernel can check pr very efficiently.
Moreover, the reference type checkers can also check these proofs without any fancy reduction engine.

@leodemoura Andres makes a good point regarding non-extensibility of norm_num. Is there a way to make norm_num evaluate other kinds of numeric functions, given the appropriate set of rewriting lemmas?

@digama0 The plan is to integrate norm_num with the simplifier. It will happen as part of the algebraic normalizer we have been talking about.


Create Play Button UI

Reference current state of RecordButton for animations
Will likely slightly change animations down the line


Fix styling of the tables

See eg https://dev.pandas.io/pandas-sphinx-theme/reference/io.html
We might need to remove some old custom styling (from nature), and ensure that bootstrap's tables are used. But those might again require some styling to fit for autosummary tables etc

So the normal tables are fine (and now look good as bootstrap tables after https://github.com/pandas-dev/pandas-sphinx-theme/pull/21), but the autosummary generated tables have some problems:

(https://dev.pandas.io/docs/reference/frame.html)
The problem is in autosummary defining a colgroup in the generated html:
<table class="longtable table">
  <colgroup>
    <col style="width: 10%">
    <col style="width: 90%">
  </colgroup>
  <tbody>
...

and for some reason all existing sphinx themes I looked at handle this fine (basically ignore it?), but bootstrap wants to follow it (although it also expands somewhat when needed, because sometimes it is more than 10%, see picture above).

random issue here: https://dev.pandas.io/docs/user_guide/reshaping.html
pivoting with single aggregations (table not rendering in the note)

@jreback that's broken in the old docs as well (https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html#pivoting-with-single-aggregations), so probably rather an issue with the rst formatting. Will open an issue on the pandas side.

From https://github.com/pandas-dev/pandas-sphinx-theme/pull/27: we might want to have "striped" tables as a default. Either we add some css to apply that to all tables, or we can ensure in the rst to add the table-striped class.

This is an old issue, the current table display looks like this:

Do you still think that having them striped is necessary?

In my opinion, we can close this one and re-open a new one if somebody else reports a problem, since the style has changed a decent amount


i18n: Update extension's description for the Chrome Web Store

hehehe sneak approval

It must have happened at the same time as I clicked merge :smiley:


Caching Enhancement

Look at using dogpile.cache instead of redis directly so that users can chose the best caching solution for governor and auth for their needs, whether redis, memcache, or something else

Looking at dogpile.cache and it presently lacks an equivalent to the redis pexpire functionality. Expiration seems to happen when data is retrieved, where redis support expiring the data inside of redis. Expiring it inside the cache is much preferred to so that the cache stays small without helper functionality periodically cycling through all values in the cache to expire it.


-(void)didSelectAnnotationView:(HAClusterAnnotation *)annotationView

not work

You explain more detail what is the problem!
You set delegate? self.mapView.mapDelegate = self;
And
This function works? REview your code please!


Pinpoint analytics example

Hi, I currently have in my app the very basic example defined here, but how can I track for example if a user clicks buttom X? Where can I see some examples?

Hi @afern247,
You can create a BasicAnalyticsEvents with the name and properties you need, then call Amplify.Analytics.record(event:) when the button is tapped.
Here's an example of a login button tap event.
func recordLoginButtonTappedEvent() {
    let loginButtonEventProperties: AnalyticsProperties = [:] // ⬅ add any necessary properties
    let loginButtonTappedEvent = BasicAnalyticsEvent(
        name: "loginButtonTapped",
        properties: loginButtonEventProperties
    )
    Amplify.Analytics.record(event: loginButtonTappedEvent)
}

@objc func loginButtonTapped() {
  recordLoginButtonTappedEvent()
  login(user) // unrelated to recording event
}

Let me know if you have any other questions. Thanks!

Why are you mentioning there @objc? Is there anything in Objective-C there? If so, if I don't specify it would it crash? @atierian

Handling button taps or other tap gestures is commonly done by adding a target selector that's exposed to @objc.
The code snippet just tries to demonstrate a real world example of handling an event when a button is tapped. It has nothing to do with handling the event and you can completely disregard it.
Let me know if anything is unclear or if you have any other questions.

I triggered that event 5 times and it still doesn't show up, let me show you a couple of pictures so you can see where I am in the process.
Currently not seeing the custom event loginButtonTapped

Also why it's not recording any signins or signups? What do I have to do? This is sooooooooo weird and overly complicated...

Also why does it show that I haven't enabled any features yet if I have clearly analytics working

@atierian

The tapped working example works, I just saw it on the dashboard, it just has lag to show up. Can you help me with the questions above @atierian

Can you share the code that you're using to record sign in and signup events?

Right now as far as analytics I'm not specifically using any because I think it's only for custom stuff correct? So only by configuring Amplify the analytics is showing active on the consele, this is how I'm configuring it:
let dataStore = AWSDataStorePlugin(modelRegistration: AmplifyModels())
let syncWithCloud = AWSAPIPlugin()
let userAuth = AWSCognitoAuthPlugin()

try Amplify.add(plugin: userAuth)
try Amplify.add(plugin: dataStore)
try Amplify.add(plugin: syncWithCloud)
try Amplify.add(plugin: AWSPinpointAnalyticsPlugin())

Amplify.Logging.logLevel = .error

try Amplify.configure()

print("✅ Amplify Configured")

After that, for example user sign up this it the code I'm using (using email/pw to signup):
let result = try await networkController.signUp(
    username: email,
    email:email, password: password
)

// Signup
final func signUp(username: String, email: String, password: String) async throws -> (message: String, didItSucceed: Bool) {
    return try await withUnsafeThrowingContinuation { (continuation: UnsafeContinuation<(message: String, didItSucceed: Bool), Error>) -> Void in
        print("➡ About to sign up user")

        let userAttributes = [AuthUserAttribute(.email, value: email)]
        let options = AuthSignUpRequest.Options(userAttributes: userAttributes)

        _ = Amplify.Auth.signUp(
            username: username,
            password: password,
            options: options
        ) { result in
            switch result {
                case .success(let signUpResult):
                    print("✅ Signup confirmed. Next-> needs email verification from \(email)")

                    switch signUpResult.nextStep {
                        case .done:
                            print("✅ Finished sign up!")
                            continuation.resume(returning: ("", true))
                        case .confirmUser(_, _):
                            continuation.resume(returning: (String.localizedStringWithFormat(NSLocalizedString("Check your Email 📧", comment: "After successful sign up")), true))
                    }
                case .failure(let error):
                    // Do something
            }
        }
    }
}

After the user confirms email they can sign in wit the func below.
(btw when the user tries to sign sometimes it crashes, do you see anything here that could cause the crash? I know this is out of scope but if you see it please let me know, it's crashing on @main, so very hard to debug, it happens randomly)
// Login user
final func login(username: String, password: String) async throws -> (message: String, didItSucceed: Bool) {
    return try await withUnsafeThrowingContinuation { (continuation: UnsafeContinuation<(message: String, didItSucceed: Bool), Error>) -> Void in
        Amplify.Auth.signIn(
            username: username,
            password: password
        ) { result in
            switch result {
            case .success(let authSignInResult):
                var messageToTheUser = "Something went wrong 🤔"
                var didItSucceed = false

                switch authSignInResult.nextStep {
                case .done:
                    messageToTheUser = "Logged In"
                    didItSucceed = true

                    DispatchQueue.main.async {
                        self.isUserLoggedIn = true
                    }

                    // some other cases here...

                continuation.resume(returning: (messageToTheUser, didItSucceed) )
            case .failure(let error):
                // Do something

                continuation.resume(returning: (errorMessageToTheUser, false))
            }
        }
    }
}

//  Gets the session for a signed-in user and the user authentication information
func getSessionAndUserInfo() async throws -> (userInfo: AuthUser?, isUserSignedIn: Bool) {
    // Gets the current session for a user
    let isUserSignedIn =  try await withUnsafeThrowingContinuation { (continuation: UnsafeContinuation<(Bool), Error>) -> Void in
        Amplify.Auth.fetchAuthSession { (result) in
            do {
                let session = try result.get()
                continuation.resume(returning: session.isSignedIn)
            } catch {
                print("🛑 Fetch auth session failed with error - \(error)")
                continuation.resume(returning: false)
            }
        }
    }

    let user = try await getUser()

    return (user, isUserSignedIn)
}

That's code I use to login/signup.
As far as analytics, what's wrong there, should I pass anything on those parameters?
Thanks @atierian

Hi @afern247, based on your last comment and your code it seems you are not manually recording Authentication events, but rather you'd like them to be automatically recorded after calling the Auth methods.
If that is the case, while that is indeed supported by the underlying AWSPinpoint client that Amplify uses, there's a couple of extra steps you need to follow:
1. Setting up Amazon Pinpoint analytics with Amazon Cognito user pools.

Sign in to the Amazon Cognito console.
Click on Manage User Pools, and choose the user pool you want to use.
Click on Analytics under General settings.
Click on Add analytics and campaigns.
Choose an Amazon Cognito app client from the list.
Choose the Amazon Pinpoint project from the list that you wish to map with the selected Amazon Cognito app client.
Click Save changes.

2.  Update your amplifyconfiguration.json file.
You need to specify the PinpointAppId key under CognitoUserPool.
"CognitoUserPool": {
    "Default": {
        "PoolId": "<poolid>",
        "AppClientId": "<appclientid>",
        "Region": "<region>",
        "PinpointAppId": "<pinpointappid>"
   }
}

You should already have that value as AppId under PinpointAnalytics, so you can grab it from there:
"PinpointAnalytics": {
    "Default": {
        "AppId": "<pinpointappid>",
        "Region": "<region>"
    }
}

Alternatively, you can manually record the appropriate events that are used on the Sign-ins, Sign-ups and Authentication failures graphs:

_userauth.sign_in
_userauth.sign_up
_userauth.auth_fail

You can then just create an event using one of those names and record it:
let event = BasicAnalyticsEvent(name: "_userauth.sign_in")
Amplify.Analytics.record(event: event)

Let me know if this works or if you have any other question.

Closing this due to inactivity.

@ruisebas sorry for the delayed respose, lots of things happening. First, thank you very much for the detailed response. I followed everything and looks good, I have two questions:

If I add to the amplifyconfiguration.json that pinpointappid, and I do amplify push it says there are no changes to push, however, if I do after that amplify pull, the change regarding the pinpointappid gets overridden (deleted). How can I make sure this change gets persisted?
Where can I find all the possible arguments for Analytics such as _userauth.sign_in?

Thank you

Hi @afern247!

The behaviour you described is expected right now, since you are manually modifying the  amplifyconfiguration.json file, so Amplify CLI doesn't know about it. This unfortunately does mean that your local file will be overwritten every time you do amplify pull as well, so you will need to manually re-add the PinpointAppId  key.
Keep in mind that this functionality is not officially supported by Amplify, but rather the underlying AWS Mobile SDK instead.

Here you can see a list of known event types for app events:

_userauth.sign_in: The endpoint logged in to your app.
_userauth.sign_up: A new endpoint completed the registration process in your app.
_userauth.auth_fail: The endpoint attempted to sign in to your app, but wasn't able to complete the process.
_monetization.purchase: The endpoint made a purchase in your app.
_session.start: The endpoint began a new session.
_session.stop: The endpoint ended a session.
_session.pause: The endpoint paused a session. Paused sessions can be resumed so that you can continue to collect metrics without starting an entirely new session.
_session.resume: The endpoint resumed a session.

When you configure the Amplify Analytics plugin, the session events are automatically submitted based on your app activity. So be careful if you intend to manually record more of them as it might result in incorrect data in your graphs.


Create an issue and pull request templates for this repository

We should use templates to be able to customize and standardize the information the contributors include when they open issues and pull requests.

we will borrow the templates from reduced-to ;)

Done!


Fix log specification

Add a space between the punctuation mark and the placeholder in the log

Codecov Report

Merging #452 (7d0f621) into main (92e9f03) will increase coverage by 0.04%.
The diff coverage is 10.00%.

@@            Coverage Diff             @@
##             main     #452      +/-   ##
==========================================
+ Coverage   36.28%   36.33%   +0.04%
==========================================
  Files          85       85
  Lines        6724     6724
==========================================
+ Hits         2440     2443       +3
+ Misses       3933     3930       -3
  Partials      351      351

Flag
Coverage Δ

e2etests
?

unittests
36.33% <10.00%> (+0.04%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.


[Coverity] fix Coverity issue

Fix coverity issue (MISSING RESTORE)

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #517. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://ci.nnstreamer.ai/.

:octocat: cibot: @songgot, A builder checker could not be completed because one of the checkers is not completed. In order to find out a reason, please go to http://ci.nnstreamer.ai/nnstreamer-api/ci/repo-workers/pr-checker/517-202405071620590.61713004112244-f8c3e229a697bf99247065f1fa47e2175a09519d/.


image.debugGetOpenHandleStackTraces()?.length is 0 when ImageInfo is disposed

Steps to Reproduce
I don't know as the full stacktrace isn't printed

Logs
'package:flutter/src/painting/image_stream.dart': Failed assertion: line 122 pos 12: '(image.debugGetOpenHandleStackTraces()?.length ?? 1) > 0': is not true.

#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      ImageInfo.dispose (package:flutter/src/painting/image_stream.dart:122:12)
#3      ImageStreamCompleter._maybeDispose (package:flutter/src/painting/image_stream.dart:576:20)
#4      ImageStreamCompleterHandle.dispose (package:flutter/src/painting/image_stream.dart:447:17)
#5      _CachedImageBase.dispose.<anonymous closure> (package:flutter/src/painting/image_cache.dart:627:15)
#6      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#7      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1090:9)
#8      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:998:5)
#9      _rootRun (dart:async/zone.dart:1354:13)
#10     _CustomZone.run (dart:async/zone.dart:1258:19)
#11     _CustomZone.runGuarded (dart:async/zone.dart:1162:7)
#12     _invoke (dart:ui/hooks.dart:163:10)
#13     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:259:5)
#14     _drawFrame (dart:ui/hooks.dart:126:31)

#0      new Image._.<anonymous closure> (dart:ui/painting.dart:1647:32)
#1      new Image._ (dart:ui/painting.dart:1649:6)
#2      Codec.getNextFrame.<anonymous closure> (dart:ui/painting.dart:1994:24)

➜  diven_app git:(dev) ✗ flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.1 20C69 darwin-x64, locale es-ES)
    • Flutter version 2.2.3 at /Users/mabe/development/flutter
    • Framework revision f4abaa0735 (7 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/mabe/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5, Build version 12E262
    • CocoaPods version 1.10.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.59.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.25.0

[✓] Connected device (2 available)
    • iPhone 12 Pro Max (mobile) • 49AB9A7D-2410-4F53-9244-D179CA89E36D • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 92.0.4515.159

• No issues found!

I get this error thrown several times across the app when switching pages. I also get this error sometimes:
log] Bad state: Cannot clone a disposed image.
      The clone() method of a previously-disposed Image was called. Once an Image object has been disposed, it can no longer be used to create handles, as the underlying data may have been released.
[log] #0      Image.clone (dart:ui/painting.dart:1807:7)
#1      ImageInfo.clone
package:flutter/…/painting/image_stream.dart:51
#2      ImageStreamCompleter.addListener
package:flutter/…/painting/image_stream.dart:504
#3      ImageStream.addListener
package:flutter/…/painting/image_stream.dart:367
#4      _ImageState._listenToStream
package:flutter/…/widgets/image.dart:1255
#5      _ImageState.didChangeDependencies
package:flutter/…/widgets/image.dart:1123
#6      StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4743
#7      Element.rebuild
package:flutter/…/widgets/framework.dart:4267
#8      StatefulElement.update
package:flutter/…/widgets/framework.dart:4778
#9      Element.updateChild
package:flutter/…/widgets/framework.dart:3350
#10     ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4599
#11     StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4746
#12     Element.rebuild
package:flutter/…/widgets/framework.dart:4267
#13     StatefulElement.update
package:flutter/…/widgets/framework.dart:4778
#14     Element.updateChild
package:flutter/…/widgets/framework.dart:3350
#15     RenderObjectElement.updateChildren
package:flutter/…/widgets/framework.dart:5596
#16     MultiChildRenderObjectElement.update
package:flutter/…/widgets/framework.dart:6243
#17     Element.updateChild
package:flutter/…/widgets/framework.dart:3350
#18     ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4599
#19     StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4746
#20     Element.rebuild
package:flutter/…/widgets/framework.dart:4267
#21     StatefulElement.update
package:flutter/…/widgets/framework.dart:4778
#22     Element.updateChild
package:flutter/…/widgets/framework.dart:3350
#23     ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4599
#24     StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4746
#25     Element.rebuild
package:flutter/…/widgets/framework.dart:4267
#26     BuildOwner.buildScope
package:flutter/…/widgets/framework.dart:2582
#27     WidgetsBinding.drawFrame
package:flutter/…/widgets/binding.dart:875
#28     RendererBinding._handlePersistentFrameCallback
package:flutter/…/rendering/binding.dart:328
#29     SchedulerBinding._invokeFrameCallback
package:flutter/…/scheduler/binding.dart:1144
#30     SchedulerBinding.handleDrawFrame
package:flutter/…/scheduler/binding.dart:1082
#31     SchedulerBinding._handleDrawFrame
package:flutter/…/scheduler/binding.dart:998
#32     _rootRun (dart:async/zone.dart:1354:13)
#33     _CustomZone.run (dart:async/zone.dart:1258:19)
#34     _CustomZone.runGuarded (dart:async/zone.dart:1162:7)
#35     _invoke (dart:ui/hooks.dart:163:10)
#36     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:259:5)
#37     _drawFrame (dart:ui/hooks.dart:126:31)

I use Image.network extensively across the app.

@raulmabe
Is there a way for you to replicate it locally ? or play around with the release version of the app and see where exactly it fails ?

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Pagination#lastPage is always 0 / Pagination#isLast is always true

Describe the bug
Pagination#lastPage is always 0 / Pagination#isLast is always true
To Reproduce
Just create a pagination menu
Expected behavior
not be 0 / true
Code (Optional)
https://pastebin.com/QDLtsKf6
Screenshots
https://prnt.sc/LDszW5iJb-YR

That makes sense, you can't give a presentation if you haven't studied the subject.
It is the same with RyseInventory. Your isLast call doesn't make much sense, because you only put something into the pagination via #addItem afterwards.
Try to put the items into the pagination first and then call isLast. If the problem still exists, report it once.

My fault it's working, thanks for the help!


Additional call to UpdateTypes in Bootstrap. Fixes #1942

As per request.

Possible Stack Overflow issue that may also be resolved in V1.3
http://stackoverflow.com/questions/30471563/simpleauthencation-throwing-failed-to-reflect-on-the-current-domains-assemblie

@awec Hi, for our v2 drop (the current master) I think I am going to drop this call. In all aspects it a bandaid on what could be a broken leg. Part of v2 is that we will be replacing the AppDomainAssemblyTypeScanner (which is a static class, that loads stuff in a static constructor) and replace them with #2217 so we will be having instance based scanner instead, which are created inside the bootstrapper. I'm currently working on the PR to remove ADATS from the bootstrapper and it should go in during the day
Thanks


Information on ADAL is outdated

the information on ADAL seems out of date. According to this link: https://github.com/AzureAD/azure-activedirectory-library-for-dotnet ADAL v2 is no longer supported at all, and ADAL generally has been superseded by MSAL

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

ID: 62419bb8-985c-cb11-ac8d-2d018868c2a6
Version Independent ID: db669ed7-d87b-c359-f5fb-3f2f1052281d
Content: Use OAuth with Common Data Service (Common Data Service) - Power Apps
Content Source: powerapps-docs/developer/common-data-service/authenticate-oauth.md
Service: powerapps
GitHub Login: @paulliew
Microsoft Alias: jdaly

@timrobinson33  The documentation has been updated to use the latest ADAL and MSAL authentication libraries.


python39Packages.eventlet: activate tests, add SuperSandro2000 as maintainer

Motivation for this change
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 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

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 137280 at 7def23db run on aarch64-linux 1

2 packages failed to build:

home-assistant
zk-shell

20 packages built successfully:

appdaemon
gdbgui
onionshare
onionshare-gui
python38Packages.aioambient
python38Packages.cassandra-driver
python38Packages.eventlet
python38Packages.flask-socketio
python38Packages.kazoo
python38Packages.python-engineio
python38Packages.python-socketio
python38Packages.zake
python39Packages.aioambient
python39Packages.cassandra-driver
python39Packages.eventlet
python39Packages.flask-socketio
python39Packages.kazoo
python39Packages.python-engineio
python39Packages.python-socketio
python39Packages.zake

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement. Does something look off? Please file an issue or reach out on IRC.

This is a semi-automatic executed nixpkgs-review with nixpkgs-review-checks extension. It is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
Result of nixpkgs-review pr 137280 run on x86_64-linux 1

2 packages marked as broken and skipped:

python38Packages.zake
python39Packages.zake

1 package failed to build and are new build failure:

zk-shell: log was empty

19 packages built:

appdaemon
gdbgui
home-assistant
onionshare
onionshare-gui
python38Packages.aioambient
python38Packages.cassandra-driver
python38Packages.eventlet
python38Packages.flask-socketio
python38Packages.kazoo
python38Packages.python-engineio
python38Packages.python-socketio
python39Packages.aioambient
python39Packages.cassandra-driver
python39Packages.eventlet
python39Packages.flask-socketio
python39Packages.kazoo
python39Packages.python-engineio
python39Packages.python-socketio


Implement skipped tests in OrganizationControllerTests

@tonysurma please label with jump-in

I'm working on this one.


Each child in an array or iterator should have a unique "key" prop.

If you want to render an array of elements you need to assign each a key to assist in the reconciliation process: https://reactjs.org/docs/lists-and-keys.html#keys

This issue appears to inactive


Build instructions won't work for me

The build instructions say to use go get, which AFAICS clones the latest version of all dependencies. However, that does not neccesarily work (for example, the latest version of the ttn package does not work, I believe this is the cause of #77).
I originally started this issue suggesting to use some kind of vendoring approach. However, while writing it I found out that govendor is already installed by make dev-deps and used by make deps. However, the go get -u github.com/TheThingsNetwork/packet_forwarder suggested by the build instructions already fetches dependencies, and then returns failure because packet_forwarder cannot be compiled against them. To fix that, you should probably use git clone instead of go get to fetch packet_forwarder.
If you do that, a secondary problem is that, AFAICS, govendor is not installed into PATH by default, making make deps fail. This could either be fixed in the build instructions, or perhaps be fixed in the makefile by prepending $GOPATH/bin to PATH.
Combining the above suggestions, this is what I used to successfully build, on a system with no prior go environment set up.
export GOPATH=$(pwd)
export PATH=$GOPATH/bin:$PATH
git clone https://github.com/TheThingsNetwork/packet_forwarder src/github.com/TheThingsNetwork/packet_forwarder
cd src/github.com/TheThingsNetwork/packet_forwarder/
make dev-deps
make deps
make build

Having this problem too:
$ go get -u github.com/TheThingsNetwork/packet_forwarder
package github.com/TheThingsNetwork/ttn/api/gateway: cannot find package "github.com/TheThingsNetwork/ttn/api/gateway" in any of:
	/usr/lib/go-1.8/src/github.com/TheThingsNetwork/ttn/api/gateway (from $GOROOT)
	/home/vagrant/go/src/github.com/TheThingsNetwork/ttn/api/gateway (from $GOPATH)
package github.com/TheThingsNetwork/ttn/api/discovery: cannot find package "github.com/TheThingsNetwork/ttn/api/discovery" in any of:
	/usr/lib/go-1.8/src/github.com/TheThingsNetwork/ttn/api/discovery (from $GOROOT)
	/home/vagrant/go/src/github.com/TheThingsNetwork/ttn/api/discovery (from $GOPATH)
package github.com/TheThingsNetwork/ttn/api/fields: cannot find package "github.com/TheThingsNetwork/ttn/api/fields" in any of:
	/usr/lib/go-1.8/src/github.com/TheThingsNetwork/ttn/api/fields (from $GOROOT)
	/home/vagrant/go/src/github.com/TheThingsNetwork/ttn/api/fields (from $GOPATH)
package github.com/TheThingsNetwork/ttn/api/protocol: cannot find package "github.com/TheThingsNetwork/ttn/api/protocol" in any of:
	/usr/lib/go-1.8/src/github.com/TheThingsNetwork/ttn/api/protocol (from $GOROOT)
	/home/vagrant/go/src/github.com/TheThingsNetwork/ttn/api/protocol (from $GOPATH)
package github.com/TheThingsNetwork/ttn/api/protocol/lorawan: cannot find package "github.com/TheThingsNetwork/ttn/api/protocol/lorawan" in any of:
	/usr/lib/go-1.8/src/github.com/TheThingsNetwork/ttn/api/protocol/lorawan (from $GOROOT)
	/home/vagrant/go/src/github.com/TheThingsNetwork/ttn/api/protocol/lorawan (from $GOPATH)
package github.com/TheThingsNetwork/ttn/api/router: cannot find package "github.com/TheThingsNetwork/ttn/api/router" in any of:
	/usr/lib/go-1.8/src/github.com/TheThingsNetwork/ttn/api/router (from $GOROOT)
	/home/vagrant/go/src/github.com/TheThingsNetwork/ttn/api/router (from $GOPATH)


[FEAT] Spatial interfaces support

Should consider a new methods to control panes over spatial space angle moving and new gestures.

Collab with arwes for playground + mentions

F7 / uiinitiative collab + twitter + forums

Few instances (for control elements on front)

https://resend.com/ buttons highlights

https://codepen.io/jh3y/pen/PovoorJ

https://linear.app/ ,
integration scene with F7/Ionic + traffic on forums
https://codepen.io/Saramazal/pen/LYyywNb


Flask-Sock and use in GCP AppEngine ?

Hello,
I am trying to run flask-sock over a GCP AppEngine instance.
When running the script over it I am having multiple issue:
 Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
    at HTMLDocument.<anonymous>

In the HTML header I have:
        <script>const socket = new WebSocket('wss://' + 'specificdomain.ey.r.appspot.com:8080' + '/customdimfrom0');</script>
I am running the script over a appspot.com subdomain (generated by google)
And no error from the console to help find out the current problem.
I am sure it's the way on how the websocket connect to the appengine instance and I am clueless on how to fix this so far. (been trying
Any tips or similar issue when running the library over appengine instance ?
Is there additional configuration on the appengine to accept incoming websocket? or maybe need to update the current url to initiate a websocket to the backend.
Thanks !

What WSGI server are you using? The only servers that are supported are the ones listed in the documentaion.

Hello Miguel,
I am using gunicorn.
Here is the docker file used:
# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.9-slim

# Allow statements and log messages to immediately appear in the Knative logs
ENV PYTHONUNBUFFERED True

# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

# Install production dependencies.
RUN pip install --no-cache-dir -r requirements.txt

# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
# Timeout is set to 0 to disable the timeouts of the workers to allow Cloud Run to handle instance scaling.
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

Been following this guide from google, and finally trying to run it on Cloud Run instead of Appengine, I have read that AppEngine is not compatible with Websockets (or need to add a flexible instance plus additional modification)
But still having same issue with cloud run and below configuration.
Tony

I cannot give you advice on Google Cloud specifically. What I recommend is that you test your Dockerfile locally to make sure that you can connect. If that works, then you have to troubleshoot the connection between Google Cloud and your container. If the local container test does not work, then please include the log output here.

Following your advice I manage to make it work on docker locally first with issue then working on how to fix it locally and got the final setup right !!!!
Here is the final setup and it work perfectly on Cloud Run (and probably elsewhere as well).
html:
<script>const socket = new WebSocket('ws://' + 'localhost:8080' + '/customdimfrom0');</script>
end of main.py:
if __name__ == '__main__':
    import os
    app.run(debug=True, threaded=True, host='<IP_ADDRESS>',
            port=int(os.environ.get('PORT', 8080)))

dockerfile:
# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.9-slim

# Allow statements and log messages to immediately appear in the Knative logs
ENV PYTHONUNBUFFERED True

# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

# Install production dependencies.
RUN pip install --no-cache-dir -r requirements.txt

# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
# Timeout is set to 0 to disable the timeouts of the workers to allow Cloud Run to handle instance scaling.
CMD exec gunicorn --bind :8080 --workers 1 --threads 100 --timeout 0 main:app#

Thanks you Miguel !

Glad to hear you figured it out. Thanks for posting the working solution for other to benefit from!

Miguel finally I was wrong...
When running the docker locally the socket connect to it locally and make it work.
But still troublesome when I am online and getting this error now:
WebSocket connection to 'ws://localhost:8080/customdimfrom0' failed:
 WebSocket is already in CLOSING or CLOSED state.

Quick Update, not an issue with GCP but with my javascript code...
Here is the javascript added:
            socket.onopen = function () {
              console.log("socket is open")
              const queryString = window.location.search;

Issue I was not waiting for the socket to be open resulting to error.
We can close the ticket :)


fix: forward timeout in .each()

timeout was previously not honored in cases like below:
test.each([1,2,3])('case %s', (number) => {}, 10_000)

@ChALkeR can you release this? 🙏

and maybe also include https://github.com/ExodusMovement/test/pull/12 if it looks good?

also mind configuring automatic head branch deletion on PR merge?


On retrial of full createGithub/creategitlab the "bars ui" is not re-created.

Overview
As after full installs we don't have more createGithub and createGitlab executed.
The setup of the "progress bars ui" is not called all the time.
Example:
https://github.com/kubefirst/kubefirst/blob/main/cmd/createGithub.go#L40
These create a scenario that operations like informUser to fail as the "UI" singleton was not instantiated yet.
https://github.com/kubefirst/kubefirst/blob/faq_docs/cmd/create.go#L77

PR created to make "Progress Bars" to be instantiated on the "ancestral command"  instead to be instantiated on every command the uses the bar.
This is meant to just simplify the use of bars on more commands, in particular "informUser". As due some switches such as: https://github.com/kubefirst/kubefirst/blob/faq_docs/cmd/create.go#L44
May prevent some initialization to happen in some edge scenarios.


Feature request: Use Hackvertor tabs

For every request you extract from the API specification you create a request example. You use placeholders like:
key={string}&discount={integer->int32}
Which is fine to understand the request. However, that's not optimal when you want to send it to the repeater. Would it be possible that you add next to the "request" tab another tab called "hackvertor"? There you could then show a request which has:
key=<@random(10)>abcdefghijklmnopqrstuvwxyz<@/random>&discount=<@random_num(4)/>
Because if you  have the Hackvertor extension installed from BApp, you can then send this request to the Repeater and everytime you send it, a different alphanumeric or numeric value is sent (have a look at the Logger tab).
Would that be possible?

@floyd-fuh that's a great idea, if anyone want to work on this feature that would be great. Otherwise, will have to take a look when I will be able to.


[gatsby]: Investigate and implement how to improve Gatsby build time.

Summary
When building the guidance site for QA or deployment, build can take around 25+ mins to complete. The can make guidance site updates laborious when it involves created a pr from feature > develop > main.
💬 Description
This ticket is to investigate how the build time can be reduced. Gatsby provide a page with details on different aspects of the code to look at:

https://www.gatsbyjs.com/docs/how-to/performance/improving-build-performance/

Just a general search produces additional suggestions.
NOTE: the following flags have already been tried without much success:
https://www.gatsbyjs.com/docs/how-to/performance/improving-build-performance/#look-at-current-experimental-flags
💰 Use value
Reducing the build time will improve the sustainability of the guidance site as well as improve the release experience for the developer.

some things to resolve spotted in the logs, when pages are pre-rendered:
ic-tab - "messageText": "TypeError: Cannot read property 'setAttribute' of undefined
ic-select/ic-menu - "messageText": "TypeError: this.options.some is not a function\n    at Menu.componentWillLoad

Update as of 9/6/23:
Work has been done on the 660-review-select-searchbar-tests branch, which has changes to the gatsby-node.js file to reduce load time of createPages step by reducing the query sizes.
Investigation still needs to be done as the longest task by far is onPostBuild, since it is unclear what is happening during this step.