job.status() occasionally gets stuck

Describe the bug
job.status() occasionally gets stuck. It doesn't always happen, but I've seen it twice today. Here's the relevant qiskit-ibm-runtime log:
runtime_job._stream_results:DEBUG:2022-05-10 13:56:53,963: Start result streaming for job c9taepfoqool4ftobu60
session._log_request_info:DEBUG:2022-05-10 13:56:53,963: Endpoint: https://runtime-us-east.quantum-computing.ibm.com/jobs/c9taepfoqool4ftobu60. Method: GET.
runtime.job_get:DEBUG:2022-05-10 13:56:54,042: Runtime job get response: {'id': 'c9taepfoqool4ftobu60', 'hub': 'ibm-q-internal', 'group': 'dev-sys-software', 'project': 'internal-test', 'backend': 'ibmq_dublin', 'state': {'status': 'Queued'}, 'params': {'custom_circuits': None, 'use_job_builder': True, 'bad_run_jobs': 0, 'num_large_jobs': 0, 'num_slow_jobs': 0, 'num_snail_jobs': 0, 'bad_compile_jobs': 0, 'run_options': None, 'num_fast_jobs': 1}, 'program': {'id': 'aot-test-l6kVeEwMN3'}, 'created': '2022-05-10T17:56:53.689785Z', 'runtime': 'qiskit-program:62a0ae0', 'status': 'Queued'}
base.on_open:DEBUG:2022-05-10 13:56:54,235: Websocket connection established for job c9taepfoqool4ftobu60
session._log_request_info:DEBUG:2022-05-10 14:01:54,091: Endpoint: https://runtime-us-east.quantum-computing.ibm.com/jobs/c9taepfoqool4ftobu60. Method: GET.
base.on_close:DEBUG:2022-05-10 14:01:56,057: Websocket connection for job c9taepfoqool4ftobu60 closed. status code=1000, message=
base.stream:DEBUG:2022-05-10 14:01:56,057: Websocket run_forever finished.
base.disconnect:DEBUG:2022-05-10 14:01:56,057: Client closing websocket connection with code None.

As you can see, the first GET that happens at 13:56:53,963 returns with a response. The second GET at 14:01:54,091, however, appears to be stuck. I'm not sure if the fact that the job is terminating (2s after the GET) is a contributing factor. More interestingly, the job.status() call never timed out even after an hour, which makes me think it's an issue in qiskit-ibm-runtime and not the server code.
Steps to reproduce
My program submits a job then does something like
    for _ in range(total_iteration):
        try:
            # Spit out messages periodically
            logger.info(f"Waiting for job {get_job_id(job)} to finish. "
                        f"Current status is {job.status()}")
            return job.result(log_message_time)
        # TODO: Use JobTimeoutError until qiskit-ibm-runtime 316 is fixed
        except TimeoutError:
            pass

This code gets stuck at job.status() 2/4 times.
Expected behavior
Suggested solutions
Additional Information

qiskit-ibm-runtime version: 0.4.0
Python version:
Operating system:

Thanks for identifying this, will prioritize this for this quarter.

FWIW, this happened again today. I interrupted the process and the traceback is
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/qiskit_ibm_runtime/runtime_job.py", line 210, in status
    self._set_status_and_error_message()
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/qiskit_ibm_runtime/runtime_job.py", line 298, in _set_status_and_error_message
    response = self._api_client.job_get(job_id=self.job_id)
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/qiskit_ibm_runtime/api/clients/runtime.py", line 201, in job_get
    response = self._api.program_job(job_id).get()
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/qiskit_ibm_runtime/api/rest/program_job.py", line 50, in get
    return self.session.get(self.get_url("self")).json()
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/qiskit_ibm_runtime/api/session.py", line 264, in request
    response = super().request(method, final_url, headers=headers, **kwargs)
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/Users/jessieyu/.pyenv/versions/aot-test/lib/python3.8/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "/Users/jessieyu/.pyenv/versions/3.8.1/lib/python3.8/http/client.py", line 1322, in getresponse
    response.begin()
  File "/Users/jessieyu/.pyenv/versions/3.8.1/lib/python3.8/http/client.py", line 303, in begin
    version, status, reason = self._read_status()
  File "/Users/jessieyu/.pyenv/versions/3.8.1/lib/python3.8/http/client.py", line 264, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/Users/jessieyu/.pyenv/versions/3.8.1/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
  File "/Users/jessieyu/.pyenv/versions/3.8.1/lib/python3.8/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/Users/jessieyu/.pyenv/versions/3.8.1/lib/python3.8/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
KeyboardInterrupt

Job id is ca1rjqc4bbdf8kpcdobg

bump - still seeing this

I tried several times with below code and set job.result timeout as low as 0.1 secs. But couldn't reproduce it.
from qiskit import QuantumCircuit
from concurrent.futures import TimeoutError
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(channel="ibm_quantum")

# Create a circuit.
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

# Set the "sampler" program inputs
inputs = {
    'circuits': qc,
    'circuit_indices': [0]
}

backend = service.least_busy(min_num_qubits=2, simulator=False)

# Configure backend options
options = {'backend_name': backend.name}

# Execute the circuit using the "sampler" program.
job = service.run(program_id="sampler",
                  options=options,
                  inputs=inputs,
                 )
for _ in range(1000):
    try:
        # Spit out messages periodically
        print(f"Waiting for job {job.job_id} to finish. "
              f"Current status is {job.status()}")
        print(job.result(0.1))
        break
    # TODO: Use JobTimeoutError until qiskit-ibm-runtime 316 is fixed
    except TimeoutError:
        pass

Output
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.QUEUED
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.RUNNING
Waiting for job ca64rogkgt9h5mun5d90 to finish. Current status is JobStatus.DONE
{'quasi_dists': [{'00': 0.19825, '01': 0.23425, '10': 0.259, '11': 0.3085}], 'metadata': [{'header_metadata': {}, 'shots': 4000}]}

@renier Using @jyu00's logs above could we check what happened to this call, from server logs?
session._log_request_info:DEBUG:2022-05-10 14:01:54,091: Endpoint: https://runtime-us-east.quantum-computing.ibm.com/jobs/c9taepfoqool4ftobu60. Method: GET.

@jyu00 What is the timeout you use for job.result? Could you paste your program if you can reproduce it consistently?

My timeout is set at 300s. My test randomly generates 5-10 jobs, each in terms generate 5-10 small, medium, and large jobs each. Then it uses the code listed early to poll for status.
Small jobs use circuit:
    qubits = 5
    circuit = QuantumVolume(qubits, seed=42)
    circuit.measure_all()
    return transpile(circuit, backend)

Medium jobs use the same circuit but with max shots.
Large circuit:
    qubits = backend.configuration().num_qubits
    qx = random_circuit(num_qubits=qubits, depth=10, measure=True, seed=random.randint(0, 1000))

    qx = transpile(qx, backend)
    return [qx]*min(backend.configuration().max_experiments, 10)

@rathishcholarajan Found the log on the server side. But it looks normal:
May 10 13:01:54 api-6568cb84cf-zhsxv api info {"level":"info","correlation-id":"c9tah4j9rr0udeit6880","method":"GET","path":"/jobs/c9taepfoqool4ftobu60","remote_addr":"<IP_ADDRESS>","latency_ms":5,"status_code":200,"user_agent":"python-requests/2.26.0","user_id":"xxxxxxxx","country":"US","Service-CRN":"","action":"job.read","time":"2022-05-10T18:01:54Z"}

I uncommented the code that checks for status to see if this has been fixed, and it hit the same issue again:
base.stream:DEBUG:2022-08-08 17:01:23,141: Starting new websocket connection: wss://runtime-us-east.quantum-computing.ibm.com/stream/jobs/cbonj8gn3g5bfom3o2rg using proxy {}
session._log_request_info:DEBUG:2022-08-08 17:01:23,142: Endpoint: https://runtime-us-east.quantum-computing.ibm.com/jobs/cbonj8gn3g5bfom3o2rg. Method: GET.
runtime.job_get:DEBUG:2022-08-08 17:01:23,231: Runtime job get response: {'id': 'cbonj8gn3g5bfom3o2rg', 'hub': 'ibm-q-internal', 'group': 'dev-sys-software', 'project': 'internal-test', 'backend': 'ibmq_manila', 'state': {'status': 'Queued'}, 'params': {'num_large_jobs': 0, 'num_snail_jobs': 0, 'custom_circuits': None, 'run_options': None, 'num_fast_jobs': 1, 'num_slow_jobs': 0, 'bad_run_jobs': 0, 'use_job_builder': True, 'bad_compile_jobs': 0}, 'program': {'id': 'aot-test-q350Lml98R'}, 'created': '2022-08-08T21:01:22.969092Z', 'runtime': 'qiskit-program:ba8febd', 'cost': 300, 'status': 'Queued'}
TestAoTJobs.get_job_result:INFO:2022-08-08 17:01:23,232: Waiting for job cbonj8gn3g5bfom3o2rg to finish. Current status is JobStatus.QUEUED
base.on_open:DEBUG:2022-08-08 17:01:23,337: Websocket connection established for job cbonj8gn3g5bfom3o2rg
session._log_request_info:DEBUG:2022-08-08 17:06:23,240: Endpoint: https://runtime-us-east.quantum-computing.ibm.com/jobs/cbonj8gn3g5bfom3o2rg. Method: GET.

The first GET at 17:01:23,142 returned immediately but the second one never did (sent at 17:06 and it's now 17:14)

@ChitsimranGill no longer able to reproduce it. Closing.


Typos discovered by codespell

codespell --ignore-words-list="fro,ist,oder"
./dataset.py:122: relavent ==> relevant
./dataset.py:143: hierachy ==> hierarchy
./notebooks/Write_a_sample_transformation.ipynb:1442: tht ==> the, that
./notebooks/Write_a_sample_transformation.ipynb:1718: exisiting ==> existing
./evaluation/evaluate_text_generation.py:84: upto ==> up to
./transformations/change_two_way_ne/README.md:11: implemetation ==> implementation

Thank you very much @cclauss for pointing them out!

Closing the issue, since it's fixed in #118.


If user is not allowed to log work, they should not see any reference to time worked by others

This functionality would make it so we could have clients be able to login and see their tasks, but I don't want them see actual work time spent on tasks.
We could probably use the project permission "Work" to achieve this. Clients would not have permission to work on tasks, and so time worked would be hidden, Or something.
This kinda seems like a bug or oversight in the original code, it shoulda been like this outta the box if you ask me.

I will be getting together with Corey on this when time permits.


Fix RPROMPT_ON_NEWLINE when PROMPT_ON_NEWLINE is set to false

By having the RPROMPT_ON_NEWLINE if-block only inside the PROMPT_ON_NEWLINE == true if-block, RPROMPT_ON_NEWLINE is ignored in the case where (RPROMPT_ON_NEWLINE == false) && (PROMPT_ON_NEWLINE == false) and there is a newline segment in the left prompt. This causes the right prompt to always be drawn in the second line.
This patch fixes the issue #840

I'd like to go ahead and close out this PR, whether the decision is merging it or foregoing it.
The use-case discussed by @notrev and seconded by @Zeta611 does indeed sound interesting, and i could see some people wanting to use the RPROMPT as basically reporting on the previous command that was run.
The only change, here, appears to be moving the conditional block outside of the other conditional. I'm okay with this as long as we expect existing configurations to continue to work with no changes. That is indeed the case, as I understand it - is that accurate, @dritter?

Any ETA on when this gets merged?


Notifications updates

Description

Fixes error notifications for edit source

Set dismissable: true for all notifications (according to https://www.patternfly.org/v4/design-guidelines/usage-and-behavior/alerts-and-notifications#alert)

@Hyperkid123

Codecov Report

Merging #122 into master will not change coverage.
The diff coverage is 0%.

@@          Coverage Diff           @@
##           master    #122   +/-   ##
======================================
  Coverage    74.7%   74.7%
======================================
  Files          36      36
  Lines         431     431
  Branches       61      61
======================================
  Hits          322     322
  Misses         87      87
  Partials       22      22

Impacted Files
Coverage Δ

src/redux/actions/providers.js
68.96% <ø> (ø)
:arrow_up:

src/api/entities.js
43.75% <0%> (ø)
: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 3adf1d2...b4e4d31. Read the comment docs.

@Hyperkid123 translated titles are provided by sourceEditModal now


Fix automatic import resultion

See here for a detailed write up.

I can take this, although, I'll be off since Dec 17 and come back after new year. If no one else will work on this in the meantime I can assign to myself


[two_dimensional_scrollables] Pinned rows and columns do not work correctly in a TableView when reverse is set to true on the respective axis

Summary
Pinned rows and columns do not work correctly in a TableView from the two_dimensional_scrollables when reverse is set to true on the respective axis. The pinned widgets do not show (except for the corner) and incorrect space is inserted where the pinned rows and colums would be if the axis were not reversed.
@Piinks
Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce

Create an app from the sample code
Run it

Expected results

In the given example it should look like with the lines

        verticalDetails: const ScrollableDetails.vertical(reverse: true),
        horizontalDetails: const ScrollableDetails.horizontal(reverse: true),

removed (see second half of video), just rotated 180°.
Actual results

The widgets in the pinned rows and columns do not show except for the one in the corner.
Additional space is added on the opposite side of the pinned rows/columns.

Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:two_dimensional_scrollables/two_dimensional_scrollables.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('TableView Bug'),
      ),
      body: TableView.builder(
        verticalDetails: const ScrollableDetails.vertical(reverse: true),
        horizontalDetails: const ScrollableDetails.horizontal(reverse: true),
        cellBuilder: (context, vicinity) => Container(
          margin: const EdgeInsets.all(4),
          color: Colors.grey,
        ),
        diagonalDragBehavior: DiagonalDragBehavior.free,
        pinnedRowCount: 1,
        pinnedColumnCount: 1,
        columnCount: 100,
        columnBuilder: (int column) =>
            const TableSpan(extent: FixedTableSpanExtent(64)),
        rowCount: 100,
        rowBuilder: (int row) =>
            const TableSpan(extent: FixedTableSpanExtent(64)),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
https://github.com/flutter/flutter/assets/48153628/d1648f26-6fc7-49ad-80e7-69fa096b4d54

Logs
No response
Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.13.5, on Antergos Linux 6.5.3-arch1-1, locale en_DE.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 3.5)
[✓] Android Studio (version 2021.2)
[✓] IntelliJ IDEA Community Edition (version 2022.2)
[✓] IntelliJ IDEA Community Edition (version 2023.1)
[✓] Connected device (3 available)
[✓] Network resources

• No issues found!

Reproducible using the code sample provided above.

flutter doctor -v
[✓] Flutter (Channel stable, 3.13.5, on macOS 13.5.2 22G91 darwin-arm64, locale en-GB)
    • Flutter version 3.13.5 on channel stable at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 12fccda598 (6 days ago), 2023-09-19 13:56:11 -0700
    • Engine revision bd986c5ed2
    • Dart version 3.1.2
    • DevTools version 2.25.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode-15.0.0-Release.Candidate.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.12.1

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

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/nexus/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 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.2)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 75.1.4
    • Dart plugin version 232.9559.10

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

[✓] Connected device (5 available)
    • TA 1021 (mobile)     • PLEGAR1790423460          • android-arm64  • Android 9 (API 28)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.0.1 21A340
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.0 21A329
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 13.5.2 22G91 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 117.0.5938.92

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[!] Flutter (Channel master, 3.15.0-7.0.pre.5, on macOS 13.5.2 22G91 darwin-arm64, locale en-GB)
    • Flutter version 3.15.0-7.0.pre.5 on channel master at /Users/nexus/dev/sdks/flutters
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision be085a9229 (5 hours ago), 2023-09-25 00:37:04 -0400
    • Engine revision 3ea1174ecf
    • Dart version 3.2.0 (build 3.2.0-191.0.dev)
    • DevTools version 2.28.0-dev.12
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode-15.0.0-Release.Candidate.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.12.1

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

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/nexus/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 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.2)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 75.1.4
    • Dart plugin version 232.9559.10

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

[✓] Connected device (5 available)
    • TA 1021 (mobile)     • PLEGAR1790423460          • android-arm64  • Android 9 (API 28)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.0.1 21A340
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.0 21A329
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 13.5.2 22G91 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 117.0.5938.92

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Thanks for reporting! The fix is in https://github.com/flutter/packages/pull/5038

@Piinks
Just tested the 0.0.3 release which contains the https://github.com/flutter/packages/pull/5038 PR. It seems that now the pinned row is invisible if only one of the axes is revesed:
https://github.com/flutter/flutter/assets/48153628/282f8bf3-749f-4020-a77f-b7b7ec43ddcc

@Quijx can you file a new issue with code that reproduces it and cc me?

Sure. I hope I'll get to it tomorrow.


Template Issues

I'm not sure if you changes something in the last 2 days.  But I can't generate any of the 3 templates due to various errors.    I'm pretty sure I didn't do anything to my env to change from them all ok to this.  I can go over the errors, if you wawnt.  But. here, I'd like to make a few general points about the templates.

They are super useful for learning -- once the apps are generated.  Thanks for having and supporting them.
They are really fickle.  They build not reliably
The fact that in order to build the third one, the two previous have to be built makes it even more wonky, without adding any educational value

Consequently,

why not just create git repos for these example apps?  I think it would make it much easier for you to maintain too.  What do you think?

@engineer-plus-plus There weren't any changes recently that could affect the templates. I just double checked and ran them from scratch locally and they are working ok for me, but let me know which errors you encountered if possible.
I do think we can improve the docs a bit to specify having Elasticserch and Redis running for the third template and other details. What you mention is a very good point, we've been having conversations about improving docs and examples, so I'll run this with the team and get back to you on how we go on with this. Thank you very much!


Should Raysect v1 just support polarised light?

Abandoning the unpolarised light code path would simplify the optical package considerably. The cost is a reduction in performance for unpolarised calculations (exact throughput reduction to be measured, but likely to be of the order of 20-25%), though accuracy of reflections etc... would obviously be substantially improved.
This decision would obviously have an impact on cherab.

Thanks for the feedback. I have been heavily leaning to abandoning the unpolarised code. I've run a quick Cornell box test, it is looking to be a ~20% hit, but I think I can claw a lot of that back moving the internals from numpy to python.array.

Decision has been made that v1 will implement only polarised light propagation.


Update mtb and ce

approved, let's make sure we running the manifest checking tool, save off the results incase we get asked for proof. Thank you!


update dt-tester

https://github.com/DefinitelyTyped/definition-tester/pull/12

travis ci will fail but it fixed by #5960


QCupertinoPage has shadows

After a lot of debugging, I found that the QCupertinoPage has some sort of shadow to its boundaries. Is there any option of removing them?

I don't think so, because at the end I am just using CupertinoRouteTransitionMixin which is from flutter

If you see the below image, the DashboardScreen is Loaded from "this.widget.router" and if u see the inspection window, you will find _CupertinoEdgeShadowDecoration in the above tree. I think _CupertinoEdgeShadowDecoration is giving the shadow the dashboard pane.
Shadow Dashboard (Left Side of Dashboard Section)

I think you are working on a mac. and in this case, the QPlatefromPage (The default one if you didn't assign another type) will give QCupertinoPage which has a shadow.
if you assign another pageType the QPlatfromPage will be overridden and the assigned type will be used.
you can change the type for all pages by setting QR.settings.pagesType to the type you want to be used.

Is there a away to use the QCupertino Page and get rid of the shadow ??

No, because this is not configured from the package.


UnboundLocalError: local variable 'move_event_end' referenced before assignment

UnboundLocalError: local variable 'move_event_end' referenced before assignment
Windows 11
pywinauto recorder 0.5.1

Which recorder do you mean? It seems not an official part of the project.

Hi @vasily-v-ryabov,
@batara666 made a mistake, he closed this issue and then reposted in the right place: https://github.com/beuaaa/pywinauto_recorder/issues/37.


Using this mod server side doesn't shut server down properly

When shutting down a server with this mod(using the stop command), the server freezes at "All chunks are saved" and doesn't terminate as it normally does.
Removing only this mod fixed the problem for me.

fixed in latest release.


"Getting code actions" on saving a python file can hang up to 20 seconds.

When I save a file in python, it will show the following pop up:
"Saving ‘my_file.py': Getting code actions from ''Sourcery', 'isort'' (configure).”
This can hang for up to 20 seconds. It did not used to do this. I do not know if it is an issue with VS code, isort, or Sourcery.  Disabling isort did seem to help, but it is hard to tell because it is a little random; it does not hang every time (it does do it often enough to disrupt development).
I suppose an option is to disable running these code actions on save; however, I would prefer to run them on save.

Can you please try turning off extensions and turning them back on one by one to try and figure out which is causing the slowdown? It might also just be VS Code itself, but it's hard to tell without eliminating Sourcery from possibly being a problem.

after a few tests, I believe this is Sourcery

Thanks for letting us know in case this come up for anyone else!


Mouse key remapping for mouse 4 and 5

Sometimes you don't want to use your keyboard when you are dropping items or emptying/filling rune pouches.
To facilitate you could bind shift key to mouse 4 or 5. This would solve the problem.

:)

Rebinding keys to the mouse (or vice versa) is not something we want in the client (see here). You're better off using an external program such as AHK or your mouse's software to remap your keys to do that.


feat(full/availability): adding different withholding options to tests

Closes #2592 by adding three different modes to full availability test nodes: FullyRecoverable, BarelyRecoverable, and Unrecoverable.

Codecov Report

Merging #2697 (416d090) into main (7c1f8f3) will decrease coverage by 0.05%.
The diff coverage is 83.33%.

@@            Coverage Diff             @@
##             main    #2697      +/-   ##
==========================================
- Coverage   51.37%   51.33%   -0.05%
==========================================
  Files         159      159
  Lines       10699    10709      +10
==========================================
  Hits         5497     5497
- Misses       4723     4734      +11
+ Partials      479      478       -1

Files Changed
Coverage Δ

share/availability/full/testing.go
93.33% <83.33%> (-6.67%)
:arrow_down:

... and 7 files with indirect coverage changes


Update terms and conditions, privacy for Talao wallet

https://docs.google.com/document/d/12Wxr7GVK73rI3Mw3Yo3pqiPQCzEbgK-HCDRX0un1Jrk/edit?usp=sharing


Could not load assembly Plugin.BLE.Abstractions

Steps to reproduce
Use 3.0.0-beta.2 on MauiXAMLBluetoothLE
You can check changes in forked repo here
Expected behavior
Actual behavior
on Android API 31 I am getting this error in file Xamarin.Android.Common.targets line 1438:
System.IO.FileNotFoundException: Could not load assembly 'Plugin.BLE.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
I works fine when I switch version back to 2.2.0-prev5
Configuration
**Version of the Plugin: 3.0.0-beta.2
**Platform:  Android 12.0 API 31
**Device: Xiaomi Redmi Note 11

Hi @DanielAntos90,
I'm the friendly issue checker.
It seems like (50.00 %) you haven't used our issue template :cry: I think it is very frustrating for the repository owners, if you ignore them.
If you think it's fine to make an exception, just ignore this message.
But if you think it was a mistake to delete the template, please close the issue and create a new one.
Thanks!

Does this also occur with 3.0.0-beta.1?

I finally manage to run it using 3.0.0-beta.2, but I do not exactly know that the issue was.

i try using with 2.2.0-pre5, 3.0.0-beta.1 and beta.2 and i have the same error:
System.TypeLoadException: Could not resolve type with token 01000051 from typeref (expected class 'Plugin.BLE.Abstractions.Contracts.IBluetoothLE' in assembly 'Plugin.BLE, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null')
i using Xamarin with netstandard2.1
Xamarin.Android version 13.2

Steps to reproduce
Use 3.0.0-beta.2 on MauiXAMLBluetoothLE You can check changes in forked repo here
Expected behavior
Actual behavior
on Android API 31 I am getting this error in file Xamarin.Android.Common.targets line 1438:
System.IO.FileNotFoundException: Could not load assembly 'Plugin.BLE.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
I works fine when I switch version back to 2.2.0-prev5
Configuration
**Version of the Plugin: 3.0.0-beta.2
**Platform: Android 12.0 API 31
**Device: Xiaomi Redmi Note 11

This error appearing after upgrade Plugin.BLE to version 3.0.0* and disappearing after rebuilding solution.

This error appearing after upgrade Plugin.BLE to version 3.0.0* and disappearing after rebuilding solution. You need only rebuild your solutions and problem will disappear. We can close this issue.

Thanks for reporting this. I'll close the issue.


Improve documentation for references

The current documentation (i.e., in the schema and schema guide) reads:

Reference(s) to other creative works.

Additionally, the schema guide contains a section that explains this more clearly:

When your software or data builds on what others have already done, it is good practice to add a references section to your CITATION.cff file. This way, you give credit to the authors of works that your own work builds on.
The references section works like a reference list in a paper, but can also contain references to other software (such as the dependencies of your software), other datasets, and other (research) outputs.

Both could be improved by making it clearer what references is meant to take, e.g.

in the schema and schema guide, change to Reference(s) to prior creative works that this work builds on.
in the guide section, replace but with and: ... like a reference list in a paper, and can also contain references to other software ...

Wouldn't break "API", so could just be part of a MINOR release.

Spawned #529 to discuss version ranges for reference.version and cut back the scope of this issue to better documenting references as discussed in original comment.

Closing as fixed by merging #530.


actually getting some output!

When I execute nocode command I actually get some output, see below:
Prompt before no code:
$

After pressing enter:
$
$

I believe nocode should prevent user form pressing enter and avoid a new prompt line. Fix this asap please.

Maybe try this

or this

Found a workaround:
export PS1=""

Then you only get two newlines on return, still it can be improved: we really don't want that second newline!

Ok, after deep thinking here's the solution, @kelseyhightower please make sure to always execute xmodmap -e 'keycode 13=' BEFORE nocode is executed, therefore typing this:

And pressing enter (note: enter key code = 13) will produce:

This is a linux solution, osx and windows needs more thinking.

I know this sounds silly, but have you try it on iterm2?


GraphQLUpload scalar implementation

Hey👋
I'm trying to create a file upload mutation based on the ApolloGraphQL documentation.
I can't figure out, how should I map the GraphQLUpload to the Upload scalar.
In the builder file, I added a new scalar like this:
Scalars: {
    ...
    Upload: { Input: Upload; Output: Upload; }
  };

And then i tried to add the GraphQLUpload like this:
builder.addScalarType("Upload", GraphQLUpload, {});

But I get an error message:
Argument of type 'GraphQLScalarType' is not assignable to parameter of type 'GraphQLScalarType<unknown, unknown>'.   Type 'GraphQLScalarType' is missing the following properties from type 'GraphQLScalarType<unknown, unknown>': specifiedByURL, [Symbol.toStringTag]
Can you give me a hint on how should I solve this?
Thank you very much!

My guess is you have to copies of graphql in your dependency graph.
This issue is probably related: https://github.com/graphql/graphql-js/issues/3156
I would highly recommend using resolutions (if you are using yarn or pnpm) to ensure you only have 1 version of graphql

You were right! Thank you for helping out!


Retina mode does not report the native display resolution to a virtual machine

Describe the issue
I'm running my M3 Air (native res: 2560x1664) at a display resolution of 1710x1112.
When I install spice-vdagent, fullscreen the VM, and run xrandr --output Virtual-1 --auto, xrandr reports a resolution of 1710x1069.
If I check the "retina" checkbox and perform the same actions, I get a resolution of exactly 2x, or 3420x2138.
Neither of these are the native resolution of my M3 Air.
This impacts integer scaling: it seems as though UTM is operating on the fake, 1710x1112 resolution when performing integer scaling, as it results in uneven pixelation at 1280x768, which should be nearest-neighbor upscaled cleanly (2x) to a width of 2560.
Configuration

UTM Version: 4.5.3 (99)
macOS Version: 14.6.1
Mac Chip (Intel, M1, ...): M3 Air

So I am learning about macOS rendering but my understanding is the following:

backingScaleFactor returns the scale of the framebuffer NOT the physical scale factor. See: https://stackoverflow.com/a/54487166 This seems to always be 1.0 or 2.0.
The way macOS rendering works is that in any retina mode, the backing store is always 2.0 and then the OS will re-scale it to the correct physical dimensions.
It seems like it is impossible to avoid macOS's scaler: https://stackoverflow.com/questions/53551692/how-to-render-each-pixel-of-a-bitmap-texture-to-each-native-physical-pixel-of-th#53563363 even if you force the drawable to be the right resolution, it will end up getting re-scaled to 2x and back down to 1.5x

So unless someone has a better way, I don't think it is possible to fix this from UTM...

If you disable the scaler entirely in macOS (Monitors > Advanced > Show resolutions as a list > Tick show all resolutions and select the native monitor resolution), everything becomes very crisp in UTM VM. So the problem indeed comes entirely from the macOS scaler. It seems there used to be a way to disable it per app.


Tweaks for compatibility with Datadog continuous profiling service

Without these, the flame graph shows up empty in their viewer.
https://www.datadoghq.com/product/code-profiling/

Codecov Report

:exclamation: No coverage uploaded for pull request base (pv-dd-compatibility@77a8653). Click here to learn what that means.
The diff coverage is n/a.

@@                  Coverage Diff                   @@
##             pv-dd-compatibility      #73   +/-   ##
======================================================
  Coverage                       ?   95.60%
======================================================
  Files                          ?        3
  Lines                          ?      296
  Branches                       ?        0
======================================================
  Hits                           ?      283
  Misses                         ?       13
  Partials                       ?        0

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Accidentally 'merged' by pushing to origin instead of vilterp. Opened another PR…


C# Tutorial: Using C# Interactive to explore and experiment

This issue tracks the creation of this topic: https://github.com/dotnet/docs/blob/master/docs/csharp/tutorials/exploring-with-csharp-interactive.md
This topic should explain how to use C# interactive to explore an API, experiment with how an API or library can be used, and export the results to a .cs file for use in an application.
C# Interactive works inside Visual Studio, as a stand-alone application on Windows, and as a standalone package on MacOS. This tutorial should explain how to use it in all those environments. Assume the user has already installed needed tools, as that would be covered in the getting started section.
If there is a VS code extension that can launch C# interactive, that should be demonstrated as well.

Closing this, as it's been handled by our quickstarts and try.dot.net


lodash: changed _.every() method (and alias _.all())

https://lodash.com/docs#every
https://lodash.com/docs#_ (description of the chainable wrapper)

thanks mate!


Support StmtExpr

https://clang.llvm.org/doxygen/classclang_1_1StmtExpr.html

Do you have an example piece of code that produces a panic?

I assume just transpiling something with a StmtExpr will cause this. E.g:
int a = ({ 1; })

A fix has been released: https://github.com/elliotchance/c2go/releases/tag/v0.16.2

Thanks!


when using rez-build --ba pass the string to bez as well

like the title says.
Currently this change would make all the previous bez build fail, as the arguments to bez's build function has one more argument. Also it would be up to the implementer of rezbuild.py to re-build arguments as they would get as a string, ie build_args="foo=1 bar=cat".

Closing, merged with master.


Adding user 'mhoffrog' to Unleash plugin developer list

Filed this PR according to https://github.com/jenkins-infra/repository-permissions-updater/issues/4001 - @timja - please approve and merge this PR.
Link to GitHub repository
unleash-plugin
When modifying release permission
List the GitHub usernames of the users who should have commit permissions below:

@mhoffrog

This is needed in order to cut releases of the plugin or component.
If you are modifying the release permission of your plugin or component, fill out the following checklist:

### Release permission checklist (for submitters)
- [x] The usernames of the users added to the "developers" section in the .yml file are the same the users use to log in to [accounts.jenkins.io](https://accounts.jenkins.io/).
- [x] All users added have logged in to [Artifactory](https://repo.jenkins-ci.org/) and [Jira](https://issues.jenkins.io/) once.
- [x] I have mentioned an [existing team member](https://github.com/orgs/jenkinsci/teams) of the plugin or component team to approve this request.

When enabling automated releases (cd: true)
Follow the documentation to ensure, your pull request is set up properly. Don't merge it yet.
In case of changes requested by the hosting team, an open PR facilitates future reviews, without derailing work across multiple PRs.
Link to the PR enabling CD in your plugin

### CD checklist (for submitters)
- [ ] I have provided a link to the pull request in my plugin, which enables CD according to the documentation.

### Reviewer checklist
- [ ] Check that the `$pluginId Developers` team has `Admin` permissions while granting the access.
- [ ] In the case of plugin adoption, ensure that the Jenkins Jira default assignee is either removed or changed to the new maintainer.
- [ ] If security contacts are changed (this includes add/remove), ping the security officer (currently `@Wadeck`) in this pull request. If an email contact is changed, wait for approval from the security officer.

There are IRC Bot commands for it.

Welcome aboard

@timja Did migrate old wiki doc to the repo already. Can you make sure to redirect from old wiki to the repo docs? I am a bit confused by all the information source on how to create this request for redirection - JIRA INFRA is telling that those requests did go to github infra helpdesk issues etc. Maybe you can help on that one. Many thanks in advance!

Once you do a release of the plugin it should be updated within about 8 hours or so

(The documentation source is this attribute: https://github.com/jenkinsci/unleash-plugin/blob/master/pom.xml#L21 and a release is required for picking up changes to it, docs changed will happen quicker in future and not require a release once you've changed it to GitHub)

@timja - sorry for bothering again - realized that Stanley Hillner (shillner) is still in the plugins repo admin group. Since he did retire from maintaining that repo, I'd like to get him removed from the group. Can you manage that by this way or shall I file another request for this?

@shillner - Please let me know or request appropriate access again, if you still want to participate.

I've given you permission to manage it


Could not source the setup file for ROS distro "melodic"

I configured my distro to melodic through the pop-up msg, and now I get a notification that says Could not source the setup file for ROS distro "melodic". Furthermore my #include "ros/ros.h" and #include "std_msgs/String.h" statements are showing errors.
See the image below:

I met the same problems and looking forward to having somebody help.

Hi @scout208 , were you able to fix that issue? I have the same.
I can manually make the connections to the include files of ROS and get rid of wave underlines. I can also use ROS and Catkin commands from command line. But I still have that error message, and can not use the functionality of the extension in VSCode.

@KirillSum No, I gave up on my end.


Changed the request module to allow customizaiton of defaults

The request module will allow the user to change the defaults that the abacus-request module uses when it uses the request module. Tests still pass, but have not written any new tests for the new change.
Really submitted this pull request to see if this was the correct way to approach this problem.

Coverage decreased (-0.03%) to 87.584% when pulling 871d3dc736d653f868925d61a30267583cf0c2ff on AzureEnigma:master into 0d9fafc3d7eef2dec833d8c5d641508747ce20e8 on cloudfoundry-incubator:master.

This pull request needs more work, see my comments in the code.

Also see my comments in issue #272

Sorry for the noob questions, but do you have any recommendations for the approach of being able to add defaults to request?

Should I move the request module into xrequest? It seems like each require of the abacus-request module should have its own request to modify.

What would be the best way of modifying the defaults of the request? Should I have an extra parameter for xrequest to see if there are extra default options?

Closing for now as the pull request can't be merged as is. Please reopen or open another one addressing  my comments. Thanks!


Example TwoWayRanging is not work.

Step 1: What do you want?

TwoWayRangingInitiator and TwoWayRangingResponder do not work. therefore I want them to work.

Step 2: Describe your environment

Arduino IDE version or Toolchain: Arduino IDE 1.8.7
Arduino device: Arduino Uno R3
Used adapter board: None

Step 3: Describe the problem
Affected file(s) or example(s):

TwoWayRangingResponder.ino
TwoWayRangingInitiator.ino

Observed Results:

It seems not to work!
Thus I tried Basic Connectivity Test.

I'm not sure it's correct output because I'm a beginner of Arduino and DWM1000.
But I don't think there is any noticeable problem.
And then I uploaded Basic Sender/Receiver to Arduino.

I still have no clue about this, but it seems to work fine.

EDIT: thotro/arduino-dw1000
I tried also thotro's library.

The device is removed immediately after it is added.

Why are BasicSender and Receiver working but TwoWayRanging not working?
Expected Results:

Jaja, I expected they work.

Wiring

Where did you put the 10K resistor ? I am having the same issue my Basic Receiver and Basic Sender is working but the Two Way Ranging example doesnt work

@lgr9603

Where did you put the 10K resistor ? I am having the same issue my Basic Receiver and Basic Sender is working but the Two Way Ranging example doesnt work

I think that the @tdh8316 's solution is relative to section 5.2.2 inside DWM1000 datasheet

@Leylan24 I'm a coworker of @tdh8316 .
Well, we put the 10K resistor on pin 2 to remove noises flowing through it.
And drop the voltage of digital pins from 5V to 3.3V. Dwm1000 can work between 2.4V and 3.75V. (Along to datasheet on decawaver.com)
As I said, arduino uno digital pins use 5V, bout DWM1000 sends output signals in 3.3V. So we should increase voltage of DWM1000 signal from 3.3V to 5V.

Thanks for you reply.
But does the ranges only print when the IRQ pin gets pulled high?

But does the ranges only print when the IRQ pin gets pulled high?

With this library, the IRQ pin is not required. There are two different init processes, with or without Interrupt pin.


[cleanup] Some useless files can now be deleted

be/test/runtime/string_buffer_test.cpp
be/src/runtime/string_buffer.hpp
be/src/util/types.h

ok，here

Already push branch

@Ccuurryy Thanks for your contribution. I will assign this issue for you.


Variadic argument fix

Some of these fixes were missing from the fluent UDF PR.

Coverage remained the same at 91.729% when pulling d9e3522c4d753503d920e91e42f604f8bdd64cc2 on variadic_argument_Fix into 5446f6d614f5424f4839a833d0b7002a9bc6d793 on master.

Any issue with merging this into master?


Resolve case of SPDX license

Type: Incorrect
Summary:
Resolve case of SPDX license
Details:
This component contains Apache license 2.0 hence, marking this as apache license 2.0. Please find the link as below:
https://github.com/elastic/beats/blob/v6.2.4/LICENSE.txt
Resolution:
This component contains Apache license 2.0 hence, marking this as apache license 2.0. Please find the link as below:
https://github.com/elastic/beats/blob/v6.2.4/LICENSE.txt
Affected definitions:

beats 1122568edf4ad039734b5224aece9a6259c72684

Duplicate; closing.


Investigate on asynchronous issue while creating folders and files depending on each other

There are some issues arising when we need to create a folder first before files.
In such cases, there is a need to do investigations and find a solution.

Closed as the current submitted handled this case. Though, we might do some refactoring in the near future.


Review the purposes used by OAuthBearerAuthenticationMiddleware for AccessTokenFormat

In Katana 3, OAuthBearerAuthenticationMiddleware and OAuthAuthorizationServerMiddleware shared the same static purposes for the data protector used by Options.AccessTokenFormat: Microsoft.Owin.Security.OAuth, Access_Token and v1.
This was rather handful because you didn't have to explicitly roll your own TicketDataFormat for the OAuth2 bearer middleware to use use access tokens issued by the built in OAuth2 server.
http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.OAuth/OAuthBearerAuthenticationMiddleware.cs
http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.OAuth/OAuthAuthorizationServerMiddleware.cs
When @Tratcher ported the bearer middleware to vNext, he used differently values: GetType().FullName, Options.AuthenticationType and v1.
https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNet.Security.OAuth/OAuthBearerAuthenticationMiddleware.cs#L61-L63
The new values are probably safer given that providing unique purposes per middleware instance makes access tokens issued for a middleware A unreadable by a middleware B. On the other hand, because the bearer middleware now uses different purposes, access tokens issued by the OAuth2 server MW cannot be used without explicitly replacing the format provider.
Because debugging this kind of issue is definitely not trivial, I'd suggest - after deciding whether these values are adequate - either providing a compatibility switch that would use the old values or inserting a warning somewhere in the code indicating how to fix it.

Options.AccessTokenFormat has been removed in the last version of the OAuth2 bearer authentication middleware, which now uses a completely insane security token handler approach. Given that this ticket became useless, I'll simply close it.
Guys, go luck if you try to use opaque tokens.


Update the documentation on the website in the gh-pages branch

The website has fallen way behind the actual repositories documentation. It needs to be caught up with some good solid examples and code updates.

I'll take a look at this.

That would be awesome!

On Mar 3, 2016, at 10:13 AM, Darryl Dixon - Piece Digital<EMAIL_ADDRESS>wrote:
I'll take a look at this.
—
Reply to this email directly or view it on GitHub.

let me know if you have any questions too...


All advancements triggering at once in 1.17 build

Whenever you get any item all the mod advancements will trigger
this only happens in the 1.17 build

i think this happens because they changed the advancements system in 1.17

fixed in 2.0.1


The output of the largest model seems unreliable.

We are running the XXL Unified IO 2 model (pytorch version) on a NVIDIA GeForce RTX 4090. The demo.py file is shown below:
from uio2 import config
from uio2.model import UnifiedIOModel
from uio2.preprocessing import UnifiedIOPreprocessor
preprocessor = UnifiedIOPreprocessor.from_config(config.XXL, "tokenizer.model")
model = UnifiedIOModel(config.XXL)

from uio2.runner import TaskRunner
runner = TaskRunner(model, preprocessor)

for _ in range(3):
    ans1 = runner.categorization("something.jpg", ["boy", "girl", "cat", "dog", "car", "plane", "sun"])
    print(f"Prediction: {ans1}")

something.jpg file is actually a picture of cat.

The output is shown below:
Prediction: sun
Prediction: sun
Prediction: sun

Are we doing anything wrong?

I guess config.XXL model initialized the model from scratch. Maybe try
preprocessor = UnifiedIOPreprocessor.from_pretrained("allenai/uio2-preprocessor", tokenizer="/path/to/tokenizer")
model = UnifiedIOModel.from_pretrained("allenai/uio2-large")


proton-ge-custom: init at 9-1

Description of changes
Seeing extraCompatPackages is now a steam module option as of #293564, I think it's nice to put proton-ge-custom in nixpkgs instead of forcing to get them from random NUR repositories or package locally.
Tested on x86_64-linux. Haven't got any other hardware to test on right now.
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

1 package built:
proton-ge-custom

looks on the first view quite similar to mine package. nice to get it added, i was also considering that after the weekend.
Ill cherry-pick that to my nixpkgs fork later and test.
once tested ill report that (but as it exactly my steps (+ handling pre/postBuild correctly) i dont expect problems
Feel free to add me as additional maintainer if you like to have a second one.

looks on the first view quite similar to mine package. nice to get it added, i was also considering that after the weekend.

I've been planning to initialize with the derivation we've written for nix-gaming, but I've seen yours in the steamCompat issue - which seemed like a cleaner solution. For that, I owe you a thanks because I would never come up with it myself.

Feel free to add me as additional maintainer if you like to have a second one.

Can't hurt, going to push the changes in a minute.

For that, I owe you a thanks because I would never come up with it myself.

Feel free to use the code i have in my repo at anytime. :slightly_smiling_face: .  i created that back the days when there was a discussion how a proton derivation has to look like when not having everything sitting in bin, but because of what ever reason never commited to my git repo, lucky vscode has a nice history, so i revived that code snippet when i readed the new compat pr for testing.

Looks good but maybe an update script would be nice.

Having some experience with running the nix-update logic, i highly recommend to use the created releases for a update script but not the tags (sadly nix-update loads the releases.atom, which contains both), it sometimes happens that GloriousEggroll pushes the tags but the github releases dont get created due to some ci stuff, last when that happened was 8-32 where a tag was created but no releases exists (and as i read no announcement on the discord that it has been removed i just assume that there had been troubles with ci).

Looks good but maybe an update script would be nice.

Having some experience with running the nix-update logic, i highly recommend to use the created releases for a update script but not the tags (sadly nix-update loads the releases.atom, which contains both), it sometimes happens that GloriousEggroll pushes the tags but the github releases dont get created due to some ci stuff, last when that happened was 8-32 where a tag was created but no releases exists (and as i read no announcement on the discord that it has been removed i just assume that there had been troubles with ci).

  passthru.updateScript = writeScript "update-proton-ge" ''
    #!/usr/bin/env nix-shell
    #!nix-shell -i bash -p curl jq common-updater-scripts

    version="$(curl -sL "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases" | jq 'map(select(.prerelease == false)) | .[0].tag_name' --raw-output)"
    update-source-version proton-ge-custom "$version"
  '';

or similar should do the job i talked about.

pushed to add the update script

(@NotAShelf you resolved some threads; did you forget to push?)

Wouldn't let me re-open this PR, new one made at https://github.com/NixOS/nixpkgs/pull/295785


YouTube DASH 1080p & ffmpeg causes stuttering

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2017.05.01. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2017.05.01

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
C:\Users\...>youtube-dl -v -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" 9xYLXHx3g80
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', '-f', 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best', '9xYLXHx3g80']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2017.05.01
[debug] Python version 3.4.4 - Windows-10-10.0.14393
[debug] exe versions: ffmpeg 3.2.4, ffprobe 3.2.4
[debug] Proxy map: {}
[youtube] 9xYLXHx3g80: Downloading webpage
[youtube] 9xYLXHx3g80: Downloading video info webpage
[youtube] 9xYLXHx3g80: Extracting video information
[youtube] 9xYLXHx3g80: Downloading MPD manifest
[youtube] 9xYLXHx3g80: Downloading MPD manifest
[debug] Invoking downloader on [URL]
[dashsegments] Total fragments: 337
[download] Destination: Show and tell for ASMR-9xYLXHx3g80.f137.mp4
[download] 100% of 572.48MiB in 06:29
[debug] Invoking downloader on [URL]
[dashsegments] Total fragments: 170
[download] Destination: Show and tell for ASMR-9xYLXHx3g80.f140.m4a
[download] 100% of 25.46MiB in 01:31
[ffmpeg] Merging formats into "Show and tell for ASMR-9xYLXHx3g80.mp4"
[debug] ffmpeg command line: ffmpeg -y -i 'file:Show and tell for ASMR-9xYLXHx3g80.f137.mp4' -i 'file:Show and tell for ASMR-9xYLXHx3g80.f140.m4a' -c copy -map 0:v:0 -map 1:a:0 'file:Show and tell for ASMR-9xYLXHx3g80.temp.mp4'
Deleting original file Show and tell for ASMR-9xYLXHx3g80.f137.mp4 (pass -k to keep)
Deleting original file Show and tell for ASMR-9xYLXHx3g80.f140.m4a (pass -k to keep)

Example video: https://www.youtube.com/watch?v=9xYLXHx3g80

When downloading fragmented DASH videos from YouTube (1080p) and using ffmpeg (I tested ffmpeg 3.2.4, ffmpeg 2.8.4 and ffmpeg N-85750-ga75ef15) the resulting video starts stuttering after 5 seconds.
I also tried avconv v11.7 with avprobe v11.7 which does not cause this problem.

Most likely the problem is in your player.

I tried VLC (on two different PCs), Media Player Classic HC and the Samsung Android Player. The problem occurs in all those players.
I also noticed a difference in filesize:
Show and tell for ASMR-9xYLXHx3g80 avconv v11.7, avprobe v11.7, ffmpeg 2.8.4.mp4
-> No stuttering, 612.587 KB
Show and tell for ASMR-9xYLXHx3g80 ffmpeg 2.8.4
-> Stutters, 613.013 KB
Show and tell for ASMR-9xYLXHx3g80 ffmpeg 3.2.4, ffprobe 3.2.4
-> Stutters, 613.013 KB
Show and tell for ASMR-9xYLXHx3g80 ffmpeg N-85750-ga75ef15, ffprobe N-85750-ga75ef15
-> Stutters, 613.013 KB
There seem to be DASH videos with and without "dashsegments". It only happens on videos with "dashsegments" and 1080p.
To rule out windows I downloaded the same way on Debian Jessie (GNU/Linux 4.9.20-std-1 x86_64) with youtube-dl version 2017.05.01 and  exe versions: ffmpeg 3.2.4-1, ffprobe 3.2.4-1. The resulting file turned out to be the same 613.013 KB and it stutters as well.

Plays fine with mpv. If you think there is a bug in ffmpeg report it to ffmpeg not here.


Shortcut modal does not close after submit

Hi,
I developed a shortcut but after submitting by submit button, the modal is not closed.
After the submit, several validations are carried out and a message is sent to the user, but I want the modal to be closed and these processes to be in the background, as it consumes a lot of time and there is no need for the user to wait.
In the documentation it asks to be done this way:
# Handle a view_submission request
@app.view("view_1")
def handle_submission(ack, body, client, view, logger):
    # Assume there's an input block with `input_c` as the block_id and `dreamy_input`
    hopes_and_dreams = view["state"]["values"]["input_c"]["dreamy_input"]
    user = body["user"]["id"]
    # Validate the inputs
    errors = {}
    if hopes_and_dreams is not None and len(hopes_and_dreams) <= 5:
        errors["input_c"] = "The value must be longer than 5 characters"
    if len(errors) > 0:
        ack(response_action="errors", errors=errors)
        return
    # Acknowledge the view_submission request and close the modal
    ack()
    # Do whatever you want with the input data - here we're saving it to a DB
    # then sending the user a verification of their submission

    # Message to send user
    msg = ""
    try:
        # Save to DB
        msg = f"Your submission of {hopes_and_dreams} was successful"
    except Exception as e:
        # Handle error
        msg = "There was an error with your submission"

    # Message the user
    try:
        client.chat_postMessage(channel=user, text=msg)
    except e:
        logger.exception(f"Failed to post a message {e}")

I did it this way:
@app.view("aws_access_request")
    def handle_view_events(ack, body, client, view):
        # Assume there's an input block with `input_c` as the block_id and `dreamy_input`
        awsname = view["state"]["values"]["input_aws_select"]["aws_access_select"]["selected_option"]["value"]
        awsrole = view["state"]["values"]["input_aws_role_select"]["aws_access_role_select"]["selected_option"]["value"]
        managermail = view["state"]["values"]["input_aws_access_manager"]["aws_access_manager"]["value"]
        squad = view["state"]["values"]["input_aws_access_squad"]["aws_access_squad"]["value"]
        reason = view["state"]["values"]["input_aws_access_reason"]["aws_access_reason"]["value"]

        senderid = body["user"]["id"]
        senderobj = client.users_profile_get(user=senderid)
        sendermail = senderobj["profile"]["email"]
        sendermention = f"<@{senderid}>"
        sendername = senderobj["profile"]["display_name"]

        # Validate inputs
        errors = {}
        mincaracter = 25

        inputs = {...}

        if reason is not None and len(reason) <= mincaracter:
            errors["input_aws_access_reason"] = f"The value must be longer than {mincaracter} characters"
        elif awsname == "nothing":
            errors["input_aws_select"] = "Please select valid option"

        if len(errors) > 0:
            ack(response_action="errors", errors=errors)
            return

        # Acknowledge the view_submission request and close the modal
        ack()

        checkinputname = Ot.check_inputs(inputs, INPUT_AWS_NAME)
        checkinputmanager = Ot.check_inputs(inputs, INPUT_MANAGER_MAIL)

        # Caso o usuário não tenha informado corretamente o Acesso/Gestor, não envia a solicitação
        if not checkinputname or not checkinputmanager:...
        else...

After ack() "Acknowledge the view_submission request and close the modal" It is not closing the modal and continues running the code below.
The problem is that the code below ack() takes about 10 seconds to run, so this error appears:

As I said, I wanted the form to close immediately after ack() and not wait for all the code to run to close.

@filmaj
If I take the code below the ack() it works and closes the modal.
The error validation part works normally. When I put this code snippet below ack(), after clicking on submit it takes about 3 seconds and this message from the print I sent appears.
In the aws logs it does not generate any kind of error despite this image message, which I found strange.

Oh is this app running on AWS? You may want to look at the Lazy Listeners section of the Bolt for Python docs. You may also want to check the AWS example apps for Bolt we have in the examples/ folder.

@filmaj
I believe the problem is the same. I didn't find any example of lazy with view submition coming from a shortcut . Do you have an example to show?
I found from action and workflowstep

I would suggest you try to combine the lazy_aws_lambda.py example with your own use case.

@filmaj
I had already managed to use lazy with workflowstep like this:
        def execute_step(step: dict, complete: Complete, fail: Fail)

        @step_builder.execute(lazy=[execute_step])
        def execute():
            pass

I tried this way but it didn't work("Syntax error in module 'init': invalid syntax"):
    def handle_view_events(ack, body, client, view):

    @app.view("aws_access_request")(lazy=[handle_view_events])
    def handle():
        pass

Can you tell me if this view method being used by decorator accepts this lazy?

The view method can indeed accept a lazy named function argument, but you also must provide an ack named function argument. lazy runs the long-running tasks you want to execute, and your named ack method must call ack inside within 3 seconds. The other important thing to note is that this approach is not available using the decorator approach. It needs to be a direct invocation of app.view, just like the example I pointed you to does with app.command.

@filmaj ,
Many thanks for the reply. I managed to do it this way:
    def handle_errors(ack, view):...

    def handle_submit(body, client, view):...

    app.view("aws_access_request")(ack=handle_errors, lazy=[handle_submit])

The problem is that I have to validate 2 fields in the form. In this way, regardless of whether the fields are filled in correctly or not, the lazy function is to execute. The user receives a message as if the form has been successfully executed, while still validating errors:

@BSouzaDock can you share your full code?

I saw this problem being mentioned in another thread: Is it not the same case I'm experiencing?
This is the full shortcut code:
from applications.okta.okta_utils import OktaTools
from applications.slack.features.workflow.aws_access_request.utils import get_workflow_block_fail, \
    send_block_fail_message, get_workflow_block_success, send_request_aws_message
from applications.slack.main.slack_main import SlackTools
from util.constants import *

Ot = OktaTools()
St = SlackTools()

def get_shortcuts(app):
    formdesc = "Peencha os campos abaixo para solicitar seu acesso. \n\nA solicitação será enviada para aprovação do " \
               "gestor e você receberá uma notificação no privado após a resposta."
    allawsoptions = [
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Acquirer - HML"
            },
            "value": "AWS Acquirer - HML"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Acquirer - PRD"
            },
            "value": "AWS Acquirer - PRD"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS C6 - DEV"
            },
            "value": "AWS C6 - DEV"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS C6 - HML"
            },
            "value": "AWS C6 - HML"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS C6 - PRD"
            },
            "value": "AWS C6 - PRD"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Dablam - Banking"
            },
            "value": "AWS Dablam - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Datalake HML - Banking"
            },
            "value": "AWS Datalake HML - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Datalake HML - Core"
            },
            "value": "AWS Datalake HML - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Datalake PRD - Banking"
            },
            "value": "AWS Datalake PRD - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Dev - Banking"
            },
            "value": "AWS Dev - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Dev - Core"
            },
            "value": "AWS Dev - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS DevOpsTools - Banking"
            },
            "value": "AWS DevOpsTools - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS DevopsTools - Core"
            },
            "value": "AWS DevopsTools - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS DevopsTools - DEV"
            },
            "value": "AWS DevopsTools - DEV"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS DevopsTools - PRD"
            },
            "value": "AWS DevopsTools - PRD"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Dock CloudTribe - DEV"
            },
            "value": "AWS Dock CloudTribe - DEV"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Dock Tech Advocacy - DEV"
            },
            "value": "AWS Dock Tech Advocacy - DEV"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS DR - Banking"
            },
            "value": "AWS DR - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS DR - Core"
            },
            "value": "AWS DR - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS HML - Banking"
            },
            "value": "AWS HML - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS HML - Core"
            },
            "value": "AWS HML - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Internal - Architecture"
            },
            "value": "AWS Internal - Architecture"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Julius - HML"
            },
            "value": "AWS Julius - HML"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Julius - PRD"
            },
            "value": "AWS Julius - PRD"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Merci"
            },
            "value": "AWS Merci"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Merci - HML"
            },
            "value": "AWS Merci - HML"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Network - Banking"
            },
            "value": "AWS Network - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Network - Core"
            },
            "value": "AWS Network - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS PRD - Banking"
            },
            "value": "AWS PRD - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS PRD - Core"
            },
            "value": "AWS PRD - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS QA - Banking"
            },
            "value": "AWS QA - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS QA - Core"
            },
            "value": "AWS QA - Core"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Root - Banking"
            },
            "value": "AWS Root - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Security - Banking"
            },
            "value": "AWS Security - Banking"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Security - Dev"
            },
            "value": "AWS Security - Dev"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "AWS Shared - PRD"
            },
            "value": "AWS Shared - PRD"
        }
    ]
    nothingoption = [{
        "text": {
            "type": "plain_text",
            "text": "Nothing found  :sob:"
        },
        "value": "nothing"
    }]
    roleoptions = [
        {
            "text": {
                "type": "plain_text",
                "text": "Developers",
                "emoji": True
            },
            "value": "Developers"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Qa",
                "emoji": True
            },
            "value": "Qa"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Cloud",
                "emoji": True
            },
            "value": "Cloud"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "DBA",
                "emoji": True
            },
            "value": "DBA"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Data",
                "emoji": True
            },
            "value": "Data"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Architect",
                "emoji": True
            },
            "value": "Architect"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Telecom",
                "emoji": True
            },
            "value": "Telecom"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "SRE",
                "emoji": True
            },
            "value": "SRE"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "PSE",
                "emoji": True
            },
            "value": "PSE"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Csops",
                "emoji": True
            },
            "value": "Csops"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "StarOps",
                "emoji": True
            },
            "value": "StarOps"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Account Manager",
                "emoji": True
            },
            "value": "Account Manager"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "Techleads",
                "emoji": True
            },
            "value": "Techleads"
        },
        {
            "text": {
                "type": "plain_text",
                "text": "CloudSecurity",
                "emoji": True
            },
            "value": "CloudSecurity"
        }
    ]

    @app.shortcut("aws_access_request")
    def handle_shortcuts(ack, body, client):
        # Acknowledge the command request
        ack()
        # Call views_open with the built-in client
        client.views_open(
            # Pass a valid trigger_id within 3 seconds of receiving it
            trigger_id=body["trigger_id"],
            # View payload
            view={
                "type": "modal",
                # View identifier
                "callback_id": "aws_access_request",
                "title": {"type": "plain_text", "text": "AWS Access Request"},
                "submit": {"type": "plain_text", "text": "Submit"},
                "blocks": [
                    {
                        "type": "section",
                        "text": {
                            "type": "mrkdwn",
                            "text": formdesc
                        },
                        "accessory": {
                            "type": "image",
                            "image_url": "https://a0.awsstatic.com/libra-css/images/logos/aws_logo_smile_1200x630.png",
                            "alt_text": "AWS Access Request"
                        }
                    },
                    {
                        "type": "input",
                        "block_id": "input_aws_select",
                        "element": {
                            "action_id": "aws_access_select",
                            "type": "external_select",
                            "placeholder": {
                                "type": "plain_text",
                                "text": "Select or enter the expected value..."
                            },
                            "min_query_length": 0
                        },
                        "label": {
                            "type": "plain_text",
                            "text": "AWS que deseja acessar:",
                            "emoji": True
                        }
                    },
                    {
                        "type": "input",
                        "block_id": "input_aws_role_select",
                        "element": {
                            "action_id": "aws_access_role_select",
                            "type": "static_select",
                            "placeholder": {
                                "type": "plain_text",
                                "text": "Select an item..."
                            },
                            "options": roleoptions
                        },
                        "label": {
                            "type": "plain_text",
                            "text": "Role:",
                            "emoji": True
                        }
                    },
                    {
                        "type": "input",
                        "block_id": "input_aws_access_squad",
                        "element": {
                            "type": "plain_text_input",
                            "action_id": "aws_access_squad"
                        },
                        "label": {
                            "type": "plain_text",
                            "text": "Squad/Area de atuação:",
                            "emoji": True
                        }
                    },
                    {
                        "type": "input",
                        "block_id": "input_aws_access_reason",
                        "element": {
                            "type": "plain_text_input",
                            "multiline": True,
                            "action_id": "aws_access_reason"
                        },
                        "label": {
                            "type": "plain_text",
                            "text": "Motivo do acesso na conta AWS:",
                            "emoji": True
                        }
                    },
                    {
                        "type": "input",
                        "block_id": "input_aws_access_manager",
                        "element": {
                            "type": "plain_text_input",
                            "action_id": "aws_access_manager"
                        },
                        "label": {
                            "type": "plain_text",
                            "text": "E-mail do seu gestor imediato:",
                            "emoji": True
                        }
                    }
                ]
            }
        )

    @app.options("aws_access_select")
    def handle_some_options(ack, body):
        keyword = body.get("value")

        if len(keyword) > 0:
            options = [o for o in allawsoptions if
                       str(o["text"]["text"]).upper().find(keyword.upper()) >= 0]

            if len(options) == 0:
                options = nothingoption

            ack(options=options)
        elif keyword is None or len(keyword) == 0:
            ack(options=allawsoptions)

    def handle_errors(ack, view):
        # Assume there's an input block with `input_c` as the block_id and `dreamy_input`
        awsname = view["state"]["values"]["input_aws_select"]["aws_access_select"]["selected_option"]["value"]
        reason = view["state"]["values"]["input_aws_access_reason"]["aws_access_reason"]["value"]

        # Validate inputs
        errors = {}
        mincaracter = 25

        if reason is not None and len(reason) <= mincaracter:
            errors["input_aws_access_reason"] = f"The value must be longer than {mincaracter} characters"
        elif awsname == "nothing":
            errors["input_aws_select"] = "Please select valid option"

        if len(errors) > 0:
            ack(response_action="errors", errors=errors)
            return

        # Acknowledge the view_submission request and close the modal
        ack()

    def handle_submit(body, client, view):
        awsname = view["state"]["values"]["input_aws_select"]["aws_access_select"]["selected_option"]["value"]
        awsrole = view["state"]["values"]["input_aws_role_select"]["aws_access_role_select"]["selected_option"]["value"]
        managermail = view["state"]["values"]["input_aws_access_manager"]["aws_access_manager"]["value"]
        squad = view["state"]["values"]["input_aws_access_squad"]["aws_access_squad"]["value"]
        reason = view["state"]["values"]["input_aws_access_reason"]["aws_access_reason"]["value"]
        senderid = body["user"]["id"]
        senderobj = client.users_profile_get(user=senderid)
        sendermail = senderobj["profile"]["email"]
        sendermention = f"<@{senderid}>"
        sendername = senderobj["profile"]["display_name"]

        inputs = {
            "awsName": {
                "value": awsname
            },
            "awsRole": {
                "value": awsrole
            },
            "managerMail": {
                "value": managermail
            }
        }

        checkinputname = Ot.check_inputs(inputs, INPUT_AWS_NAME)
        checkinputmanager = Ot.check_inputs(inputs, INPUT_MANAGER_MAIL)

        # Caso o usuário não tenha informado corretamente o Acesso/Gestor, não envia a solicitação
        if not checkinputname or not checkinputmanager:
            if not checkinputname:
                # errmsg = {
                #     "message": f"Acesso {awsname} não encontrado! Olhar no Pin fixado do canal o nome de cada AWS."}
                blocklayout = FAIL_MSG_AWS_NAME
            else:
                # errmsg = {"message": f"Gestor {managermail} não encontrado no ambiente!"}
                blocklayout = FAIL_MSG_MANAGER_MAIL

            # fail(error=errmsg)
            blockfail = get_workflow_block_fail(sendermention, managermail, awsname, awsrole, blocklayout)
            send_block_fail_message(blockfail, senderid)
        else:
            try:
                manager = client.users_lookupByEmail(email=managermail)
                managerid = manager["user"]["id"]

                blocksuccess = get_workflow_block_success(sendermention, awsname)

                send_request_aws_message(sendername, sendermail, sendermention,
                                         awsname, awsrole, squad, reason, managermail, managerid)
            except Exception as e:
                if "users_not_found" in str(e):
                    # error = {"message": f"Gestor {managermail} não encontrado no ambiente!"}
                    # fail(error=error)
                    blocklayout = FAIL_MSG_MANAGER_MAIL
                    blockfail = get_workflow_block_fail(sendermention, managermail, awsname, awsrole, blocklayout)

                    send_block_fail_message(blockfail, senderid)
                else:
                    # error = {"message": "Just testing step failure! {}".format(e)}
                    # fail(error=error)
                    St.webhook_directly(WEBHOOK_LOGS_URI_FAIL, e, FAIL)
            else:
                client.chat_postMessage(text="Envio com sucesso de solicitação de acesso AWS",
                                        blocks=blocksuccess,
                                        channel=senderid)

    app.view("aws_access_request")(ack=handle_errors, lazy=[handle_submit])

I saw this problem being mentioned in another https://github.com/slackapi/bolt-python/issues/482: Is it not the same case I'm experiencing?

Oh nice find; yes it seems like it is not possible at this time. Looks like @seratch recommends to duplicate the error validation in the lazy functions. Perhaps we could improve the behaviour to enable this pattern of only running lazy functions if ack succeeds / returns a non-error response; this makes sense to me, but there are many use cases to consider!

Regarding the limitation of lazy listeners mentioned here, as I responded in that thread, having the same validation on the lazy function side is the recommended way.
@BSouzaDock By the way, are you running your app on AWS Lambda? If not, you don't need to use lazy listeners if the feature does not fit. You can merge handle_errors and handle_submit  into one (handle_errors and then handle_submit) and it should work for you.

@seratch @filmaj,
Thanks a lot for your help. I'm using an AWS Lambda with API Gateway.
I did a one-time validation and called on both methods. It worked perfectly.


File based predef in analogy to ammonite

In Ammonite, you can pass in a file to the --predef command line option. It seems that almond only allows you to pass in a string that implements some scala code.
I tried to get the same effect in a variety of ways

I attempted to cat a file into the option's value via the command line --predef $(cat "${PATH_TO_PREDEF}/spark_predef.scala"), and while that didn't cause it to fail to start… none of the content was actually run.
cat and join everything onto a single line, adding semi-colons to the end of lines based on key words.

This effectively required getting rid of all comments; but still did not work

passing in a $exec and $file command to load the script

This didn't work because the dependencies had not yet been resolved at the time that they needed to be inside the script (see http://ammonite.io/#Multi-stageScripts)
or if I added a @ the almond interpreter attempted to reload all of the other predefs again (as well as the predef I supplied) and crashed
or if I removed the need for those dependencies to be completely resolved… it also attempted to reload the other predefs again (as well as the predef I supplied) and then crashed

So… I'm thinking there's no good way to do this right now.
Is there a reason almond does not replicate ammonite's --predef file functionality? If the reason is only "we haven't done that yet", how would we go about changing that?
@jameskoch2 @alexarchambault @mseal

I would use this as feel. For now, since I had already created my own kernel using the almond ScalaInterpreter, I just read the file in my own code, then pass this into the predef constructor argument.

I agree this ought to be fixed. I'll look into it (or if any of you feel like sending a PR…)


socket.bind() bug in NAT diagnosis

In diagnose-nat.ts, all the instances of freedom_UdpSocket.socket.bind() assume that the method returns a number, but it actually seems to return an empty array (on success, at least).
This was never caught because we're doing type coercion when checking the bind() result, namely result != 0, which is true when result is [].
We can change this by simply removing the check for result != 0, since it seems that .then() is only called on success (do we need a new .catch() block then?). However, it might make more sense to change bind() to return a number, which would match the Chrome socket API.

See https://github.com/freedomjs/freedom/issues/280

If I print the output of bind(), it's actually an empty array and not a number.

Yeah, that's because the freedom platform actually enforces the return type
in the interface definition, and discards the provider's return value.
On Wed, Jun 24, 2015 at 5:10 PM, Kenny Song<EMAIL_ADDRESS>wrote:

If I print the output of bind(), it's actually an empty array and not a
number.
—
Reply to this email directly or view it on GitHub
https://github.com/uProxy/uproxy/issues/1687#issuecomment-115013182.