Default timeout

o/
In util.Timeout, urllib3 use the socket global default timeout, but not the "user set" default timeout, probably modified by socket.setdefaulttimeout(10), so ignoring any socket.setdefaulttimeout. Why ?
I think it would be cool to be able to set a "setdefaulttimeout" and have it impact urllib3, so also impacting requests.
In another hand, one should not know that urllib3 or request use socket under the hood, and doing a socket.setdefaulttimeout to configure the default timeout of urllib3 or requests  tie them, I mean, if you change the underlying used module, the timeout will still be applied, but to the wrong module, so probably being ignored. Also this is surprising to set a setting on a module A to impact the behavior of module B.
So we have pros and cons here, but totally ignoring socket.setdefaulttimeout may not be the better solution, conversation opened :)

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/22915979-default-timeout?utm_campaign=plugin&utm_content=tracker%2F192525&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F192525&utm_medium=issues&utm_source=github).

Agree, I think setting socket.setdefaulttimeout should affect urllib3. The only way in which that's a problem is that, if you rely on it, non-sockety platforms (like GAE) won't work. However, that's a problem for downstream library authors.
Generally, we should encourage people to use urllib3's timeout infrastructure, but if socket is being used we should respect settings in that module.

Seems a good compromise, I agree:

modules should encourage using their own methods to set timeout to be implementation independent
When using socket, if a defaulttimeout is set, respect it
Obviously, setting the timeout from the module API have precedence over default timeout at a socket level

Agreed, don't think there is any reason why we're not using socket.getdefaulttimeout(). +1 to using this as the default.
In fact, we have connection.py:HTTPSConnection.__init__(..., timeout=socket._GLOBAL_DEFAULT_TIMEOUT) which makes no sense to me at all. That should not be there.
@JulienPalard Would you like to do a PR with these changes?

I'd like to do so :-) However the make test fail, I can still do my modifications and check it fails the same way, but it may hide something:
$ make test
nosetests
SSS..........F.........................................................S..S..............S.............SSS.....S....S.................................................................................................................................................................
======================================================================
FAIL: ECONNREFUSED error should raise a connection error, with retries
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/julien/urllib3/test/with_dummyserver/test_connectionpool.py", line 279, in test_connection_error_retries
    self.assertEqual(e.reason.args[1].errno, errno.ECONNREFUSED)
AssertionError: 101 != 111
-------------------- >> begin captured logging << --------------------
urllib3.connectionpool: INFO: Starting new HTTP connection (1): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=9, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=9, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (2): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=8, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=8, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (3): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=7, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=7, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (4): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=6, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=6, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (5): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=5, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=5, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (6): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=4, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=4, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (7): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=3, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=3, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (8): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=2, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=2, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (9): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=1, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=1, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (10): localhost
urllib3.util.retry: DEBUG: Incremented Retry for (url='/'): Retry(total=0, connect=3, read=None, redirect=None)
urllib3.connectionpool: WARNING: Retrying (Retry(total=0, connect=3, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', error(101, 'Network is unreachable'))': /
urllib3.connectionpool: INFO: Starting new HTTP connection (11): localhost
--------------------- >> end captured logging << ---------------------

Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
urllib3                      17      0   100%
urllib3._collections        149      0   100%
urllib3.connection           83      0   100%
urllib3.connectionpool      226      0   100%
urllib3.exceptions           57      0   100%
urllib3.fields               62      0   100%
urllib3.filepost             32      0   100%
urllib3.poolmanager         101      1    99%   183
urllib3.request              29      0   100%
urllib3.response            212      0   100%
urllib3.util                  0      0   100%
urllib3.util.connection      27      0   100%
urllib3.util.request         20      0   100%
urllib3.util.response        17      0   100%
urllib3.util.retry           76      0   100%
urllib3.util.ssl_            55      0   100%
urllib3.util.timeout         48      0   100%
urllib3.util.url             91      0   100%
-------------------------------------------------------
TOTAL                      1302      1    99%
No handlers could be found for logger "nose.plugins.cover"
make: *** [test] Error 1

What do you think ?

ENETUNREACH? What a weird error code to see here. Why would localhost be considered unreachable?

Strange indeed, especially since all the other tests pass. What version of Python and on what platform are you running? Could you try rebooting and running the tests again?

Here is my python version and OS version:
$ python --version
Python 2.7.3
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.8 (wheezy)
Release:        7.8
Codename:       wheezy

Rebooting ? Naupe, no way. You better explain the test that is failing, so I understand why and fix something. I'm a dev, not a user.

OK got it, localhost resolved to ::1, but ipv6 is disabled in my sysctl net.ipv6.conf.all.disable_ipv6=1.
So strange nobody noticed.
So my make test runs like:
$ make test
nosetests
SSS....................................................................S..S..............S.............SSS.....S....S.................................................................................................................................................................
Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
urllib3                      17      0   100%
urllib3._collections        149      0   100%
urllib3.connection           83      0   100%
urllib3.connectionpool      226      0   100%
urllib3.exceptions           57      0   100%
urllib3.fields               62      0   100%
urllib3.filepost             32      0   100%
urllib3.poolmanager         101      1    99%   183
urllib3.request              29      0   100%
urllib3.response            212      0   100%
urllib3.util                  0      0   100%
urllib3.util.connection      27      0   100%
urllib3.util.request         20      0   100%
urllib3.util.response        17      0   100%
urllib3.util.retry           76      0   100%
urllib3.util.ssl_            55      0   100%
urllib3.util.timeout         48      0   100%
urllib3.util.url             91      0   100%
-------------------------------------------------------
TOTAL                      1302      1    99%
No handlers could be found for logger "nose.plugins.cover"
make: *** [test] Error 1

Is it OK ?

urllib3 requires 100% code coverage, so you're going to need a test that will hit line 183 in poolmanager.py.

I did not yet modified the code, that's just a fresh git pull. Howver I can try to test this line, but that's another PR.

Rebooting ? Naupe, no way. You better explain the test that is failing, so I understand why and fix something. I'm a dev, not a user.

Had I known why it was failing, I would have explained it. I'm sorry if my methods for debugging are offensive to you as a dev—I don't know what the state of your machine might be and how it may interact with our test suite.
Good work figuring out the ipv6 thing. No clue why L101 of PoolManager is not being exercised on your environment, please let us know when you've figured it out or how we can help.

@shazow Sry for being a bit rude/direct on this ! (Spent 25 days trying to explain to elasticsearch that I'm a dev and they have to trust my diagnostics, they closed my bugs twice before listening to me, conclusion: I was right, so I'm still a bit nervous on the subject... sorry !)
Crawling the code to search how to modify it cleanly I'm starting to understand you used None to represent an infinite timeout, I'm not a huge find of this, for me None mean "Don't know" (like NULL in SQL). However I'm not going to propose to change this, as this is documented and exposed via the Timeout object.
And everything seems to work:
This gives me a timeout (Running netcat -l -p 9876 aside):
import socket
socket.setdefaulttimeout(2)

import urllib3
http = urllib3.PoolManager(retries=0)
http.request('GET', 'http://localhost:9876/')

But in requests/adapters.py:323 they have a def send(self, request, stream=False, timeout=None, ...
So, not giving a timeout gives us a None here, so, from an urllib3 point of view, an explicitly set infinite timeout. I think the fix may probably be to set timeout=TimeoutSauce.DEFAULT_TIMEOUT here. So my PR will goes to requests, if you think I'm right here.

Crawling the code to search how to modify it cleanly I'm starting to understand you used None to represent an infinite timeout, I'm not a huge find of this, for me None mean "Don't know" (like NULL in SQL). However I'm not going to propose to change this, as this is documented and exposed via the Timeout object.

I think that's more an artifact of socket.settimeout's behaviour. We generally treat None as you described, and False to outright disable something (e.g. retries=False disables retries and raises the original exception). Though we're probably passing the given value down the API stack until it hits socket which does what you described. :/
@Lukasa can speak more to requests' side of things, but what you said sounds about right.

I believe that requests' current handling of timeouts is wrong, but fixing it requires a change in 3.0.0. I think we have an issue somewhere for that, but right now I can't find it. I think the PR in urllib3 is right, urllib3 needs the function. I also think requests needs a separate PR that falls back to the urllib3 default timeout.

I also think requests needs a separate PR that falls back to the urllib3 default timeout.

Sent to the proposed/3.0.0 branch, not to master, in case someone's watching who wants to do this.

Patching requests/adapters.py:323 to get timeout=TimeoutSauce.DEFAULT_TIMEOUT instead of None seems enough for me to fix the whole problem, am I wrong ?

I don't think that'll allow people to change the socket library timeout midway through execution, will it?

That's hard to define what really is "midway through execution", in one sense, socket neither allow it:
sock = socket.socket(af, socktype, proto)
socket.setdefaulttimeout(2)
sock.connect(sa)
# Will timeout (mdk.fr port 9876 if one want to test it)

In urllib3 connections seems created in util/connection.py:74:
sock = socket.socket(af, socktype, proto)

# If provided, set socket level options before connecting.
# This is the only addition urllib3 makes to this function.
_set_socket_options(sock, socket_options)

if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:
    sock.settimeout(timeout)

So, as long as the socket is reused, nobody can change the timeout using setdefaulttimeout, as socket does not support it, and its looks normal.
Next, as long as I reviewed socket._GLOBAL_DEFAULT_TIMEOUT or its identical counterpart in timeout.py DEFAULT_TIMEOUT are used from one end to another, and if they arrive to util/connection.py:74 which is the case, the new timeout will be used, checked using:
import requests
try:
    socket.setdefaulttimeout(2)
    print(requests.get('http://mdk.fr:9876/'))
except Exception as e:
    print(e)

socket.setdefaulttimeout(5)
print(requests.get('http://mdk.fr:9876/'))

I count 2s to get the first timeout and 5s to get the other.
But while reviewing from one end to another, I had to change my first patch to move the s/None/TimeoutSauce.DEFAULT_TIMEOUT one level up, and here is my new patch:
--- a/requests/sessions.py
+++ b/requests/sessions.py
@@ -36,6 +36,8 @@ from .status_codes import codes
 # formerly defined here, reexposed here for backward compatibility
 from .models import REDIRECT_STATI

+from .packages.urllib3.util import Timeout as TimeoutSauce
+
 REDIRECT_CACHE_SIZE = 1000

@@ -390,7 +392,7 @@ class Session(SessionRedirectMixin):
         cookies=None,
         files=None,
         auth=None,
-        timeout=None,
+        timeout=TimeoutSauce.DEFAULT_TIMEOUT,
         allow_redirects=True,
         proxies=None,
         hooks=None,

I'm not sure it's necessary to update every timeout=None, but it's probably a good idea, that make more sense, and probably fix other usages via other methods or more direct calls to underlying classes.
Any though on this ?

Why does the patch move up? We really don't want to import urllib3 into the Session class, so we need to keep it in the HTTPAdapter.

Patch moved up because Session is gilty to set timeout to None, Adapters.send already receive an explicit None as a timeout.
If you don't want to import urllib3 into Session, we may import socket, as socket._GLOBAL_DEFAULT_TIMEOUT is identical to DEFAULT_TIMEOUT urllib3's timeout.py.
But you probably don't want socket imported either, and it make sense (to not depend on it here).

In socket, None mean ∞, and _GLOBAL_DEFAULT_TIMEOUT means "Not set, use the default".
In urllib3, None mean ∞, and DEFAULT_TIMEOUT means "Not set, use the default", and is just the same object than the socket _GLOBAL_DEFAULT_TIMEOUT
In requests, None mean "Not set, use the default" but is wrongfully passed as-is to urllib3, changing its meaning, and there is no ∞, yet using an explicit None or giving nothing (resulting to a default None) will wrongfully mean ∞.

If I'm right here, a proper fix may be to be explicit in requests on how to represent infinite timeout and default timeout, choose a notation, identical or not from the urllib3 / socket one, and map it correctly when talking to urllib3.
We may choose None as "Not set, use the default" (For my point of view, the real meaning), and something else for ∞, maybe -1 but that's not verbose, too magic, and almost meaningless. Maybe 0, same problems. Maybe an explicit sentinel like requests.infinite ? Or why not simply float("inf") ? Natural and explicit.
In another hand we may choose the same mapping as urllib3 or socket, so we need a sentinel to represent the default timeout, either a new one, or reusing their already shared one, but in this last case, it forces us to import either urllib3 or socket.
It's probably possible to neither import urllib3 nor socket, we have to tell apart "timeout not given" and "timeout given", to bind clearly "timeout not given" to "default timeout", exactly like does the socket module:
def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,

So, first things first, let's define how requests represents "default timeout" and "infinite timeout".

I think the sensible thing to do is to have requests define its own internal sentinel object for 'default timeout', and then have the adapter convert it into a urllib3 default timeout.

This seems OK, if we convert just when calling urllib3 is does not force requests to import urllib3, cause where we're calling urllib3 it's already imported.
Do we keep the same semantics of None means infinite, and sentinel means default ? I'm not a big fan of it, only advantage, it binds with urllib3 and sockets more directly, giving more readable code.
In the other end, None clearly does not mean infinite, it clearly mean "unknown", and "unknown" clearly binds to the default, float("inf") clearly mean infinite, so I think there's an open discussion here.

We've dropped GAE so that's no issue any more. Currently we do resolve the default timeout via socket.getdefaulttimeout() for read/connect separately so I think that covers this issue? If there's something else needed from this issue we can open a new one.


Features/sync

[x] Create a sync version of the circuit breaker
[ ] Make the model concistent for sync and async

Codecov Report

Merging #6 (b4867a9) into main (a152813) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##              main        #6    +/-   ##
==========================================
  Coverage   100.00%   100.00%
==========================================
  Files           13        18     +5
  Lines          424       640   +216
==========================================
+ Hits           424       640   +216

Impacted Files
Coverage Δ

src/purgatory/domain/repository.py
100.00% <ø> (ø)

src/purgatory/service/message_handlers.py
100.00% <ø> (ø)

src/purgatory/typing.py
100.00% <ø> (ø)

src/purgatory/__init__.py
100.00% <100.00%> (ø)

src/purgatory/service/circuitbreaker.py
100.00% <100.00%> (ø)

src/purgatory/sync/__init__.py
100.00% <100.00%> (ø)

src/purgatory/sync/circuitbreaker.py
100.00% <100.00%> (ø)

src/purgatory/sync/message_handlers.py
100.00% <100.00%> (ø)

src/purgatory/sync/messagebus.py
100.00% <100.00%> (ø)

src/purgatory/sync/repository.py
100.00% <100.00%> (ø)

... and 1 more

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 a152813...b4867a9. Read the comment docs.

Actually this create to much doe to maintain manually. I cancel this branch.


WIP: Allow ISO 8601 strings as timestamps for select and insert

Not quite ready for review. Currently untestable without applying the fix in #1440 or #1441.

eunit reveals much unhappiness with the AST walking, which doesn't surprise me: I only tested on simple cases. Again, WIP.

Now ready for review, assuming the tests pass.

Needs basho/jam#10 to address one dialyzer error. Other seems unrelated to my work, investigating.

+1 57e05efc

@borshop merge


computeDiff throws 'Illegal Value for LineNumber'

Observed this error in dev console
  ERR Illegal value for lineNumber: Error: Illegal value for lineNumber
    at U.getLineMaxColumn (vscode-file://vscode-app/Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:731:116)
    at vscode-file://vscode-app/Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1069:13046
    at E (vscode-file://vscode-app/Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:12:8975)
    at C.computeDiff (vscode-file://vscode-app/Applications/Visual%20Studio%20Code%20-%20Insiders.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1069:12382)

I was rebasing my branch on main if that matters and had a conflict opened in normal editor (ie not merge editor)
Version: 1.83.0-insider
Commit: ba36ae4dcca57ba64a9b61e5f4eca88b6e0bc4db
Date: 2023-09-29T02:08:02.965Z
Electron: 25.8.2
ElectronBuildId: 23977753
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 22.6.0

https://github.com/microsoft/vscode/blob/4ab7cb4bade896b017c65571541f888889153fc0/src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.ts#L86-L88
I think this is because the text model changed in the meantime.


Why tag-hoc removed?

"is" prop is not working from "Box" and "Flex" now.

I was using the API why it was removed without mentioning in release notes. What is the reason?

Generally I'd recommend keeping layout components separate from HTML semantics, but there are some potentially valid use-cases for the is prop. Removing the is prop was a small oversight on my part, and v3.1.0 should restore that functionality

I have a question related to this. I have to wrap Box to styled(Box)``  to have shallow render .toMatchSnapshot(); without theme props. Am I doing something wrong? Isn't the solution somehow incorrect? Please review.
I like your libraries. I have even created flow-types for styled-system and grid-styled https://github.com/jxnblk/styled-system/issues/104
My fix when you removed the is props 3.0.0
// @flow
import * as React from "react";
import styled from "styled-components";
import type {BoxProps} from "styled-system";

import {Box as BaseBox} from "grid-styled";
const Box: React.ComponentType<BoxProps> = styled(
  ({component = "div", ...props}: BoxProps) => {
    const Box =
      component === "div" ? BaseBox : BaseBox.withComponent(component);

    return <Box {...props} />;
  },
)``;

My code with the is props 3.1.0
// @flow
import * as React from "react";
import styled from "styled-components";

import {Box as BaseBox} from "grid-styled";
import type {BoxProps} from "styled-system";

const Box: React.ComponentType<BoxProps> = styled(
  ({component = "div", ...props}: BoxProps) => (
    <BaseBox {...props} is={component} />
  ),
)``;

export default Box;

Tests when wrapped with styled(Box)``
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`<Box /> defaultProps 1`] = `
Object {
  "children": false,
  "className": "Box-cwadsP litDgj",
}
`;

exports[`<Box /> render 1`] = `

`;

exports[`<Box /> render section 1`] = `

`;

exports[`<Box /> shallow 1`] = `
<Component
  className="Box-cwadsP litDgj"
/>
`;

Tests when I use raw Box
import {Box} from "grid-styled";
export default Box;

/** Tests */
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`<Box /> defaultProps 1`] = `
Object {
  "children": false,
  "className": "sc-bdVaJa iHZvIS",
  "innerRef": undefined,
  "is": "div",
  "theme": Object {
    "breakpoints": Array [
      "40em",
      "52em",
      "64em",
    ],
    "fontSizes": Array [
      12,
      14,
      16,
      20,
      24,
      32,
      48,
      64,
      96,
      128,
    ],
    "space": Array [
      0,
      4,
      8,
      16,
      32,
      64,
      128,
      256,
      512,
    ],
  },
}
`;

exports[`<Box /> render 1`] = `

`;

exports[`<Box /> render section 1`] = `

`;

exports[`<Box /> shallow 1`] = `

`;

Tests are saying that code with the is prop on 3.1.0. Is better because it is not recreating the component styles and changing classNames for every component type.

Not sure I 100% follow, @marcelmokos. The theme is added to defaultProps to make testing easier. It should be showing in the snapshots for Box...


fix launchd provider for chef-16

the refactoring to use the DSL (orthogonal to setting this up as
a unified_mode resource) meant we have to care about lexical scoping
now.

Fixes #9788

Fixes a regression introduced in #9570.


More go vet static checks

Investigtate utility of
go tool vet -shadow -shadowstrict .

Rename logging functions so we can use?
go tool vet -printfuncs Logf:1,Debugf:1,ErrorLogf:1 .

Renaming the logging functions turned out to be not so useful as fs.Logf conflicted with t.Logf in the tests and the -printfuncs function isn't clever enough to tell the difference.
go tool vet -shadow turns out to be too noisy in the general case.  Fixed a few problems though.


Remove qiskit-ignis from the metapackage

Summary
The next qiskit metapackage release (when terra releases 0.21.0) will
no longer include qiskit-ignis as the deprecation cycle has finished.
This commit removes the qiskit-ignis package from the metapackage,
deletes the documentation sections for ignis and adds a prelude
section for the release notes documenting the removal and manual
upgrade steps users might need to do.
Details and comments
We should not merge this until we're ready to release the next minor version of the metapackage (which will correspond with the qiskit-terra 0.21.0 release). This also gives us time to resolve #1485 and also update the migration guide to be more thorough before we drop this.

I think I have a migration guide will be great!

@HuangJunye: there already is a migration guide for Ignis - it's linked in the release note added in this PR, I was more asking about whether we should make that more visible.

I see. I think it would be good to make it more obvious for a while at least (until next release?). I think we had it as one of the side bar item for Aqua migration guide. But Ignis has a lot fewer users than Aqua so I am not sure that is needed.


Openpilot boots to a black screen

EON old school HTC one. EON updated recently to OP .10 worked briefly. Phone (EON) boots and goes to the comma boot screen. after the comma icon, the screen goes completely black.  EON does not communicate with car ('16 civic) white panda and giraffe.

Hi, can you run tmux a and show what it displays when it's in this black state? I would try git pull to see if there's any updates you're missing out on from my fork.

Mine did that too but a git pull fixed it

I don't know how to run tmux. I have a mac and a pc, can you do it with that or so you need a Linux based system?

Getting the same but on an EON gold. tmux a spits out the what's posted below. There might be more above but workbench isn't letting me page up on the command line atm.
Using interface 'wlan0'
OK
3
3
/data/openpilot/launch_chffrplus.sh: line 34: echo: write error: No such device
/data/openpilot/launch_chffrplus.sh: line 63: /proc/irq/184/smp_affinity_list: No such file or directory
/data/openpilot/launch_chffrplus.sh: line 63: /proc/irq/185/smp_affinity_list: No such file or directory
/data/openpilot/launch_chffrplus.sh: line 63: /proc/irq/186/smp_affinity_list: No such file or directory
pid 209's current scheduling policy: SCHED_OTHER
pid 209's current scheduling priority: 0
pid 209's new scheduling policy: SCHED_FIFO
pid 209's new scheduling priority: 52
pid 210's current scheduling policy: SCHED_OTHER
pid 210's current scheduling priority: 0
pid 210's new scheduling policy: SCHED_FIFO
pid 210's new scheduling priority: 52
pid 322's current scheduling policy: SCHED_OTHER
pid 322's current scheduling priority: 0
pid 322's new scheduling policy: SCHED_FIFO
pid 322's new scheduling priority: 52
pid 323's current scheduling policy: SCHED_OTHER
pid 323's current scheduling priority: 0
pid 323's new scheduling policy: SCHED_FIFO
pid 323's new scheduling priority: 52
Result: Parcel(00000000 00000001   '........')
Traceback (most recent call last):
  File "./manager.py", line 18, in <module>
    from common.basedir import BASEDIR
  File "/data/openpilot/common/basedir.py", line 4, in <module>
    from selfdrive.hardware import PC
  File "/data/openpilot/selfdrive/hardware/__init__.py", line 5, in <module>
    from selfdrive.hardware.eon.hardware import Android
  File "/data/openpilot/selfdrive/hardware/eon/hardware.py", line 8, in <module>
    from cereal import log
ImportError: cannot import name 'log' from 'cereal' (unknown location)'

Getting the same but on an EON gold. tmux a spits out the what's posted below. There might be more above but workbench isn't letting me page up on the command line atm.
Using interface 'wlan0'
OK
3
3
/data/openpilot/launch_chffrplus.sh: line 34: echo: write error: No such device
/data/openpilot/launch_chffrplus.sh: line 63: /proc/irq/184/smp_affinity_list: No such file or directory
/data/openpilot/launch_chffrplus.sh: line 63: /proc/irq/185/smp_affinity_list: No such file or directory
/data/openpilot/launch_chffrplus.sh: line 63: /proc/irq/186/smp_affinity_list: No such file or directory
pid 209's current scheduling policy: SCHED_OTHER
pid 209's current scheduling priority: 0
pid 209's new scheduling policy: SCHED_FIFO
pid 209's new scheduling priority: 52
pid 210's current scheduling policy: SCHED_OTHER
pid 210's current scheduling priority: 0
pid 210's new scheduling policy: SCHED_FIFO
pid 210's new scheduling priority: 52
pid 322's current scheduling policy: SCHED_OTHER
pid 322's current scheduling priority: 0
pid 322's new scheduling policy: SCHED_FIFO
pid 322's new scheduling priority: 52
pid 323's current scheduling policy: SCHED_OTHER
pid 323's current scheduling priority: 0
pid 323's new scheduling policy: SCHED_FIFO
pid 323's new scheduling priority: 52
Result: Parcel(00000000 00000001   '........')
Traceback (most recent call last):
  File "./manager.py", line 18, in <module>
    from common.basedir import BASEDIR
  File "/data/openpilot/common/basedir.py", line 4, in <module>
    from selfdrive.hardware import PC
  File "/data/openpilot/selfdrive/hardware/__init__.py", line 5, in <module>
    from selfdrive.hardware.eon.hardware import Android
  File "/data/openpilot/selfdrive/hardware/eon/hardware.py", line 8, in <module>
    from cereal import log
ImportError: cannot import name 'log' from 'cereal' (unknown location)'

@JoelHurd That's weird, looks like something with the openpilot install isn't set up correctly since it can't find a common library. I'd try recloning the fork you're using and then reflashing NEOS if that doesn't work.

@JoelHurd That's weird, looks like something with the openpilot install isn't set up correctly since it can't find a common library. I'd try recloning the fork you're using and then reflashing NEOS if that doesn't work.


Speed-up integration tests

Integration tests take a long time to run (~2hrs). There are areas of improvement, specifically:

Combining several co-related tests into one to save the build, deploy, and integration time.
Combining setting config options into one config set instead of setting each config on its own and waiting for active/idle state after each config set.

another easy win is only pack once instead of once per module


Fixed operations to calculate for references

Operations are not calculating values when references are applied

Coverage increased (+0.01%) to 92.784% when pulling 8c8f557caac622bf3d257180708fdef6cd3bd812 on fix_operations_with_references into aee5f2afaec8454138e5948c8b5cbb63ebf677eb on fireant1.0.


Big  problem

I have a problem that when I run node.py once, it automatically closes and the proxy information file deletes all the proxy data that I added...
Do you have this problem?
If not, how can I fix it?

I checked and the proxy file is automatically deleting data.
I don't know if the proxy is losing connection and being deleted because it says error 22

please use the webshare proxy ! the other website doesnt works sometimes

Buy the proxy from the Given link in the Github in future i will add more as i will test and come to know about

I bought the webshare proxy but got this error:
Connection error: server rejected WebSocket connection: HTTP 403

i am also facing this error last 2 days seems like Nodepay guys in recent update blocked for webshare may be* i need time to find currently i am working on grass node 1.25x booster script

Alright, I'll wait for you to upgrade. Thank you


Disable camera light doesn't work without activating first person mode.

When checking "Disable camera light" it has no effect unless first person is also checked, but vignette removal works correctly.

See #8.

Only the vignette option works with FirstPerson disabled right now.

I see, good to know it seems to be in the works.


cargo-lambda does not pick up rustflags from .cargo/config with --release

I'm trying to compile lambdas with cargo-lambda in --release mode with --cfg tracing_unstable rustc flag enabled and I'm running into an issue.
I have the following config in the workspace root .cargo/config.
[build]
rustflags = ["--cfg", "tracing_unstable"]

When I build with cargo lambda build --release --arm64, I get build errors that imply the flag is not being set (dropping --arm64 does not affect the result). When building without --release, it works fine. cargo build --release seems to also work, so I'd expect cargo lambda build --release to work.
Workaround
Setting RUSTFLAGS works fine. However, it would be more convenient to set the flag in the config file.
RUSTFLAGS="--cfg tracing_unstable" cargo lambda build --release --arm64

I tried to reproduce but couldn't. Could you provide more info? What are the build errors?
I ran the same command each with .cargo/config and .cargo/config.toml just to make sure it wasn't with that.

I’ll try to provide a repo to reproduce the issue. (I’m a bit busy right now so it will take a few days before I get to it)

Here's a repo for you to play with: https://github.com/miikka/cargo-lambda-rustflags-repro/blob/main/src/main.rs
I think I now know what's going on. In --release mode cargo-lambda sets or amends RUSTFLAGS to set the target CPU. This overrides the value from .cargo/config.toml.


infra: run CI on all PRs

Somehow it looks like experimental linting didn't run properly on https://github.com/langchain-ai/langchain/pull/14842 before merging. Looks like it's because check_diffs.yml has some paths defined, and those paths are maybe only matched against the most recent commit, not the whole PR

i believe the CI paths are checked against any file changes in pr, not per commit

Peep https://github.com/langchain-ai/langchain/pull/14842/checks

Hmm wasn't able to reproduce. Maybe something strange happened on that one


Handle IndexShard.getLatestReplicationCheckpoint for closed indices

Closed indices have closed stores and thus access to IndexWriter fails with AlreadyClosedException while fetching ReplicationCheckpoint.
Use case where ReplicationCheckpoint is used for closed indices
Cluster manager fetches shard state of replicas via  TransportNodesListGatewayStartedShards to fetch ReplicationCheckpoint. This checkpoint is then used by cluster manager to select the node containing the highest checkpoint.

Updated the description


OnFileCompleteAsync never gets fired when uploading a file with size 0.

Using version 2.2.1 of tusdotnet.
Step to reproduce:

Create new text file name 'empty.txt' without writing anything to it.
Try to upload the file.

If you need more specification, just poke me.
I've haven't seen the bug reported, nor corrected in the last 2 release.
I'm waiting for you call on it.
Best regards,
Oliver

Haha I love this bug. :D What was your use case when you found this?

Haha I love this bug. :D What was your use case when you found this?

Actually, I've found out the bug out of pure luck. We're using tus library to perform file upload and as I was manually testing it, I accidently tried to send a brand new txt file that was lying around on my desktop and it failed. I've quickly created a bug issue on Jira before forgetting about it (because it's such an edge case). So here I am, a few weeks from then, I've just debugged it down to tus library. I was looking on github to see if it has been reported/fix in the latest release and if the whole project was still alive. I'm glad someone pick up the phone!! Do you need anything to help you reproduce it?
Regards,

Actually, I've found out the bug out of pure luck. We're using tus library to perform file upload and as I was manually testing it, I accidently tried to send a brand new txt file that was lying around on my desktop and it failed. I've quickly created a bug issue on Jira before forgetting about it (because it's such an edge case). So here I am, a few weeks from then, I've just debugged it down to tus library. I was looking on github to see if it has been reported/fix in the latest release and if the whole project was still alive. I'm glad someone pick up the phone!! Do you need anything to help you reproduce it?
Regards,

I think I'm good right now to reproduce it and will look into it as soon as I get the time. Thanks for reporting!

I think I'm good right now to reproduce it and will look into it as soon as I get the time. Thanks for reporting!

Thank you very. I'll update the lib and test it in our env.
Regards'
Oli


Plugin seems to not work with Fritz Firmware 7.29 (Fritzbox 7590ax) and fibre optic connection

Hello,
After installing the plugin and making all the required changes to the Fritzbox configuration I keep getting internal server errors. Is this to do with the firmware 7.29 or the fibre optic connection I am using?
Thank you.

I have the same effect, I tried a 7590 anda 7560 in my mesh, both running 7.29 ( latest version).

I have a 7590 in usage with the WAN Port and a fibre modem with the Setting DSL.
Can you post an error log?

i could solve the problem by moving the homebridge installation away from
the PC ( error) to a Macbook ( no error) .
thanks!
On Sat, May 7, 2022 at 4:51 PM floriangrotz @.***>
wrote:

I have a 7590 in usage with the WAN Port and a fibre modem with the
Setting DSL.
Can you post an error log?
—
Reply to this email directly, view it on GitHub
https://github.com/seydx/homebridge-fritz-platform/issues/285#issuecomment-1120222749,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADMD7INCDTVV23HOWUZHALVIZ7QJANCNFSM5TUBJKDQ
.
You are receiving this because you commented.Message ID:
@.***>

I’m running Homebridge on a raspberry Pi 4 and the problem persists.

An error log may help ;-)

The coming week is going to be a busy one but the one after I’ll be able to deal with the plug-in again and send you an error log. Thanks for looking into this!


Soucemap file URIs incorrect

If I do npm run watch it generates sourcemaps, but at the end of the file it shows the incorrect file.
e.g. at the end of settings.js it points to settings.js.map, however the sourcemap was generated as settings.map.
Either add the extension on the generated file, or remove the extension from the reference to the file.

This is an issue in extension-cli gulpfile.js not setting the filename for sourcemaps. See in node_modules\extension-cli\cli\gulpfile.js line 47.
Add sourcemapFileName so output is:
output: {filename: `${name}.js`, sourceMapFilename: `${name}.map[query]`}

Pull request with this fix sent to the extension-cli repo.


lapack/gonum: add Dgesv

More for completeness than utility because Dgesv doesn't have a trans parameter to solve A^T*X = B.
Please take a look.

Codecov Report

Merging #1688 (c4554c8) into master (2600994) will decrease coverage by 0.02%.
The diff coverage is 36.36%.

:exclamation: Current head c4554c8 differs from pull request most recent head 3416c02. Consider uploading reports for the commit 3416c02 to get more accurate results

@@            Coverage Diff             @@
##           master    #1688      +/-   ##
==========================================
- Coverage   73.28%   73.25%   -0.03%
==========================================
  Files         507      505       -2
  Lines       60019    59982      -37
==========================================
- Hits        43985    43940      -45
- Misses      13553    13564      +11
+ Partials     2481     2478       -3

Impacted Files
Coverage Δ

lapack/gonum/dgesv.go
36.36% <36.36%> (ø)

graph/internal/set/same_appengine.go

mat/offset_appengine.go

graph/iterator/nodes_map_safe.go

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 2600994...3416c02. Read the comment docs.

I took a look at Dgesvx but that's a much more complex call, testing it would be a hell and there are unimplemented dependencies, so I won't go there.


id as default locator

Browser apparently uses CSS selectors as locators by default. That's a good idea, but it would be convenient if element ids could be used directly as well. There are many different reasons why I think it would make sense:

# is a comment character in RF data so CSS selector like #example requires escaping like \#example. This is a bit ugly and the syntax may not be familiar for everyone.
Many (most?) elements to interact with (input fields, buttons, ...) have ids so direct support would be convenient.
SeleniumLibrary supports ids by default. Browser supporting them would ease transition. SeleniumLibrary also supports name attribute by default but that's not so relevant nowadays.

I would assume the implementation could be something like this:

Check does the locator have explicit prefix specifying the type. If yes, just use whatever locator specified.
Check does the locator start with //. If yes, it's an xpath expression.
Check can an element be found by using the locator as an id. If yes, go with it.
Use the locator as a CSS selector.

I believe the current implementation is like above but without step 3. Checking is there an element by an id ought to be so fast that this extra step shouldn't matter. Explaining this special behavior shouldn't be too complicated either. I can write documentation, with examples, if needed. :smiley:

If I understand this correctly the problem is that # is a special comment char in RF.
Problem situation occurs when a user tries to directly use that css id selector without escaping #

Yes. I'd say SeleniumLibrary compatibility would be equally important. I know Browser doesn't try to be drop-in replacement, but compatibility where possible would nevertheless ease transition. Ids just work with SL, I was personally surprised that wasn't the case with B.

Basically 2 problems:

# being a special char
SeleniumLibrary having differing default selector strategy ( id and name + case-by-case something else )

Yeah. I don't think there's a need to emulate SLs default locator strategy fully. I doubt name is anymore that widely used and searching by name and id is likely more complicated and slower than searching by id only.

We are bound pretty much by Playwright choices on selector strategies. Basically only thing we have done is automatic frame piercing because PW did not want to implement this for the asynchronousity reasons.. and in JS land that is in my opinion the sensible default BUT in synchronous RF land frame piercing is fine.
PW selector strategies have evolved during last year and they might do so also in the future.
Also a selector strategy fails only after timeout, this would be a big change to support multiple defaults or extremely time consuming during test execution.
For these reasons, I feel that Id default strategy is a risk and might be maintenance problem in the future.
I think it might be better to check existence of a matching ID if failing in selecting and reporting the matching selector + how to correctly write it in the failure message.

comment vs # is currently failing also already in RF side, so library can not notify user about this before RF already states that not enough params given for the keyword

Could RF actually give a suggestion to the user to escape # in case Keyword has not enough arguments and has a comment? @pekkaklarck

I agree with Mikko about the locator strategy. Way Playwright works is very different than way Selenium works. In Selenium it is easier to build custom functionality, because Selenium is pretty flexible how locating elements works. Selenium API is pretty flexible on this matter and offers many ways. Therefore it is easy to build functionality in the SL level and make it work one wants in the SL  level. But in PW side, things are more hard coded and we took the way that we do not mangle the locator in any way. We just pass it in as is and let the Playwright to do handling. That way we are not tied tightly to PW version when locator strategy evolves.

I thought PW would have a method like getElementById that could be used for a fast check does an element exist or not. Apparently it doesn't and that makes implementing this considerably harder. It would be possible to just add id= prefix to the given locator and pass it to PW, but that has its problems as well. There would be two options how to handle this:

First try with the id= prefix and then without it. If only the latter works, the time spent for the first attempt is all waste. Due to timeouts there can be considerable amount of time wasted so this is probably not a good idea.
Only try with the id= prefix unless the user indicates that some other locator strategy should be used. This is close to how SL handles this (also looking for name is pretty irrelevant) and I personally like that approach. Changing this would have serious problems, though:

Backwards incompatible. Tests using PW's default locator strategy would fail.
Same examples as with plain PW wouldn't work anymore.
CSS as the default strategy has plenty of benefits itself.

Due to both of the above options having severe problems, changing this is most likely not a good idea. What could be done instead:

Mention differences to SL locator strategy in Browser keyword docs. No need to go through all the details, but explaining main differences (especially that the default strategy is different) could help people migrating from SL.
Support : as the locator strategy separator. This would allow usages like id:example that would work the same way with SL and B. Probably more importantly, name:value syntax doesn't clash with Robot's named argument syntax name=value. This was the reason SL got the support for : few years ago (robotframework/SeleniumLibrary#908).

RF being able to warn about incorrect # usage would be rather hard to implement. At the moment the execution side model doesn't know anything about comments and adding this info would be very big task. I doubt it's worth the effort, especially when editors already now show comments using different color.
My main problem with \#example is that it's a bit ugly. Alternative of using id=example is problematic due to looking like the named argument syntax. As I commented above, I'd like id:example more (and can submit an issue about that if you think that's fine and feasible to implement). Anyway, locators shouldn't be used on the test level so somewhat ugly usages like \#example aren't a big problem.

In my tests I am using id=example but also text=example and I agree it looks like named argument. So I would vote for id:example, and text:example.

In Selenium one first finds the element and something with the element. Something like:
element  = driver.find_element_by_name("q")
element.click()

Almost all locator strategies in SeleniumLibrary side are different API calls in Selenium side. Now everything, but many. To simplify with users, SL maps many things as locator strategies.
But in PW side, things works differently, on page do something with the element:
await page.click('id=q');

PW has a locator strategy, which already uses = and : characters for different kind of meanings. Looking at the current PW docs, it might be possible to support : as locator strategy separator, at least with quick look I do not see anything that would be impossible to solve. But it would require lot more testing for us in the library side, so that we keep the library transformation compatible with PW side. For now library just passes locator string as in to PW side and lets PW to handle the locator resolving.
Yes it is an easy choice for us, but also simplifies code and specially documentation in our side. It would difficult to explain to people that in some case, library will do some conversion and in some case it is not converted and passed as in to PW side. It would be hard to see, when something is done in library side and when something is done in PW side. I agree that text=something is not pretty in RF side, but think that it is better than trying to explain users bunch of exceptions to PW docs.

We have discussed about this with Robot Framework Browser team and decision was that we will:

improve documentation about id selectors
improve documentation about differences with SL and Browser

id as a default locator was decided not to be done.
Use of id:s has greatly decreased in web development during the years.
Most of stuff are done with css classes. React (or alternatives) kind of handle the part where you would have need id before.
Basically cases where a value in a field needs to be updated and that field needs to be located.
This means that newer web applications do not so much relay on use of ids.
CSS classes on the other hand are used quite a lot as targeting in styling of components. They also now are in my opinion the base of the most stable selector strategies.
For these reasons and discussions before, I'm now closing this issue.


Define general tree storage trait

It might be desirable to have a general storage trait so all the tree implementations (mountain range, sparse merkle tree, etc) can be purely functional and focus only on algorithm optimization, leaving storage optimization details outside of their scope.
A tree-like storage is usually composed of simple map-like operations for nodes and leaves. They are distinguished because leaves are often some arbitrary data while nodes are tuples of the digest of a given hash implementation.
The issue started with the PR #27 , but it was better to decouple such big topic from the implementation of the SMT itself.
Here is a suggested implementation with comments:
#![no_std]

extern crate alloc;

// cow is optimal to ease the storage requirements on whether or not he will pass references or
// owned values. sometimes the storage might have to fetch the data from async contexts - to not
// force the storage to hold the lock of the context while the data is being processed by the
// consumer, it will have the option to send it as owned. in other cases, the fetch operation is
// trivial (i.e. memory maps such as BTreeMap) so the storage can just return a reference.
use alloc::borrow::Cow;

// the hasher will be the responsible to define the concrete digest implementation for nodes and
// merge them, producing merkle paths.
use winter_crypto::Hasher;

// a tree node is either a single node (likely the root) or a pair with two digests, one
// representing a left value, the other a right value.
pub enum TreeNode<D> {
    Pair { left: D, right: D },
    Single(D),
}

// a tree storage is a common definition of map-like implementations optimized for merkle trees.
pub trait TreeStorage: Sized {
    // defines the index of a leaf in the tree. it is often just a single scalar value whereas a
    // node is indexed by a pair defining both the depth and its index for that depth. the leaf
    // will often have as depth the maximum value allowed for the concrete instance.
    type LeafIndex;

    // usually a pair defining the depth + index of the node for that depth.
    type NodeIndex;

    // an arbitrary error definition defined by the provider.
    type Error;

    // a common hash definition used for the backend. the purpose is to define the digest
    // concretely, allowing the storage to implement its functionality efficiently since it will be
    // aware of the details of the digest - such as bits count, parity, etc.
    type Hasher: Hasher;

    // a leaf that is separated from the nodes of the tree. usually the leaf contains information
    // relevant for the consumers of the tree, while the nodes contains only the required digest to
    // traverse the tree and generate paths.
    type Leaf: Clone;

    // create a new tree with for a given depth.
    fn new_with_depth(depth: u32) -> Result<Self, Self::Error>;

    // fetch the depth of the storage so tree implementers will be able to contruct merkle paths.
    fn depth(&self) -> u32;

    // fetch the fixed empty digest for a given depth, provided the upstream branch for that depth
    // is composed only of empty leaves.
    fn empty_digest(
        &self,
        depth: u32,
    ) -> Result<Option<Cow<'_, <Self::Hasher as Hasher>::Digest>>, Self::Error>;

    // append a new leaf to the storage, replacing a previous value, if applicable. we opt to not
    // return the previous value so the storage can freely discard the replaced value. if the user
    // needs the previous value, he can call `Self::get_leaf` and check the underlying `Option`.
    fn insert_leaf<L>(&mut self, index: Self::LeafIndex, leaf: L) -> Result<(), Self::Error>
    where
        L: Into<Self::Leaf>;

    // fetch a previously inserted leaf. usually the index will be a common reference scalar (i.e.
    // u64).
    fn get_leaf(&self, index: &Self::LeafIndex)
        -> Result<Option<Cow<'_, Self::Leaf>>, Self::Error>;

    // append a new node to the storage, replacing a previous value, if applicable. it follows the
    // same pattern of `Self::insert_leaf`; thus, it will not return the previous value.
    fn insert_node<N>(&mut self, index: Self::NodeIndex, node: N) -> Result<(), Self::Error>
    where
        N: Into<TreeNode<<Self::Hasher as Hasher>::Digest>>;

    // fetch a previously inserted node. usually the index will be a pair defining both the depth,
    // and the index of the node for that depth.
    fn get_node(&self, index: &Self::NodeIndex)
        -> Result<Option<Cow<'_, Self::Leaf>>, Self::Error>;
}

// create a new list of pairs `(depth, digest)` for a provided hasher and a given depth. it is a
// generic implementation to initialize storages and provide the empty digests via
// [`TreeStorage::empty_digest`]. we don't make assumptions on how the user wants to store this
// list so it is returned as a generic iterator, allowing the user to collect it how it best suits
// him.
pub fn compute_empty_digests<H>(depth: u32) -> impl Iterator<Item = (u32, H::Digest)>
where
    H: Hasher,
{
    (0..=depth).scan(H::Digest::default(), move |state, i| {
        Some((depth - i, core::mem::replace(state, H::merge(&[*state; 2]))))
    })
}

Superseded by the current work on TSMT (e.g., #173).


repository discoverability

From a previous use i knew this repository (and really liked it!) by its name ("filebox") and tried to google it ("golang filebox") but didn't find anything. I had to look it up on awesome golang. I'd suggest to add some tags like "filebox" to make this repo easiert to discover.

I second that!

What about renaming the repo to filebox? i feel like a script kiddie every time i read the b0x...

Renaming ist not the worst idea but will break builds.

Renaming ist not the worst idea but will break builds.

It won't Github will auto-redirect to the new repo-url.
For the binaries you could symlink them with a deprecation warning (give them users 1y from now to adapt).

It won't, because Github will auto-redirect to the new repo-url.

Eh, I'm not so sure https://github.com/golang/go/issues/24076#issuecomment-371371558
Github has probably introduced the required custom go-import-specific html meta tags by now.


Set width for hidden placeholder text

A hidden field has no width
See https://phabricator.wikimedia.org/T284176
See #3817

I don't know if this is a good idea, but it should be evaluated on its merits, not ignored because it wasn't evaluated timely. (Though evaluating timely would be best.)


Fix padding issue at the bottom of panels in Talent Connect

Resolve inconsistent padding at the bottom of the Contacts, Jobs, and Companies panels, especially when resizing the window.
Adjust FXML structure to ensure consistent padding in StackPane and VBox elements.
Apply explicit padding and alignment properties to prevent collapsing space on resize.
Ensure a uniform layout for improved user experience , maintaining consistent space around each panel.

Before

After

Nice, does it work for non full sized windows as well?

Nice, does it work for non full sized windows as well?

yes


Adds the possibility to use credentials to download CVE files in an e…

…nterprise environment when no anonymous access is allowed

Closes #199

Thanks - this will be included in 6.0.2.


Adding Contributors  Table

Contributors table in README.md file.

I would like to do it. kindly assign me for this issue.

Check the Readme. We already have a list of contributors. As far as CrossWoc is concerned, we will maintain a separate markdown file for it


Changes made to the icons and text of all the catalogs

Description
The current design for the pattern and filter catalogs are right indented. This PR fixes this issue by making it more appealing. Refer to the screenshots below.
Current Design:

Better Design:

Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

@leecalcote Do you think this is ready to merge? 😃

@meshery/meshery-site-contributors, what do you think?

@Gaurav Chadha @Eeshaan Sawant @Krishna Gupta

@Krishna2323 @eeshaanSA What do you guys think? 😄

I have yet to find that my opinion differ from @GaganpreetKaurKalsi’s perspective. Her review here
Is ideal.

@Anand-Theertha, this works well but it's not the right way to center a item, for the bottom you should use percentage and you should set the left to 50% and add a property "transform: translateX(-50%)" , and pls try to use rem instead of px.

I see there's an open issue for title overflow already.

@GaganpreetKaurKalsi your analysis and suggested path forward in the first two points is spot on.
@gr455 can we stop publishing catalog content sans whitespace in their titles, pretty please? 🥺  // @harkiratsm @Revolyssup

Hello @leecalcote. Yeah! I'll try to do this the right way as Krishna suggested.

// @Anand-Theertha Merge conflicts?

These are the changes that I have made on the master branch for another issue. How can I revert these changes to the ones made in the PR? // @Chadha93

@Anand-Theertha Let's discuss this on the Websites call. Please add this as an agenda item in the meeting minutes if you would. :)

@Anand-Theertha merge conflict...

@Anand-Theertha Updates? Will you continue this PR? Some minor changes...


When can the fourth version be released, too much

When can the fourth version be released, too much

We use github for bugs & work packages. Take this to the forum.


CSV Exporter: Export all instances of all series for ImagingStudies

The CSV Exporter exports only the first instance of the first series for the imaging studies resource. See line. It would be great if all the instances of all the series can be exported. This can be achieved if each row represents an instance of a series of a study. The end-user can then groupBy the Study and SOP UID if required. To do so these UIDs should also be exported.

Happy to take pull request on this if anyone would like to have a go.

@kgoyal1988 @jawalonoski I have provided a fix for this in #837. Review and feedback would be appreciated.

@kgoyal1988 @jawalonoski I have provided a fix for this in #837. Review and feedback would be appreciated.

Fixed with #837

Fixed with #837


feat: Create Squeeze Endpoint

Feat(squeeze): Create Squeeze Endpoint
Description
This PR adds a new endpoint for creating squeeze in the application. The new feature includes the implementation of the SqueezeController, SqueezeService, and necessary DTOs, entities, and a unit test.
How should this be manually tested?

Open Postman.
Set the request to POST.
Enter the URL for your API endpoint, e.g., http://localhost:3008/api/v1/squeeze.
Go to the Body tab and select raw. Then set the format to JSON and enter the JSON body with the required fields.

Example:
{
  "email"<EMAIL_ADDRESS>  "first_name": "John",
  "last_name": "Doe",
  "phone": "08098761234",
  "location": "Lagos, Nigeria",
  "job_title": "Software Engineer",
  "company": "X-Corp",
  "interests": ["Web Development", "Cloud Computing"],
  "referral_source": "LinkedIn"
}

Click Send. You'll get a response depending on the request body.

Success Response:
{
  "status": "success",
  "message": "Your request has been received. You will get a template shortly.",
  "data": {
    "id": "1",
    "email"<EMAIL_ADDRESS>    "first_name": "John",
    "last_name": "Doe",
    "phone": "08098761234",
    "location": "Lagos, Nigeria",
    "job_title": "Software Engineer",
    "company": "X-Corp",
    "interests": ["Web Development", "Cloud Computing"],
    "referral_source": "LinkedIn",
    "created_at": "12-03-2024",
    "updated_at": "12-03-2024"
  }
}

Failure Response:
{
  "status": "error",
  "message": "Failed to submit your request",
  "status_code": 400
}

Tasks
Task:

Implemented SqueezeController with a POST /api/v1/squeeze endpoint to handle squeeze creation.
Developed SqueezeService with a create method for squeeze creation logic.
Created SqueezeRequestDto for request validation.
Added error handling and responses for bad requests.
Unit tests for SqueezeService.

It appears you kinda have a duplicate ticket with #403 you both should sync together avoid duplication of codes, the pr has almost everything as you do have here

It appears you kinda have a duplicate ticket with #403 you both should sync together avoid duplication of codes, the pr has almost everything as you do have here
This is gonna be an issue, @Heba-WebDev assigned it to me though
How are we gonna resolve this

The other for create squeeze has been closed. Please resolve the merge conflicts @DevNickJr

The other pr for create squeeze has been closed. Please resolve the merge conflicts @DevNickJr

I've resolved all . Pls merge @Heba-WebDev  @buka4rill @davidolanrewaju


Add tier argument for the scoring functions except correlation.

This PR is building on top of https://github.com/sinzlab/sensorium/pull/82. We can either ignore the other one or just accept that one first and then this one. (not sure if there are other/better solutions)


Get the information of each cell  at the pre-processing and mapping steps

Hi Chenxu!
I encountered some confusion during the process of reproducing your data, but at the pre-processing and mapping steps, the QC information（eg. total reads, mapped reads） seems to come from the entire sample rather than a single cell.
So, How can I split the sample into single cells individually, or is there another way to get information about individual cells？
Thanks a lot！

Hi @ytang0831,
Yes, the total reads & mapped reads are from all cells within the library in the preprocessing steps.
After preprocessing, the cell IDs are attached to the Readnames of fastq files, you will need to ulitilize these information to do the single-cell QC.

@cxzhu Thanks!

Hi @ytang0831

Yes, you need to merge all sub-libraries as different sub-libraries were sequenced to different sequencing depths and thus may not represent the overall or most deeply sequenced library.
In Supplementary Table2, the "Uniquely_mapped_DNA/RNA_reads" are all mapped reads that uniquely assigned to a single genomic loci before removing duplicates; the "nFragements_DNA" or "UMI_RNA" are the remaining non-PCR duplicates reads. As the PCR duplicates are ~50-60%, it is expected this number is around half of uniquely mapped reads.

@cxzhu Thanks！

By the way, Does merging sub libraries mean merging all fasta.gz togher, then processing or just bind the output matrixes by column?

Hi @ytang0831, Yes, both options work. As a reminder, you need to keep cell_IDs from each sub-library distinguishable from other sub-libraries. Please refer to the README or the paper for more details.

Yes, I did overlook this information, Thanks!


Support uploading a new state-dump.latest.json file to DTL.

Support uploading a new state-dump.latest.json file to DTL.
Also cleans up some debug messages and returns '500' error
rather than '400' on unhandled errors.
Changes to be committed:
modified:   ../packages/data-transport-layer/src/services/main/service.ts

Codecov Report

Merging #528 (ca89a6d) into develop (a563cb1) will increase coverage by 9.95%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #528      +/-   ##
===========================================
+ Coverage    76.09%   86.05%   +9.95%
===========================================
  Files           81       49      -32
  Lines         3037     1936    -1101
  Branches       469      307     -162
===========================================
- Hits          2311     1666     -645
+ Misses         726      270     -456

Flag
Coverage Δ

batch-submitter
?

contracts
86.05% <ø> (ø)

core-utils
?

data-transport-layer
?

message-relayer
?

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

Impacted Files
Coverage Δ

...itter/src/batch-submitter/state-batch-submitter.ts

...ckages/data-transport-layer/src/utils/contracts.ts

packages/data-transport-layer/src/utils/index.ts

.../src/services/l2-ingestion/handlers/transaction.ts

packages/core-utils/src/common/misc.ts

packages/data-transport-layer/src/utils/common.ts

.../l1-ingestion/handlers/sequencer-batch-appended.ts

packages/message-relayer/hardhat.config.ts

...h-submitter/src/batch-submitter/batch-submitter.ts

packages/core-utils/src/common/index.ts

... and 22 more

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 a563cb1...ca89a6d. Read the comment docs.


Windows CI: Azure Pipelines

What was the end-user problem that led to this PR?
When I wanted to start to work on #6841 by adding a few tests, I quickly learned that bundler's test suite does not pass on Windows: #6868
What was your diagnosis of the problem?
I decided to start working on fixing this, and created a few issues already: https://github.com/bundler/bundler/search?q="[Windows+test+failure]"&unscoped_q="[Windows+test+failure]"&type=Issues
But it become clear to me, that the only way to really track the improvement was to add CI for Windows - otherwise opening PRs with improvements would not really make sense.
What is your fix for the problem, implemented in this PR?
This PR first makes it possible to run the test suite on Windows at all by "hiding" a bit of code behind Gem.win_platform? (Spec::Manpages.setup made it super complicated to run on Windows - and is not really necessary to run the test suite).
It also works around a strange bug concerning thor's (a vendored dependency) use of readline which crashes in strange ways on Windows (see #6902). And it adds applies a patch to the readline implementation used on CI (via RubyInstaller ruby) that otherwise blocks the tests (see #6907).
Then it adds CI configuration for Azure Pipelines, a free for OSS CI platform. I configured the Azure Pipelines build to create a JUnit compatible report if the test suite and display it in the "Tests" tab of the build.
Why did you choose this fix out of the possible options?
I think disabling this code for Windows is a valid choice to get the ball rolling, later this will undone and the underlying problem will be fixed.
I chose the workarounds for #6902 and #6907 as I couldn't find a proper bugfix yet - so this will be one of the things to be fixed using Windows CI.
Azure Pipelines is a great CI platform for Windows (and later even multiple platforms if we choose to also run the tests on Linux and macOS).
I chose not to adapt the rake travis task (yet) because it is much more complex than the "simple" bin/rspec test suite run which I could directly execute in the CI scripts of Azure Pipelines.

When Azure announced Ruby support for their Azure CI service, i was quick to jump onboard and looked into seeing if we could use it ourselves. But thinking about it over the past few weeks, i've been wondering if we're better off using AppVeyour instead.
Appveyor is being used by most OSS Ruby projects on Github at the moment, and a lot of those Appveyor pipelines are being maintained by @MSP-Greg, who is a semi-regular contributor to the RubyGems and Bundler projects. If there was ever an issue with testing Bundler on Windows, we would have someone that is quite familiar with both domains to help resolve any issues.
\cc @indirect thoughts?

@colby-swandale

I've been wondering if we're better off using AppVeyor instead.

When Azure Pipelines (AP) was first announced, I thought I'd check into building Ruby trunk there.  AP was new, MSFT obviously has resources far beyond what Travis & Appveyor have, and most importantly, it would run a lot of jobs parallel.
I was trying code based on ruby-loco (largely PowerShell) and the ruby/ruby appveyor build code.  A few notes:

At the time, I had to install everything.  A version of Ruby (you need Ruby to build Ruby), the full MSYS2/MinGW build system, etc.  The code isn't brittle, but it's not something a non-windows user would want to jump into.

Both Appveyor (AV) & Travis 'hold' environment variables as one moves between pre-defined script steps.  AP does not.  So there's a bit of monkeying around with using a AP specific API to share them between script steps.

There were a lot of other quirky things, like logs showing absolute time, not relative, etc.  I even had to build a special package of 7-zip, since the normal windows installer had an issue.  At the time, there was not a lot of pre-installed software, at least compared to AV.

Form bouncing around encouraging and helping with AV tests, the main issue I come across is the 'it takes too long'.  AP will help with that.  But, if I ported some repos over to AP, and the script doubled or tripled in size, most people would run away very quickly, as it's just too different from Travis.
I'd certainly like to see bundler testing on Windows.  I looked at it a long time ago, now I don't recall the difference between the 'bundler' testing in RG, vs the testing here.  I haven't really looked at this PR, nor what work @janpio and @hsbt may have done.
Off topic:
I think many people in the OSS community don't like seeing a big guy (MSFT) rolling over a small guy (AV).  AV has always been receptive to changes, but it takes forever to update their images (Ruby 2.6 isn't available yet), and they don't allow most accounts to test parallel (although Ruby CI runs two or three).  At one point I posted several suggestions for AP, and several MSFT people were participating.  They are supporting AP and they do want to see it adopted by the OSS community....
Sorry for the long post.  I'm interesting in helping with whatever.

I support trying out Azure Pipelines and see how it goes. We have a volunteer, @janpio, who has already done this setup and was (hopefully, still is) willing to fix the test suite on Windows after this. I volunteer to set this up on the bundler organization so @janpio can proceed with his work!

I'm also happy to try out Azure Pipelines, since it seems like it will help us with our goal of running the Bundler tests on Windows. Once we have passing tests, we can compare Appveyor and Azure and see which one meets our needs best in the long run.
I've added bundler/bundler on GitHub to bundler/bundler on Azure.

Thanks for adding the Azure Pipelines integration @indirect.
As I removed the rspec_junit_formatter dependency (see https://github.com/bundler/bundler/pull/6899/files/485bbf1e2b32ed603dbd0c790adf35607b8c9ac5#diff-6ac292c8e0d03698a046322989f7e57c for the ongoing discussion about that), Azure Pipelines picked up the commit and ran it - and gave this PR a big red "X". The Azure Pipelines tests of course will fail until I have all the Windows bugs fixes, which can take quite some time I suppose. Should I investigate if it is possible to configure Azure Pipelines to report "success" although the tests are failing? (That could maybe keep all the PRs and commits with a green checkmark, although Azure Pipelines has test failures on the builds.)

Maybe if you add || exit 0 for now after the command that runs the specs, it will have that effect for now. We can remove it after we manage to get it green.

That worked @deivid-rodriguez ❤
Only the rspec_junit_formatter problem/suggestion left: https://github.com/bundler/bundler/pull/6899/files/485bbf1e2b32ed603dbd0c790adf35607b8c9ac5#diff-6ac292c8e0d03698a046322989f7e57c

@janpio does the version of the gem matter? When you put it in the gemspec, you said ~> 0.2.3, which means >= 0.2.0 && < 0.3.0. When you run gem install rspec_junit_formatter, it seems to be installing version 0.4.1.
On my machine, I was able to make it work by re-ordering the require. The script is currently running this command:
ruby bin/rspec --format progress -r rspec_junit_formatter --format RspecJunitFormatter -o rspec/bundler-junit-results.xml

When I changed it to this command instead, it seemed to work:
ruby -r rspec_junit_formatter bin/rspec --format progress --format RspecJunitFormatter -o rspec/bundler-junit-results.xml

Maybe give that a shot?

does the version of the gem matter?

Nope, that was just a copy paste thing from fastlane where we seem to be using that version.

When I changed it to this command instead, it seemed to wor

That did indeed work ❤ But why?

 The change loads the gem before our script
disables additional gem loads.

On Feb 10, 2019, at 11:35 PM, Jan Piotrowski<EMAIL_ADDRESS>wrote:
does the version of the gem matter?
Nope, that was just a copy paste thing from fastlane where we seem to be using that version.
When I changed it to this command instead, it seemed to wor
That did indeed work ❤ But why?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Understood, it's always in the details ;)

And that's a wrap, everything is working as it should now (I think):

https://dev.azure.com/bundler/bundler/_build/results?buildId=9&view=ms.vss-test-web.build-test-results-tab
https://dev.azure.com/bundler/bundler/_build/results?buildId=9
I cleaned up the commits a bit, so this is good to merge now 🚀
Thanks everyone that gave feedback and helped me finish this.

Maybe you noticed that the "bundler.bundler" check is still in status "In progress - This check has started..." although on Azure Pipelines it has finished after ~40 minutes just fine. This seems to be a problem on Azure Pipelines caused by the numbers of tests failures of our build. I am in contact with their development team, who are working on a fix right now. Will update when there is news on this.

👋  Apologies for the problem with the check not getting updated from Azure Pipelines.  We had a bug in the check updater code when making a call to our Test Case Manager API.  We sorted that out and we think that things should be 👍 from now on.

Thanks @ethomson for the support with this, the Azure Pipelines check is indeed green now and this PR is finally really ready to merge 🚀
(I so want to work on decreasing that "671 failing tests" number!)

@bundlerbot r+


Missing NotBeDecoratedWith assertion for types

There does not appear to be any way to assert that a type is NOT decorated with a certain attribute.
The wiki shows how to test for the presence of an attribute (see https://github.com/dennisdoomen/fluentassertions/wiki#type-method-and-property-assertions), but there is no way to test for the absence of an attribute. NotBeDecoratedWith already exists as a MemberInfoAssertion and a PropertyInfoAssertion, but not as a TypeAssertion.
Also see this related question on StackOverflow - http://stackoverflow.com/questions/24070898/fluent-assertions-thatarenotdecoratedwith.
I would propose adding NotBeDecoratedWith and ThatAreNotDecoratedWith for types.

You're right. We forgot about that one. I would welcome a PR for that ;-)

Just submitted a pull request - my first one on GitHub, so I welcome any feedback.

Hi @zkestenbaum. Are you still going to finish your PR?

Yes, thanks for following up. Will finish this shortly.


New versions are missing on hex.pm

Hi,
I was trying to fix a compilation issue with CQEx (that in turn uses cqerl) and I've noticed that Mix fails to pull re2 after https://github.com/matehat/cqerl/issues/158 since version 1.9.1 is not published on hex.pm (last published version is 1.8.9).
Can you please publish all the latest versions? Thanks in advance.

Releases published by @rbino, closing


USB Device Stack Initialization from the App

Is your enhancement proposal related to a problem? Please describe.
The current USB Device stack initializes at the POST_KERNEL stage. This creates two issues:

Callbacks like the usb_update_sn_string_descriptor callback are very limited to using serials that are already in flash/ram. This means an application cannot, for example, provide a serial number after reading it from an external EEPROM. It essentially just shifts the Serial from the KConfig to C code. Several posts online have users showing this exact issue. The USB Device Stack documentation does not describe that this is a limitation, but one discovers it quickly with some testing.

In some situations, the USB stack should only be initialized after some external hardware is ready, such as a Hub or clocks that are platform specific. But since the USB Device stack is designed as "fire and forget" at the start, it's not possible, or it requires stopping the stack and restarting it which is not desirable

Describe the solution you'd like
A PR has been created with the change:
https://github.com/zephyrproject-rtos/zephyr/pull/70767
This change enables an optional configuration that prevents the USB stack from initializing at the POST_KERNEL stage, where the application will then call the initialization function itself at the right time. This gives developers the flexibility to start the stack when they need to, while leaving previous behavior the same for those who don't
Describe alternatives you've considered
The usb init function could be made external to the module instead of adding a new function. The function was added to keep everything as compatible as possible
Additional context
Examples of issue occurring for zephyr users:
https://devzone.nordicsemi.com/f/nordic-q-a/92440/settings-subsystem-init-fails-nvs-backend
https://devzone.nordicsemi.com/f/nordic-q-a/90475/nrf5340---runtime-change-of-iserialnumber

(Not opposing the change, just considering alternatives.)
Would it be enough to only have possibility to tweak the initialization priorities of USB device, filesystems and storage device drivers? USB device is initialized on POST_KERNEL with priority CONFIG_APPLICATION_INIT_PRIORITY which is by default 90. CONFIG_APPLICATION_INIT_PRIORITY is used by few other things as well, so the configurability is not 100%, but could be still enough for most cases? Quite many drivers can be initialized by that time.
The linked tickets mentioned two different cases. One problem seems to be in getting a serial number from settings subsystem on POST_KERNEL time. To make that work, the underlying backend device must be ready. So if the initialization time of it can be modified to happen earlier than USB init, then I think getting the setting from it should be possible.
The second ticket was about getting a serial number from littlefs. Could this change help in such use cases: https://github.com/zephyrproject-rtos/zephyr/pull/67896? Getting serial number kind of data from file system was one driver of that change.

It may help but still limiting.
For example, in our case we needed to read the serial using GPIOs, which meant setup and reading. That's done easily in the application.
The second case you mentioned is the more extreme case where the PR changes make sense. Starting a file system reading files, etc can't really be achieved anywhere else.

Any movement on this? I don't see why there's resistance to this feature. There's at least 2 different entities (I saw a 3rd one somewhere) having an issue with how this operates.

The change is very limited and can be even more limited to the same item
It resolves an issue that's happening in practice
It does not impact anyone else


allow pulling extra images

Motivation

Makes it easier to pull additional images such as the prebuilt agent image without needing another step.
Changes

Allow pulling extra images in pull_images script.
Workflow

⚠ Create your PR as draft ⚠
Work on you PR until the CI passes (if something not related to your task is failing, you can ignore it)
Mark it as ready for review

Test logic is modified? -> Get a review from RFC owner. We're working on refining the codeowners file quickly.
Framework is modified, or non obvious usage of it -> get a review from R&P team

:rocket: Once your PR is reviewed, you can merge it!
🛟 #apm-shared-testing 🛟
Reviewer checklist

[ ] Relevant label (run-parametric-scenario, run-profiling-scenario...) are presents
[ ] If PR title starts with [<language>], double-check that only <language> is impacted by the change
[ ] No system-tests internal is modified. Otherwise, I have the approval from R&P team
[ ] CI is green, or failing jobs are not related to this change (and you are 100% sure about this statement)
[ ] A docker base image is modified?

[ ] the relevant build-XXX-image label is present

[ ] A scenario is added (or removed)?

[ ] Get a review from R&P team

What are the image you'd like to preload? I get the idea, but it seems more natural to improve image_list to parse and extract the base image, rather than hardcoding thosei mage everywhere. If for some reason the base image of the agent changes, it'll be painful to fix.
Let me propose a fix into that direction to see it it's a good fit

-> DataDog/system-tests/pull/2693

and -> https://github.com/DataDog/system-tests/blob/5cb4c4bf21bc84076bba76b8f034319a24d00704/docs/internals/end-to-end-life-cycle.md

What are the image you'd like to preload? I get the idea, but it seems more natural to improve image_list to parse and extract the base image, rather than hardcoding thosei mage everywhere. If for some reason the base image of the agent changes, it'll be painful to fix.

Not sure I understand the concern, as if the way to ship the test agent is with system_tests:datadog/agent then that shouldn't change over time. On the other hand, your PR seems to be adding a lot of complexity through parsing etc. Is that really necessary if we can just reference the current image name instead? This is also more flexible in that if more images are needed for any reason then they can be added without having to make a change to system tests.

Not sure I understand the concern, as if the way to ship the test agent is with system_tests:datadog/agent then that shouldn't change over time.

system_tests:datadog/agent is a local name built by the command ./build.sh, it's not published. The base image for this one is either datadog/agent or datadog/agent-dev:master-py3, and #2693 added those (among the base image for weblog) in the pull step.

For now pulling additional images doesn't quite make sense as the images are not published in the way I thought, so closing this for now.


Resolve some Python 3 compatability issues with decoding

Python 3 threw a UnicodeDecodeError during table creation— using six to explicitly declare encoding scheme as utf-8 fixes the problem while preserving Python 2 functionality.

Hi,
Python 2.6+ includes Python 3's I/O stack. It's just not used by the built-in open.
Use from io import open, which is essentially a no-op on Python 3.

@encukou I don't think that actually works in this case. There's a comment in load.py that says, # CSV module only works with bytes on 2 and only works with text on 3!.
Python 2.7.13 (default, Jan 12 2017, 17:59:37)
[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> import io
>>> w = csv.writer(io.open("/tmp/test", "w", encoding="utf-8"))
>>> w.writerow(["hi"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: write() argument 1 must be unicode, not str
>>> w.writerow([u"hi"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: write() argument 1 must be unicode, not str


HuBot won't join a private room

We're running hubot on heroku created via the https://hubot-factory.herokuapp.com/ yesterday. We have the bot in a public room and everything is fine and cool but today we tried to invite the bot to a private room and nothing happened. We've restarted the bot a number of times and it doesn't appear to resolve the issue.
Currently the bot is online and listening in the public room, but marked offline and not listening in the private room. Also, in the one-on-one chat the bot is always marked offline, even though it will respond.
thanks!
Here is a related issue i found but the resolution doesn't work: https://github.com/github/hubot/issues/78

As far as I can tell the issue in that other post is that Hubot doesn't automatically join a private room when invited. It should certainly join the room when restarted however (assuming it was given permission).
Do you have HUBOT_HIPCHAT_ROOMS set to @All (or not set)? In the log do you see it printing out a message about joining the room?

sorry if that related issue has confused things. in my situation when i invite my bot to a private room it doesn't automatically join and when i restart it still does not join. i can't get it to join the room period. the bot name appears in the user list as "offline" even though the bot is online in a public room. i have the HUBOT_HIPCHAT_ROOMS set to two rooms, comma separated, the bot is in one room but not the other. changing the order of the rooms in that list does not make a difference either.

Very strange. There's nothing different required to join the different types of rooms. Everything is handled on our end. Let me check our logs and see what's up.

thanks. i can supply you account-specific information if you'd like.

In our logs I only see the bot trying to join the room that's working. Doesn't look like its even trying to join the second one. Do  you see Hubot logging info about joining both rooms?

haha got it working. thanks so much for your help, simple typo made late at night then propagated via copy/paste:
HUBSPOT_HIPCHAT_ROOMS

Oops! It should have tried joining all the rooms in this case though... unless you still had HUBOT_HIPCHAT_ROOMS defined elsewhere.

I am having this same issue with the latest hubot and hubot-hipchat release 1.0.1

If you provide your bot's login id (e.g. 123_456) and the name of the room that its failing to join I can check the logs for you. Shoot me an email at<EMAIL_ADDRESS>or send a PM here on GitHub if you don't want to post publicly.

I have a hubot configured in heroku and it trying to connects to our cloude Hipchat server, but my hubot is not visible in my hipchat room and its not responding.i checked the heroku logs. its telling "hubot is joining the room" , but nothing in the room.
But i can see bot in my chat session:https:///account/sessions
My heroku config:
heroku config:add HUBOT_ADAPTER_NAME=hipchat
heroku config:add HUBOT_ADAPTER_USER=
heroku config:add<EMAIL_ADDRESS>heroku config:add HUBOT_HIPCHAT_PASSWORD="password"
heroku config:add HUBOT_HIPCHAT_ROOMS=All
Is this Config Vars are correct and anything more i need to add?
Do you have any idea how to invite the Bot in Hipchat room?

export<EMAIL_ADDRESS>export HUBOT_HIPCHAT_PASSWORD=xxxxxxx
export HUBOT_HIPCHAT_JOIN_PUBLIC_ROOMS=false
export<EMAIL_ADDRESS>with this vars all working fine: when I mention with @ the bot it join the
room.
hope this help
On Mon, Sep 21, 2015 at 4:40 PM, sreenath886<EMAIL_ADDRESS>wrote:

I have a hubot configured in heroku and it trying to connects to our
cloude Hipchat server, but my hubot is not visible in my hipchat room and
its not responding.i checked the heroku logs. its telling "hubot is joining
the room" , but nothing in the room.
But i can see bot in my chat session:https:///account/sessions
My heroku config:
heroku config:add HUBOT_ADAPTER_NAME=hipchat
heroku config:add HUBOT_ADAPTER_USER=
heroku config:add<EMAIL_ADDRESS>heroku config:add HUBOT_HIPCHAT_PASSWORD="password"
heroku config:add HUBOT_HIPCHAT_ROOMS=All
Is this Config Vars are correct and anything more i need to add?
Do you have any idea how to invite the Bot in Hipchat room?
—
Reply to this email directly or view it on GitHub
https://github.com/hipchat/hubot-hipchat/issues/6#issuecomment-142002389
.

Hi,
Thanks for the replay.Bot is active in chat session.i can see my boat in below url
https://www.hipchat.com/account/sessions
But its not joining in any rooms [both private and public].I Set the<EMAIL_ADDRESS>what you mentioned above.
Any idea about this issue?
Am i want to invite to bot to join in my rooms and any idea how to invite the Bot in Hipchat room?
--Sreenath


Table titles are not shown in single column/responsive mode.

When on a device with a small screen, the tables collapse into a narrower form which should display the title and content side by side. However, this is done with attr(data-title) in the content value for td:before, even though there are no such attributes in the generated td elements.
This could be a failing on the part of webuni/commonmark-table-extension, as they might have exposed this functionality in the generator before and have since removed it. However, if that is the case, perhaps that functionality should be re-instated, either by a fork or a pull request to that repository.

You're right, this is actually a leftover of the theme. This feature was never completely implemented.
I will see if we can either, remove the styling, or add the feature to commonmark-table-extension

The responsive table feature was removed


[ISSUE #5880]Remove useless attribute TOPIC_KEY_SPLITTER in MessageClientIDSetter class

Make sure set the target branch to develop
What is the purpose of the change
close #5880
Brief changelog
XX
Verifying this change
XXXX
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Codecov Report

Merging #5881 (69dfa66) into develop (5b64ffc) will decrease coverage by 0.02%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             develop    #5881      +/-   ##
=============================================
- Coverage      42.43%   42.40%   -0.03%
+ Complexity      8277     8272       -5
=============================================
  Files           1066     1066
  Lines          73671    73671
  Branches        9630     9630
=============================================
- Hits           31261    31239      -22
- Misses         38460    38482      +22
  Partials        3950     3950

Impacted Files
Coverage Δ

...rocketmq/common/message/MessageClientIDSetter.java
73.80% <ø> (ø)

...controller/impl/DefaultBrokerHeartbeatManager.java
82.27% <0.00%> (-3.80%)
:arrow_down:

...a/org/apache/rocketmq/broker/BrokerController.java
43.29% <0.00%> (-2.86%)
:arrow_down:

...pache/rocketmq/remoting/common/RemotingHelper.java
15.38% <0.00%> (-2.31%)
:arrow_down:

...mq/client/impl/consumer/RebalanceLitePullImpl.java
69.86% <0.00%> (-1.37%)
:arrow_down:

...mq/store/ha/autoswitch/AutoSwitchHAConnection.java
70.00% <0.00%> (-1.36%)
:arrow_down:

...apache/rocketmq/store/ha/GroupTransferService.java
92.30% <0.00%> (-1.29%)
:arrow_down:

...che/rocketmq/acl/plain/PlainPermissionManager.java
78.22% <0.00%> (-0.54%)
:arrow_down:

...ent/impl/consumer/DefaultLitePullConsumerImpl.java
68.59% <0.00%> (-0.47%)
:arrow_down:

...he/rocketmq/client/impl/consumer/ProcessQueue.java
61.23% <0.00%> (-0.45%)
:arrow_down:

... and 7 more

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