instability around factory creates

eris-pm/tests/fixtures/app17 is our grandmaster factory test.
a factoryfactory creates a factory which creates a contract that is tested.
this test has some stability which is at the vm level. same contracts, same chain setup, etc. everything else is isolated but with divergent results.
the sometimes failing test is:
Executing Job                                 getGSFactoryAddr
Too little data                           end=0
                                          len=20
                                         name=
                                         next=32
                                       retBlk=32
                                        start=0
                                         type=
                                          val=
Too little data; usually means a bad return from a contract

The error message means that eris-pm is expecting a return from the contract but that does not happen.
To recreate:
have eris-cli on develop
pull eris-pm on develop (or mergeCompilers branch if that is not merged)
current eris-db:0.11.3 image
Comment out line 180 in eris-pm/tests/test.sh (so you can examine the chain logs after failure).
run:
tests/test.sh app17 && tests/test.sh app17 && tests/test.sh app17 && tests/test.sh app17
or however many times you need to.

also saw an intermittent failure on app13
Testing eris-pm using fixture =>	app13/

* tests binding the abi of a get set contract using contract naming pattern and explicit abi fields.
* tests instance: all functionality to deploy all contracts from a single file

Performing action. This can sometimes take a wee while
Executing Job                                 defaultAddr
Executing Job                                 addr1
Executing Job                                 addr2
Executing Job                                 addr2_pub
Executing Job                                 setStorageBase
Executing Job                                 deployGSFactory
Contract Address                              7155638E88C07C2B4DC6948F36859CD5BD588B9A
Transaction Hash                              9A9666E1D11617FD2A4CEA14C45AB5BA92841436
Contract Address                              5DF4020089F17E0A12BC2063B04E68A09B711CFE
Transaction Hash                              363D8127839204DDA7DEA42391F418A138D06241
Executing Job                                 createGSContract
Return Value
Executing Job                                 getGSAddr
Too little data                           end=0
                                          len=20
                                         name=
                                         next=32
                                       retBlk=32
                                        start=0
                                         type=
                                          val=
Too little data; usually means a bad return from a contract

Container eris_interactive_eris_service_app13_tmp__1 exited with status 1

Stopping (may take a few seconds)             keys
Removing file                            file=/root/.eris/chains/eris-pm-tests-21397b8b7355.toml

I have it consistently failing now on a different error type; asserting the (Factory)Addr

so in eris-compilers we use a map to store the solc contracts
then we loop over the map and put it in an array, and thats whats returned to epm
but looping over a map is non-determinisitc
so when epm goes to deploy, whether it deploys one or all, it will be in a different order every time
so either we need to be smarter with the return object, or we want to preserve order in the compiler (probably not)
and it seems like we also shouldn't be doing "Deploy all" on app17 at least
but we do need to specify which of the three contracts we do want to deploy

Shouldn't the map just be replaced with an ordered object?

that only solves some of the problem. epm still needs to be smarter about which contracts from that list/map it deploys. in this case, it should have only deployed one but seemed to deploy all. which one needs to be specified more intelligently, and may be better to use names than order

i was explicitly testing all here.
this is why the odds were failing. the evens were "smarter" according to E's definition.

confirmed to be an epm bug.

Putting this here since just came across it and wanted to document:
Output from a failed run looked like:
Performing action. This can sometimes take a wee while
Executing Job                                 defaultAddr
Executing Job                                 addr1
Executing Job                                 addr2
Executing Job                                 addr2_pub
Executing Job                                 setStorageBase
Executing Job                                 deployGSFactory
Contract Address                              7155638E88C07C2B4DC6948F36859CD5BD588B9A
Transaction Hash                              9A9666E1D11617FD2A4CEA14C45AB5BA92841436
Contract Address                              5DF4020089F17E0A12BC2063B04E68A09B711CFE
Transaction Hash                              363D8127839204DDA7DEA42391F418A138D06241
Executing Job                                 createGSContract
Return Value
Executing Job                                 getGSAddr
Too little data                           end=0
                                          len=20
                                         name=
                                         next=32
                                       retBlk=32
                                        start=0
                                         type=
                                          val=
Too little data; usually means a bad return from a contract

The test fails on getGSAddr, but the actual problem seems to be the step before, where Return Value is empty for createGSContract.
Presumably, the return value should be the address of this new GSContract, so let's find out why we never got (maybe the contract was never created).
First off, we need more logs. Using --debug with eris pks do gives us that. Here's the relevant output (from a different run than the above one):
Executing Job                                 createGSFactory
Type                                          Call
Fixing Variables =>                       res=8A7ADFC12D7A157824AD4B36780A658E2B01FC49
                                          var=deployGSFactoryFactory
ABI Specification (Formulate)                 [{"constant":false,"inputs":[],"name":"getLast","outputs":[{"name":"GSAddr","type":"address"}],"type":"function"},{"constant":false,"inputs":[],"name":"create","outputs":[{"name":"GSAdd
r","type":"address"}],"type":"function"}]
Packing Call via ABI                arguments=[]
                                function name=create
Nothing to pack
Calling                                  data=efc81a8c
                                  destination=8A7ADFC12D7A157824AD4B36780A658E2B01FC49
No return from contract.
Return Value
Executing Job                                 getGSFactoryAddr
Type                                          QueryContract
Fixing Variables =>                       res=8A7ADFC12D7A157824AD4B36780A658E2B01FC49
                                          var=deployGSFactoryFactory
ABI Specification (Formulate)                 [{"constant":false,"inputs":[],"name":"getLast","outputs":[{"name":"GSAddr","type":"address"}],"type":"function"},{"constant":false,"inputs":[],"name":"create","outputs":[{"name":"GSAddr","type":"address"}],"type":"function"}]
Packing Call via ABI                arguments=[]
                                function name=getLast
Nothing to pack
Decoding Raw Result                       res=
                                          abi=GSFactoryFactory
ABI Specification (Decode)                    [{"constant":false,"inputs":[],"name":"getLast","outputs":[{"name":"GSAddr","type":"address"}],"type":"function"},{"constant":false,"inputs":[],"name":"create","outputs":[{"name":"GSAddr","type":"address"}],"type":"function"}]
Too little data                           end=0
                                          len=20
                                         name=
                                         next=32
                                       retBlk=32
                                        start=0
                                         type=
                                          val=
Too little data; usually means a bad return from a contract

So the job  createGSFactory is calling the contract 8A7ADFC12D7A157824AD4B36780A658E2B01FC49, specifically the create method, which has the function id efc81a8c (function id is the first four bytes of the data sent to an ethereum contract).
Let's go search for 8A7ADFC12D7A157824AD4B36780A658E2B01FC49 in the chain logs, so we can see what went wrong when we try to call it. Here are some places that address shows up:
When it's created:
^[[34mINFO^[[0m[03-07|21:16:54] Created new contract<PHONE_NUMBER>000000000000008A7ADFC12D7A157824AD4B36780A658E2B01FC49 ^[[34mmodule^[[0m=state
^[[34mINFO^[[0m[03-07|21:16:54] Code for this contract:<PHONE_NUMBER>60978060106000396000F360606040526000357C01000000000000000000000000000000000000000000000000000000009004806360FE47B11460415780636D4CE63C14605757603F565B005B605560048080359060200190919050506078565B005B606260048050506086565B6040518082815260200191505060405180910390F35B806000600050819055505B50565B600060006000505490506094565B9056 ^[[34mmodule^[[0m=state
(1) (00000000)<PHONE_NUMBER>000000000000008A7ADFC12D7A157824AD4B36780A658E2B01FC49 (code=0) gas:<PHONE_NUMBER> (d)<PHONE_NUMBER>60978060106000396000F360606040526000357C01000000000000000000000000000000000000000000000000000000009004806360FE47B11460415780636D4CE63C14605757603F565B005B605560048080359060200190919050506078565B005B606260048050506086565B6040518082815260200191505060405180910390F35B806000600050819055505B50565B600060006000505490506094565B9056

When it's called:
^[[34mINFO^[[0m[03-07|21:16:56] Account has permission                   ^[[34mmodule^[[0m=state ^[[34maddress^[[0m=1266E9536C8CF38AE1EC38B7A3552DC263456991 ^[[34mperm^[[0m=call
^[[34mINFO^[[0m[03-07|21:16:56] Out account: Account{8A7ADFC12D7A157824AD4B36780A658E2B01FC49:<nil> B:8765 C:151 S: P:{Base:<PHONE_NUMBER>10; Set:<PHONE_NUMBER>1111 []}} ^[[34mmodule^[[0m=state
^[[34mINFO^[[0m[03-07|21:16:56] Calling contract<PHONE_NUMBER>000000000000008A7ADFC12D7A157824AD4B36780A658E2B01FC49 with code<PHONE_NUMBER>6000357C01000000000000000000000000000000000000000000000000000000009004806360FE47B11460415780636D4CE63C14605757603F565B005B605560048080359060200190919050506078565B005B606260048050506086565B6040518082815260200191505060405180910390F35B806000600050819055505B50565B600060006000505490506094565B9056 ^[[34mmodule^[[0m=state
^[[34mINFO^[[0m[03-07|21:16:56] Code for this contract:<PHONE_NUMBER>6000357C01000000000000000000000000000000000000000000000000000000009004806360FE47B11460415780636D4CE63C14605757603F565B005B605560048080359060200190919050506078565B005B606260048050506086565B6040518082815260200191505060405180910390F35B806000600050819055505B50565B600060006000505490506094565B9056 ^[[34mmodule^[[0m=state
(1) (00000000)<PHONE_NUMBER>000000000000008A7ADFC12D7A157824AD4B36780A658E2B01FC49 (code=151) gas:<PHONE_NUMBER> (d) EFC81A8C
(pc) 0   (op) PUSH1          (st) 0     => 0x0000000000000000000000000000000000000000000000000000000000000060
(pc) 2   (op) PUSH1          (st) 1     => 0x0000000000000000000000000000000000000000000000000000000000000040
(pc) 4   (op) MSTORE         (st) 2     => 0x0000000000000000000000000000000000000000000000000000000000000060
(pc) 5   (op) PUSH1          (st) 0     => 0x0000000000000000000000000000000000000000000000000000000000000000
(pc) 7   (op) CALLDATALOAD   (st) 1     => 0xEFC81A8C00000000000000000000000000000000000000000000000000000000
(pc) 8   (op) PUSH29         (st) 1     => 0x0000000100000000000000000000000000000000000000000000000000000000
(pc) 38  (op) SWAP1          (st) 2     => [2] EFC81A8C00000000000000000000000000000000000000000000000000000000
(pc) 39  (op) DIV            (st) 2<PHONE_NUMBER>44153893642889178342637841560964329563846489711067256640281426001920 /<PHONE_NUMBER>7150639794667015087019630673637144422540572481103610249216 =<PHONE_NUMBER><PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C)
(pc) 40  (op) DUP1           (st) 1     => [1] 0x00000000000000000000000000000000000000000000000000000000EFC81A8C
(pc) 41  (op) PUSH4          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000060FE47B1
(pc) 46  (op) EQ             (st) 3<PHONE_NUMBER>000000000000000000000000000000000000000000000060FE47B1 ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0
(pc) 47  (op) PUSH1          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000000000041
(pc) 49  (op) JUMPI          (st) 3     ~> false
(pc) 50  (op) DUP1           (st) 1     => [1] 0x00000000000000000000000000000000000000000000000000000000EFC81A8C
(pc) 51  (op) PUSH4          (st) 2     => 0x000000000000000000000000000000000000000000000000000000006D4CE63C
(pc) 56  (op) EQ             (st) 3<PHONE_NUMBER>00000000000000000000000000000000000000000000006D4CE63C ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0
(pc) 57  (op) PUSH1          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000000000057
(pc) 59  (op) JUMPI          (st) 3     ~> false
(pc) 60  (op) PUSH1          (st) 1     => 0x000000000000000000000000000000000000000000000000000000000000003F
(pc) 62  (op) JUMP           (st) 2     ~> 63
(pc) 63  (op) JUMPDEST       (st) 1
(pc) 64  (op) STOP           (st) 1    ^[[34mINFO^[[0m[03-07|21:16:56] Successful execution                     ^[[34mmodule^[[0m=state
^[[32mNOTE^[[0m[03-07|21:16:56] VM call complete                         ^[[32mmodule^[[0m=state ^[[32mcaller^[[0m="VMAccount{0000000000000000000000001266E9536C8CF38AE1EC38B7A3552DC263456991 B:99999999960003 C: N:7}" ^[[32mcallee^[[0m="VMAccount{0000000000000000000000008A7ADFC12D7A157824AD4B36780A658E2B01FC49 B:17530 C:60606040526000357C01000000000000000000000000000000000000000000000000000000009004806360FE47B11460415780636D4CE63C14605757603F565B005B605560048080359060200190919050506078565B005B606260048050506086565B6040518082815260200191505060405180910390F35B806000600050819055505B50565B600060006000505490506094565B9056 N:0}" ^[[32mreturn^[[0m= ^[[32merr^[[0m=nil
?8A7ADFC12D7A157824AD4B36780A658E2B01FC49

Note how the execution is very short and just STOPs. Solidity contracts have functions which are called by passing a 4 byte function id.
The first thing the contract does is try to match the id against its available functions. Here, the id is EFC81A8C (the id for create).
But note, it checks it against two other values:
102 (pc) 46  (op) EQ             (st) 3<PHONE_NUMBER>000000000000000000000000000000000000000000000060FE47B1 ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0
103 (pc) 47  (op) PUSH1          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000000000041
104 (pc) 49  (op) JUMPI          (st) 3     ~> false
105 (pc) 50  (op) DUP1           (st) 1     => [1] 0x00000000000000000000000000000000000000000000000000000000EFC81A8C
106 (pc) 51  (op) PUSH4          (st) 2     => 0x000000000000000000000000000000000000000000000000000000006D4CE63C
107 (pc) 56  (op) EQ             (st) 3<PHONE_NUMBER>00000000000000000000000000000000000000000000006D4CE63C ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0

So this contract has functions with ids 60FE47B1 and 6D4CE63C. So let's take a look at the ABI files for our contracts and try and find what these ids correspond to.
minty@vultr$ ls
00A5FAD29488BB83EE80F112B9F92D4CAD7AA4DA  6B94925D299B1BFE3BD8B2DD5C2E240F352FEEC4  A81B2648212F93E9E21225F24390DCAEE465C9B1  GSContract  GSFactory  GSFactoryFactory
minty@vultr$ pwd
/home/minty/goApps/src/github.com/eris-ltd/eris-pm/tests/fixtures/app17/abi
minty@vultr$ cat GSFactoryFactory | jq . | grep name
    "name": "getLast",
        "name": "GSAddr",
    "name": "create",
        "name": "GSAddr",
minty@vultr$ eris-abi pack --input=file GSFactoryFactory getLast
4d622831

minty@vultr$ eris-abi pack --input=file GSFactoryFactory create
efc81a8c

minty@vultr$ cat GSFactory | jq . | grep name
    "name": "getLast",
        "name": "GSAddr",
    "name": "create",
        "name": "GSAddr",
minty@vultr$ eris-abi pack --input=file GSFactory getLast
4d622831

minty@vultr$ eris-abi pack --input=file GSFactory create
efc81a8c

minty@vultr$ cat GSContract | jq . | grep name
        "name": "x",
    "name": "set",
    "name": "get",
        "name": "retVal",
minty@vultr$ eris-abi pack --input=file GSContract set
argument count mismatch: 0 for 1
minty@vultr$ eris-abi pack --input=file GSContract set 50
60fe47b10000000000000000000000000000000000000000000000000000000000000032

minty@vultr$ eris-abi pack --input=file GSContract get
6d4ce63c

minty@vultr$

Aha! So 60FE47B1 and 6D4CE63C are set and get, respectively, which means we deployed the GSContract when we thought we deployed GSFactoryFactory.
This means there's some non-determinism somewhere.
Take a look at deploy code (eris-pm/perform/jobs_contracts.go):
}

	// loop through objects returned from compiler
	switch {
	case len(resp.Objects) == 1:
		log.WithField("path", p).Info("Deploying the only contract in file")
		r := resp.Objects[0]
		if r.Bytecode != nil {
			result, err = deployContract(deploy, do, r, p)
			if err != nil {
				return "", err
			}
		}
	case deploy.Instance == "all":
		log.WithField("path", p).Info("Deploying all contracts")
		for _, r := range resp.Objects {
			if r.Bytecode == nil {
				continue
			}
			result, err = deployContract(deploy, do, r, p)
			if err != nil {
				return "", err
			}
		}
	default:
		log.WithField("contr", deploy.Instance).Info("Deploying a single contract")
		for _, r := range resp.Objects {
			if r.Bytecode == nil {
				continue
			}
			if strings.ToLower(r.Objectname) == strings.ToLower(deploy.Instance) {
				result, err = deployContract(deploy, do, r, p)
				if err != nil {
					return "", err
				}
			}
		}
	}

From the logs we see that we triggered Deploying all contracts. This is first of all wrong - we only wanted to deploy GSFactoryFactory, not the other two contracts also in that solidity file.
And the result from deploying the last contract is what we return.
But more worryingly, the order is obviously randomized, since sometimes we deploy the right contract and sometimes we don't. But resp.Objects is list, which is ordered,
and there's no maps in eris-pm that might be relevant (remember iteration over maps is non-deterministic). So let's look at compilers code.
Grepping for map shows us the Solc.Contracts map, and we eventually discover this gem (eris-ltd/eris-compilers/server.go):
                respItemArray := make([]ResponseItem, 0)

                for contract, item := range solcResp.Contracts {
                        b, err := hex.DecodeString(strings.TrimSpace(item.Bin))
                        if err == nil {
                                respItem := ResponseItem{
                                        Objectname: strings.TrimSpace(contract),
                                        Bytecode:   b,
                                        ABI:        strings.TrimSpace(item.Abi),
                                }
                                respItemArray = append(respItemArray, respItem)
                        } else {
                                fmt.Errorf("Error decoding contract string\t=>\n%v\n", err)
                                return &Response{
                                        Objects: nil,
                                        Error:   fmt.Sprintf("%v", err),
                                }
                        }
                }

which is randomly ordering the solcResp.Contracts (a map) into the respItemArray!
TADA!
905 (pc) 46  (op) EQ             (st) 3<PHONE_NUMBER>000000000000000000000000000000000000000000000060FE47B1 ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0
887 (pc) 57  (op) EQ             (st) 3<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 1
557 (pc) 41  (op) PUSH4          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000060FE47B1
558 (pc) 46  (op) EQ             (st) 3<PHONE_NUMBER>000000000000000000000000000000000000000000000060FE47B1 ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0
559 (pc) 47  (op) PUSH1          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000000000041
560 (pc) 49  (op) JUMPI          (st) 3     ~> false
561 (pc) 50  (op) DUP1           (st) 1     => [1] 0x00000000000000000000000000000000000000000000000000000000EFC81A8C
562 (pc) 51  (op) PUSH4          (st) 2     => 0x000000000000000000000000000000000000000000000000000000006D4CE63C
563 (pc) 56  (op) EQ             (st) 3<PHONE_NUMBER>00000000000000000000000000000000000000000000006D4CE63C ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000EFC81A8C = 0
557 (pc) 41  (op) push4          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000060fe47b1
558 (pc) 46  (op) eq             (st) 3<PHONE_NUMBER>000000000000000000000000000000000000000000000060fe47b1 ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000efc81a8c = 0
559 (pc) 47  (op) push1          (st) 2     => 0x0000000000000000000000000000000000000000000000000000000000000041
560 (pc) 49  (op) jumpi          (st) 3     ~> false
561 (pc) 50  (op) dup1           (st) 1     => [1] 0x00000000000000000000000000000000000000000000000000000000efc81a8c
562 (pc) 51  (op) push4          (st) 2     => 0x000000000000000000000000000000000000000000000000000000006d4ce63c
563 (pc) 56  (op) eq             (st) 3<PHONE_NUMBER>00000000000000000000000000000000000000000000006d4ce63c ==<PHONE_NUMBER>0000000000000000000000000000000000000000000000efc81a8c = 0


Issue with mocking Trait

I have the following trait as part of my Play Application and the corresponding ScalaTest:
trait MyProcess[A] {
  type B
  type C
  type D
  def stage1(s: String): B
  def stage2(b: B)(implicit e: ExecutionContext, app: Application, a: A): Future[C]
  def stage3(c: C)(implicit e: ExecutionContext, app: Application, a: A): Future[JsResult[D]]
  def process(s: String)(implicit e: ExecutionContext, app: Application, a: A): Future[JsResult[D]] = {
    val b = stage1(s)
    val f_d = for {
      c <- stage2(b)
      d <- stage3(c)
    } yield d
    f_d
  }
}

class TestController extends PlaySpec with Results with MockFactory {
  "MyController" must {
    " testing for method process" in {
      running(FakeApplication()) {

        implicit val context = scala.concurrent.ExecutionContext.Implicits.global
        implicit val s = "implicit String"
        implicit val currentApp = play.api.Play.current

case class TestParms(s: String)
abstract class TestProcessor extends MyProcess[TestParms] {
          type B = String
          type C = String
          type D = String
        }

        implicit val t = stub[TestProcessor]
        t.stage1(_: String).when(token).returns(testToken)

        (t.stage2(_: String)(_: ExecutionContext, _: Application, _: TestParms)).when(token, context, currentApp, tp).returns({
          Future.successful(stage2String)
        })
        (t.stage3(_: String)(_: ExecutionContext, _: Application, _: TestParms)).when(token, context, currentApp, tp).returns({
          Future.successful(Json.fromJson[String](Json.parse(stage3String)))
        })
}
}
}
}

My expectation is to set this stub into another scala class and test the overall process flow. When I attempt to mock the stage1 method this way, the compiler gives the following error:
overloaded method value when with alternatives:   (resultOfAfterWordApplication: org.scalatest.words.ResultOfAfterWordApplication)Unit <and>   (f: => Unit)Unit  cannot be applied to (String)	TestFBController.scala	/play-scala/test/controllers

Why am I not able to stub the first method when I am able to stub the rest of the 2 by just following the syntax of the method?

Forgive me, @santoshv98, but I'm confused. The error that you're getting is from ScalaTest, not ScalaMock. It appears to suggest that something about the structure of how you're using PlaySpec (which I assume derives from ScalaTests's WordSpec?) is incorrect. I can't see anything relating to your mock or the stage1 method in the error?
Perhaps you could cut this down to a minimal example so we can see the wood for the trees and resubmit if you're still experiencing an error?

Yes, I pulled this outside the playspec into a flatspec and it worked.
t.stage1(_: String).when(token).returns(testToken)
I will post the code and let you know so that you can see whats happening.


extended version of Firmata

a extended version of Firmata is available at https://github.com/robvanlopik/Firmata. The main changes are:

added support for i2c, stepper and encoder
limited thread safety
announcements for change of digital input and end of stepper motion
access to capability request and analog mapping
supports configurable Firmata
easier to add new devices (accelstepper and one-wire are on my list)
added a description of the API

I tested with different Arduino boards from a Windows system through a USB connection.
I hope you will take a look at the code and see whether it is worthy to replace the present version.
cheers
Rob van Lopik

Please also note that I added an extensive description of the API in the file pharofirmata-api.md

Thanks @robvanlopik for contribution. I think you are most experienced here with Firmata protocol. So I will just merge it.
I look briefly into the code but I do not have time to think deeply for the feedback.
Just few notes which may inspire you:

pharofirmata-api.md deserves to be directly inside Firmata class comment. It will make it available from the image.
it's sad that we do not have tests (I know there were nothing before)
Firmata class looks really fat. One approach for refactoring could be request methods which construct bytearray and send it to the port. I would try to reify request objects here. It will allow write small unit tests to check that generated binary data are correct. Also I have an old idea to build small Slot based library for such low level programming to simplify definition of binary structures. For example method:

i2cRead: anI2Caddress count: aNumber register: aRegister
	| request |
	request := ByteArray new: 9.
	request
		at: 1 put: FirmataConstants startSysex;
		at: 2 put: FirmataConstants i2cRequest;
		at: 3 put: (anI2Caddress bitAnd: 16r7F);
		at: 4 put: 2r00001000; "single read"
		at: 5 put: (aRegister bitAnd: 16r7F);
		at: 6 put: (aRegister bitShift: -7);
		at: 7 put: (aNumber bitAnd: 16r7F);
		at: 8 put: ((aNumber bitShift: -7) bitAnd: 16r7F);
		at: 9 put: FirmataConstants endSysex .
	self port nextPutAll: request

It can be converted to class:
FirmataRequest subclass: #FirmataI2CReadRequest
	slots: { #address => Firmata2CAddressSlot. #numberOfReads => ByteSlot. #register => ByteSlot size: 2. #dataSize => ByteSlot size: 2}

Notice FirmataRequest will be a subclass of ByteArray. And all slots will encode read/write into defined bytearray positions.
For example Firmata2CAddressSlot will encapsulate "anI2Caddress bitAnd: 16r7F". There are many users of this logic in the code and it will bring very simple and efficient solution to such duplications.
ByteSlot here is a simplest case which converts given number into given number of bytes (1 by default, or #size: ). And in addition it can validate data (that given number is really just a one byte). There can be other special slots if ByteSlot is not enough (like FirmataI2CRegistrySlot).
At the end there will be #sendRequest: method:
Firmata>>sendRequest: aFirmataRequest
    self port
       nextPut: FirmataConstants startSysex;
       nextPutAll: aFirmataRequest;
       nextPut: FirmataConstants endSysex


Add posquit0's dotfiles example

Hello, my dotfiles could be a good reference to other developers :)
It covers many CLI commands(vim, neovim, zsh, bash, tmux, screen, ctags, wget, curl, git and more) and GUI X environments!

Thanks for the contribution!


Example in README fails to compile and run

I've been attempting to use this library in a project but have been having no success due to unsatisfied trait bounds on ijson::IValue. This is reproducible in your own example code in the README.md file.
The output from Cargo:
error[E0599]: the method `expand` exists for struct `IValue`, but its trait bounds were not satisfied
  --> src/main.rs:23:28
   |
23 |     let expanded_doc = doc.expand::<context::Json<IValue>, _>(&mut loader).await?;
   |                            ^^^^^^ method cannot be called on `IValue` due to unsatisfied trait bounds
   |
  ::: /Users/user/.cargo/registry/src/github.com-1ecc6299db9ec823/ijson-0.1.3/src/value.rs:58:1
   |
58 | pub struct IValue {
   | -----------------
   | |
   | doesn't satisfy `IValue: Document<_>`
   | doesn't satisfy `IValue: generic_json::Json`
   |
   = note: the following trait bounds were not satisfied:
           `IValue: generic_json::Json`
           which is required by `IValue: Document<_>`

This error is happening with the nightly toolchain on mac:
rustc 1.59.0-nightly (5531927e8 2021-12-16)

My assumption is that this has something to do with the version of generic-json that version 0.5.0 of this crate uses. Any help or guidance on how to handle this issue would be welcome. Thank you.

Hey, sorry for the delay. json-ld is independent from th JSON implementation, you can use serde_json::Value or ijson::IValue or whatever as long as it implements the generic-json::Json trait. For ijson, this implementation ig provided by the generic-json crate by enabling the ijson-impl feature. Did you enable it?
There is a similar implementation for serde_json with the serde_json-impl feature.

generic-json has been dropped in favor of json-syntax in the new version 0.9.1. It caused too many issues, had a tedious API, wasn't compatible with every major JSON implementations and required unstable trait aliases. Compatibility with ijson will have to be discussed on the json-syntax repo.
Now all the examples in the README are working.


Why are filter and extract considered legacy

According to the standardisation scope document, both filter and extract functions are excluded from openCypher. Besides keeping the openCypher language smaller, I wonder what is the reason behind this.
I believe both functions are just syntax sugar and can be expressed with UNWIND and the collect aggregation function. This means that any capable openCypher implementation should be able to implement these functions quite easily.
I used the example from the documentation's source code:
CREATE
  (alice:Person:Developer {name:'Alice', age: 38, eyes: 'brown'}),
  (bob {name: 'Bob', age: 25, eyes: 'blue'}),
  (charlie {name: 'Charlie', age: 53, eyes: 'green'}),
  (daniel {name: 'Daniel', age: 54, eyes: 'brown'}),
  (eskil {name: 'Eskil', age: 41, eyes: 'blue', array: ['one', 'two', 'three']}),
  (alice)-[:KNOWS]->(bob),
  (alice)-[:KNOWS]->(charlie),
  (bob)-[:KNOWS]->(daniel),
  (charlie)-[:KNOWS]->(daniel),
  (bob)-[:MARRIED]->(eskil)

filter
The filter function can be expressed using UNWIND, WITH, WHERE and collect.
Original query:
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, filter(x IN a.array WHERE size(x) = 3) AS threeLetterNumbers

Without filter:
MATCH (a)
WHERE a.name = 'Eskil'
UNWIND a.array AS x
WITH a, x
WHERE size(x) = 3
RETURN a.array, collect(x) AS threeLetterNumbers

extract
The extract function can be expressed using UNWIND and collect.
Original query:
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
RETURN extract(n IN nodes(p) | n.age) AS extracted

Without extract:
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
UNWIND nodes(p) AS n
RETURN collect(n.age) AS extracted

Edit: I believe the all and any functions can also be expressed using WITH, UNWIND, WHERE and collect.

Both of these expressions were replaced by list comprehensions, which is both shorter and fits better with the language overall. Both filter() and extract() look a lot like functions, but they do not take arguments the same way normal functions do.
Extract as list comprehension
extract(var IN list | expr) --> [var IN list | expr]

Filter as list comprehension:
filter(var IN list WHERE predicate) --> [var IN list WHERE predicate | var]

Thanks for the quick reply. So, for the record, queries using filter, extract, any or all can be rephrased in standard openCypher as:
filter
Original:
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, filter(x IN a.array WHERE size(x) = 3) AS threeLetterNumbers

List comprehension:
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, [x IN a.array WHERE size(x) = 3] AS threeLetterNumbers

extract
Original:
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
RETURN extract(n IN nodes(p) | n.age) AS extracted

List comprehension:
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
RETURN [n IN nodes(p) | n.age] AS extracted

any
Original:
MATCH (a)
WHERE a.name = 'Eskil' AND ANY (x IN a.array WHERE x = 'one')
RETURN a

List comprehension:
MATCH (a)
WHERE a.name = 'Eskil' AND size([x IN a.array WHERE x = 'one']) > 0
RETURN a

all
Original:
MATCH p =(a)-[*1..3]->(b)
WHERE a.name = 'Alice' AND b.name = 'Daniel' AND ALL (x IN nodes(p) WHERE x.age > 30)
RETURN p

List comprehension:
MATCH p =(a)-[*1..3]->(b)
WHERE a.name = 'Alice' AND b.name = 'Daniel' AND size([x IN nodes(p) WHERE x.age > 30]) = size(nodes(p))
RETURN p

Hi Mats, EXTRACT and FILTER are still the current EBNF snapshot: https://s3.amazonaws.com/artifacts.opencypher.org/cypher.ebnf is it intentional or just forgotten?

@romanskas You're right. That isn't correct, and should be fixed.


20200522: Ensure one fastq set per lane index

Describe the issue

As a data wrangler, I would like to test the integrity of the dataset I'm wrangling by ensuring that not more than one set of fastq files is assigned to one lane index. This could extend the ensure_lane_index test or be created as a new test.
Specifically I would like the test to ensure that only one read1, read2, index1, index2 occurs within one lane index of one library prep.
Test template

Test name: Ensure one fastq set per lane index

Test Description: This test ensures that there is a one-to-one relationship between read index and lane index. Within one library prep there can only be one read1, read2, index1, index2 per lane.

Cypher query:
I don't know cypher but attempt at pseudo code

For each library prep
    For each lane index
        count of read index type should be =< 1

** Acceptance criteria**

[ ] The test has been reviewed
[ ] The test has been implemented into the graph_test_set folder

https://github.com/ebi-ait/ingest-graph-validator/pull/36
I have done something similar that I think also solves #31 and #30
The query concatenates process_id, lane_index and read_index, creating a combination that should always be unique.
Then counts how many distinct files within each of these combinations and returns process_id, number of files and an error message if that number is above 1

@ami-day tagging you here because I think this also solves your tickets

Will be done soon :)


Move metrics handler to webserver

What changes are proposed in this pull request?
Support prometheus servlet to all the server, include master, worker, job master, job worker, alluxioProxy.
Why are the changes needed?
With this PR, we can easily to get prometheus style metrics from all the servers.
Does this PR introduce any user facing changes?
Add /metrics/json and /metrics/prometheus servlet to all servers of alluxio.

Codecov Report

Merging #13889 (2da0a16) into master (88a9434) will decrease coverage by 19.08%.
The diff coverage is 50.00%.

@@              Coverage Diff              @@
##             master   #13889       +/-   ##
=============================================
- Coverage     36.56%   17.47%   -19.09%
+ Complexity     7419     2664     -4755
=============================================
  Files          1386     1386
  Lines         80696    80688        -8
  Branches       9817     9818        +1
=============================================
- Hits          29504    14098    -15406
- Misses        48650    65347    +16697
+ Partials       2542     1243     -1299

Impacted Files
Coverage Δ

...uxio/client/file/cache/LocalCacheFileInStream.java
0.00% <0.00%> (-75.17%)
:arrow_down:

...main/java/alluxio/master/AlluxioMasterProcess.java
66.66% <ø> (-0.74%)
:arrow_down:

...main/java/alluxio/worker/AlluxioWorkerProcess.java
67.47% <ø> (-1.03%)
:arrow_down:

...n/java/alluxio/master/AlluxioJobMasterProcess.java
0.00% <ø> (ø)

...n/java/alluxio/worker/AlluxioJobWorkerProcess.java
0.00% <ø> (ø)

...er/common/src/main/java/alluxio/web/WebServer.java
78.78% <100.00%> (-8.72%)
:arrow_down:

...mon/src/main/java/alluxio/shell/CommandReturn.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...mon/src/main/java/alluxio/util/ExceptionUtils.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...n/src/main/java/alluxio/wire/AlluxioProxyInfo.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../src/main/java/alluxio/wire/AlluxioMasterInfo.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 550 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 2427c98...2da0a16. Read the comment docs.

@LuQQiu Please take a look at this PR, thank you.

@yuzhu PTAL if you have time, otherwise this PR will be merged after two days, thanks!

@maobaolong  LGTM.
Btw, do we need to update documentation to tell users about metrics on job master/ job worker? Do we have any metrics there yet?

good question... i do think we have some job service related metrics? but not quite sure if how they used

@LuQQiu @yuzhu Although we didn't have any job service related metrics now, but we have some jvm, memory, thread, gc related metrics as common metrics.

alluxio-bot, merge this please!

@LuQQiu Thanks Lu


Adding BoxToVolumesOperator, VolumesToBoxOperator and BoxOperator

Adding BoxToVolumesOperator, VolumesToBoxOperator and BoxOperator
Description
The Box Operator provides a comprehensive solution for authenticating with Box and efficiently managing file transfers between Box and Databricks Unity Catalog (UC) volumes. It includes classes for downloading and uploading files, leveraging JWT authentication via BoxAuthenticator.
Related Issue
Issue created to add Box Operator:
GitHub Issue #137
Motivation and Context
We previously had Box to S3 and S3 to Box operators available in Airflow NGAP. Upon migrating to Databricks, this functionality was missing. We required a solution to download files from Box to Unity Catalog (UC) Volumes and upload files from UC Volumes to Box.

This operator solves the problem by enabling the download and upload of files between Box and Unity Catalog (UC) Volumes in Databricks.
How Has This Been Tested?

We have thoroughly tested this in a Databricks Notebook using appropriate parameters for various scenarios.

All tests are documented in the  test_box_operator.py  file, which covers the definitions of all functions used for downloading and uploading files between Box and Unity Catalog (UC) Volumes in Databricks. We achieved approximately 90% code coverage in our  test_box_operator.py   file.

As this is a new feature, we do not anticipate it affecting other areas of the code.
Screenshots (if appropriate):

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Thanks Surya Teja Jagatha for all the contribution for this Operators.

@madhusudan3 Can you also please add  the relevant libraries here for BoxOperator - https://github.com/Nike-Inc/brickflow/blob/6141b5c4c899cf5a9884c4f78e2de0a7ca568004/brickflow/engine/task.py#L1109

@asingamaneni added libraries in task.py and updated the test cases accordingly, please review it again and let me know, how it looks, thanks.


[clusteragent/admission] Create a separate package for each webhook and define a common interface for them

What does this PR do?
Refactors the admission controller webhooks code.
This is a proposal to organize the code a bit. This should not change the behavior of any of the webhooks.
The diff is a bit big, so here are the changes to make the review easier:

Each webhook is now in a dedicated package. That way, maintainers of each of them can focus mostly on what's inside the package. There's also a common package with helpers used in multiple webhooks.
There's a new interface that the webhooks need to implement. The interface contains the information needed to set up the webhook (name, endpoint, whether it's enabled, etc.).
The interface allows us to simplify the code in cmd/cluster-agent/subcommands/start/command.go, pkg/clusteragent/admission/controllers/webhook/controller_v1.go, and pkg/clusteragent/admission/controllers/webhook/controller_v1beta1.go, because we no longer need to set up things individually for each webhook.
The rest is mostly making some functions public so that they can be used in the new packages.

Describe how to test/QA your changes
Make sure that the webhooks still work. A quick test for them should be enough, just check that they inject something when they're enabled.
I believe that everything changed here is covered by unit tests.

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

@clamoriniere I've rebased the PR on top of main. The main change since you reviewed is that now the agent sidecar injection also follows the new structure defined. I've addressed one of your comments in a new commit.

/merge


Support Validation in @KafkaListener

Inject a LocalValidatorFactoryBean (if present) into the payload resolver.
https://stackoverflow.com/questions/52526886/validating-spring-kafka-payloads/52545873#52545873

Duplicates https://github.com/spring-projects/spring-kafka/issues/816


Update luci.py device tracker to work with OpenWRT 18.06

Description:
Updating to use new APIs in OpenWRT 18.06 (which was released yesterday).
The old net.arptable method is no longer available so device tracking will be broken in HA for users who upgrade their router to the latest.
Related issue (if applicable): fixes #8508
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox.

If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[x] New dependencies have been added to the REQUIREMENTS variable (example).
[x] New dependencies are only imported inside functions that use them (example).
[x] New or updated dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[x] New files were added to .coveragerc.

If the code does not interact with devices:

[x] Tests have been added to verify that the new code works.

cc previous editors to this device tracker @pvizeli @fingon

Hello @fbradyirl,
When attempting to inspect the commits of your pull request for CLA signature status among all authors we encountered commit(s) which were not linked to a GitHub account, thus not allowing us to determine their status(es).
The commits that are missing a linked GitHub account are the following:

af9871e9b695d16d8edeeed5d313ee900b15ee14 - This commit has something that looks like an email address (fibrady@cisco.com). Maybe try linking that to GitHub?.

Unfortunately, we are unable to accept this pull request until this situation is corrected.
Here are your options:

If you had an email address set for the commit that simply wasn't linked to your GitHub account you can link that email now and it will retroactively apply to your commits. The simplest way to do this is to click the link to one of the above commits and look for a blue question mark in a blue circle in the top left. Hovering over that bubble will show you what email address you used. Clicking on that button will take you to your email address settings on GitHub. Just add the email address on that page and you're all set. GitHub has more information about this option in their help center.

If you didn't use an email address at all, it was an invalid email, or it's one you can't link to your GitHub, you will need to change the authorship information of the commit and your global Git settings so this doesn't happen again going forward. GitHub provides some great instructions on how to change your authorship information in their help center.

If you only made a single commit you should be able to rungit commit --amend --author="Author Name<EMAIL_ADDRESS>
(substituting Author Name and<EMAIL_ADDRESS>for your actual information) to set the authorship information.
If you made more than one commit and the commit with the missing authorship information is not the most recent one you have two options:

You can re-create all commits missing authorship information. This is going to be the easiest solution for developers that aren't extremely confident in their Git and command line skills.
You can use this script that GitHub provides to rewrite history. Please note: this should be used only if you are very confident in your abilities and understand its impacts.

Whichever method you choose, I will come by to re-check the pull request once you push the fixes to this branch.

We apologize for this inconvenience, especially since it usually bites new contributors to Home Assistant. We hope you understand the need for us to protect ourselves and the great community we all have built legally. The best thing to come out of this is that you only need to fix this once and it benefits the entire Home Assistant and GitHub community.
Thanks, I look forward to checking this PR again soon! :heart:

Hello @fbradyirl,
When attempting to inspect the commits of your pull request for CLA signature status among all authors we encountered commit(s) which were not linked to a GitHub account, thus not allowing us to determine their status(es).
The commits that are missing a linked GitHub account are the following:

e2faa4a7393dac9a16c544cc08990c2ec60ea113 - No email found attached to the commit.
af9871e9b695d16d8edeeed5d313ee900b15ee14 - This commit has something that looks like an email address (fibrady@cisco.com). Maybe try linking that to GitHub?.

Unfortunately, we are unable to accept this pull request until this situation is corrected.
Here are your options:

If you had an email address set for the commit that simply wasn't linked to your GitHub account you can link that email now and it will retroactively apply to your commits. The simplest way to do this is to click the link to one of the above commits and look for a blue question mark in a blue circle in the top left. Hovering over that bubble will show you what email address you used. Clicking on that button will take you to your email address settings on GitHub. Just add the email address on that page and you're all set. GitHub has more information about this option in their help center.

If you didn't use an email address at all, it was an invalid email, or it's one you can't link to your GitHub, you will need to change the authorship information of the commit and your global Git settings so this doesn't happen again going forward. GitHub provides some great instructions on how to change your authorship information in their help center.

If you only made a single commit you should be able to rungit commit --amend --author="Author Name<EMAIL_ADDRESS>
(substituting Author Name and<EMAIL_ADDRESS>for your actual information) to set the authorship information.
If you made more than one commit and the commit with the missing authorship information is not the most recent one you have two options:

You can re-create all commits missing authorship information. This is going to be the easiest solution for developers that aren't extremely confident in their Git and command line skills.
You can use this script that GitHub provides to rewrite history. Please note: this should be used only if you are very confident in your abilities and understand its impacts.

Whichever method you choose, I will come by to re-check the pull request once you push the fixes to this branch.

We apologize for this inconvenience, especially since it usually bites new contributors to Home Assistant. We hope you understand the need for us to protect ourselves and the great community we all have built legally. The best thing to come out of this is that you only need to fix this once and it benefits the entire Home Assistant and GitHub community.
Thanks, I look forward to checking this PR again soon! :heart:

@lkollar Yes I like that idea. I'll try and get time to implement that over the coming days. Thanks for looking!

Can somebody please comment on https://github.com/home-assistant/home-assistant.io/pull/6050? UBUS vs. RPC for retrieving details. Thanks

Just a side-note, I was working to externalize this but found out that there's a push-based solution which is much nicer way for device tracking (https://github.com/openwrt/packages/pull/5701). As part of that effort I created https://github.com/rytilahti/python-ubus for communicating with the ubus-rpc, which may be interesting for the externalized luci tracker lib.

Noticed this bug this weekend as well, present on HA 0.81.4 and Openwrt 18.06.1 as well.

i have last  version of openwrt and im having this issues my device iss allways home :( any fix

any news?

@fbradyirl why did you close it?

@disrupted I closed it because I don't have the time at present to implement the work as a pip module. I can reopen if I ever get the chance, but right now, it is not happening, so best to close the PR.

what is the PR?
Finbarr Brady<EMAIL_ADDRESS>escreveu no dia terça, 20/11/2018
à(s) 12:17:

@disrupted https://github.com/disrupted I closed it because I don't
have the time at present to implement the work as a pip module. I can
reopen if I ever get the chance, but right now, it is not happening, so
best to close the PR.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/home-assistant/home-assistant/pull/15792#issuecomment-440253224,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGOMpByrqp6NlgwlYnJr5hSeP6K6gzg0ks5uw_K9gaJpZM4Vr-nK
.

@fbradyirl We waiting for you reopen it;

Please fix this issue.
Why can't you just merge the PR?

@flipreverse Converting my branch into a pip module as that's the way external APIs are to be interacted with from HA.
I've set up a template project for the pip module here:
https://github.com/fbradyirl/openwrt-luci-rpc/
I've added you as a collab, so if you can help that would be good. I am just busy at present but might eventually get to it.

Why should it be a pip module?
@flipreverse see the above PR feedback...

Please break out device specific code, requests and data parsing, into a standalone library published on pypi.
https://developers.home-assistant.io/docs/en/creating_platform_code_review.html#6-communication-with-devices-services
We shouldn't make any changes to this module until that is done.

Yes as I said earlier, my device doesn’t have wifi so any tracker based off that won’t sork for everyone. Thanks anyway!

@fbradyirl - true
we need complex solution for non WiFi devices too...
https://github.com/mueslo/openwrt_hass_devicetracker/issues/15

Agreed. Falling back to the arp table seems to be the next best thing without WiFi.

Just another vote/request for a 18.06 compliant tracker.

Opened new PR with the fix.

Thank you @fbradyirl  for fixing this!

I'm going to lock this thread now. The new PR is merged. If there are bugs please open new issues.


Intellisense is not working

Issue Type: Feature Request
intellisence is not working
VS Code version: Code 1.61.2 (6cba118ac49a1b88332f312a8f67186f7f3c1643, 2021-10-19T14:57:20.575Z)
OS version: Windows_NT x64 10.0.22000
Restricted Mode: No

/needsMoreInfo
What language? Are you using any extensions? If so, does the "Start Extension Bisect" command identify an extension causing the problem.

C++
On Sun, Nov 7, 2021, 2:30 PM CodeCrazy-ywt @.***> wrote:

What programming language are you using?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/microsoft/vscode/issues/136568#issuecomment-962574312,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARCJ6Q44H4I7BKBWNUYP4TLUKY53JANCNFSM5HPTD3GQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Maybe caused by extension.

/extC++


[5.6] Fix priority inversions when waiting on a task status lock

Since locking the task status is a presumed-uncommon case, the trade-offs inherent in the allocation patterns of AtomicWaitQueue are very appropriate here, even more than they are for metadata completion.
rdar://86100232
5.6 version of https://github.com/apple/swift/pull/40586
Reviewed by Mike Ash

@swift-ci Please test

Build failed
Swift Test OS X Platform
Git Sha - 9ec4747f0161d309fbd39df72ee7957403fedeca

LLDB test failure seems unrelated.
@swift-ci Please smoke test OS X

@swift-ci Please test macOS

Build failed
Swift Test OS X Platform
Git Sha - 9ec4747f0161d309fbd39df72ee7957403fedeca

@swift-ci Please test macOS


Class fun to print family fonts and font names

Checklist

[ ] New Extension
[ ] New Test
[x] Changed more than one extension, but all changes are related
[x] Trivial change (doesn't require changelog)

I can't see a good use case for this method, because when it's printed it doesn't reflect the style. And if you would like to know all family fonts you could refer to http://iosfonts.com .

          2 Messages

:book:
Executed 152 tests, with 0 failures (0 unexpected) in 1.249 (1.510) seconds

:book:
Executed 140 tests, with 0 failures (0 unexpected) in 0.791 (0.979) seconds

  Generated by :no_entry_sign: danger

Current coverage is 37.13% (diff: 100%)

Merging #327 into master will decrease coverage by 0.10%

@@             master       #327   diff @@
==========================================
  Files            46         46
  Lines          2097       2103     +6
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            781        781
- Misses         1316       1322     +6
  Partials          0          0

Powered by Codecov. Last update 470f843...a9b60dd

@piv199 I used to print fonts when I added extra fonts in xcode, sometimes font name doesn't match with the print name, and then I waste time to get font.. I didn't know http://iosfonts.com , great website!!

I am more bothered about how to test this. Can you confirm that this print method does has have different output across swift versions or devices?

We already deprecated that function

Hey would it make sense to include static methods for all the font families (getters using CGFloat)? Or is it overkill ?

@Khalian I think it's overkill

right, so you can close this PR. Thanks


Design tweaks

supposed to resolve https://github.com/aqora-io/quantumnews/issues/27 but I haven't tested locally...

I've test it, there is the result :

Thanks @Angel-Dijoux ! not what I was hoping for. I'll check the local setup for myself

now it looks good


fix(curriculum): hint and directions in RGP game step 37

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #52677

[x] i changed the third hint text

[x] i also changed the description

this is my first open source contribution, please provide me some feedback to improve my work if it is needed

@sagarkashyap989 Thank you for the PR.
There is a change that I think we should make, but will need the Curriculum team to confirm, so let's hold off on that.
In the mean time, please help do the followings:

Update the PR title to follow our convention: https://contribute.freecodecamp.org/#/how-to-open-a-pull-request?id=prepare-a-good-pr-title
Review the PR description and tick off the items that you have completed (I think you accidentally removed the checkboxes, and I added them back 🙂)

[x] updated PR title according to mentioned convention
[x] ticked remaining checkboxes

thank you for you feedback

Hi @sagarkashyap989. Congrats on your first pull request (PR)! 🎉
Thank you for your contribution to the page! 👍
We are happy to accept these changes and look forward to future contributions. 📝


Fixes CSV Upload Fuctionality

Fixes the CSV upload functionality by:

Adding an Ansible var for specifying the upload dir path
Making sure the upload dir exists and is owned by the Superset user
Adding an Ansible var for specifying what Superset extensions are
enabled. By default enable the 'csv' extension

Fixes #11
Signed-off-by: Jason Rogena<EMAIL_ADDRESS>

@pld done.


Parse error: syntax error, unexpected 'Trait' (T_TRAIT), expecting identifier (T_STRING)

I am trying to use Model attributes translation according to Documentation. But unfortunately I got this Parse error: syntax error, unexpected 'Trait' (T_TRAIT), expecting identifier (T_STRING) error.

It seems like the path should be changed to something like this Waavi\Translation\Traits\Translatable; instead of \Waavi\Translation\Translatable\Trait; that work for me.

Trait is a reserve php keyword, so use Traits instead of Trait will solve the problem.


GetLogLevelName does not support Aws::Utils::Logging::LogLevel::Off as parameter

Describe the bug
When calling Aws::Utils::Logging::GetLogLevelName(Aws::Utils::Logging::LogLevel::Off), AWS SDK crashes and abort() is called because of assert(0);.
Current implementation of GetLogLevelName can be found in src/aws-cpp-sdk-core/source/utils/logging/LogLevel.cpp#L137.
Expected Behavior
Expect Aws::Utils::Logging::GetLogLevelName(Aws::Utils::Logging::LogLevel::Off) to return "OFF".
Current Behavior
With function call Aws::Utils::Logging::GetLogLevelName(Aws::Utils::Logging::LogLevel::Off), the program crashes.
Reproduction Steps

Call Aws::Utils::Logging::GetLogLevelName(Aws::Utils::Logging::LogLevel::Off).

#include <aws/core/utils/logging/LogLevel.h> needs to be included as header.

The program crashes.

Possible Solution
Handle log level Off: Current implementation of GetLogLevelName can be found here.
Aws::String GetLogLevelName(LogLevel logLevel)
{
	switch (logLevel)
	{
	case LogLevel::Fatal:
		return "FATAL";
	case LogLevel::Error:
		return "ERROR";
	case LogLevel::Warn:
		return "WARN";
	case LogLevel::Info:
		return "INFO";
	case LogLevel::Debug:
		return "DEBUG";
	case LogLevel::Trace:
		return "TRACE";
	case LogLevel::Off:
		return "OFF";
	default:
		assert(0);
		return "";
	}
}

Additional Information/Context
none
AWS CPP SDK version used
1.11.48
Compiler and Version used
3.23.22060601-MSVC_2
Operating System and version
Windows 10

Thanks for pointing this out. Pending PR merge

Thanks for merging this!


[GLUTEN-7359][VL] feat: Support columnar partial project for UDF

The UDF may cause the total project input col to row converter and the output row to column.
For example, hash(udf(col0)), col1, col2, col3, col4, with partial project, we can only convert col0 as column to row or column to arrow as input, and convert udf(col0) as Alias partitalProject1_, then row to column.
ProjectExecTransformer will be hash(partitalProject1_), col1, col2, col3, col4,partitalProject1_.
Partial project will supply two path, velox columnar to row as input and row to velox columnar as output by UnsafeProjection.
velox columnar to arrow as input and arrow to velox columnar as output by MutableProjection.
The test results indicates it can help accelerate some queries 30%.

CI is failing at the known CSV issue
- csv scan with option string as null
24/10/17 03:19:28 WARN GlutenFallbackReporter: Validation failed for plan: Scan text [QueryId=3356], due to: Unsupported file format for UnknownFormat..
E20241017 03:19:28.696393 29864 Exceptions.h:66] Line: /__w/incubator-gluten/incubator-gluten/ep/build-velox/build/velox_ep/velox/exec/Task.cpp:1955, Function:terminate, Expression:  Cancelled, Source: RUNTIME, ErrorCode: INVALID_STATE
24/10/17 03:19:28 WARN GlutenFallbackReporter: Validation failed for plan: Scan text , due to: Unsupported file format for UnknownFormat..
24/10/17 03:19:28 WARN ArrowNativeMemoryPool: Arrow pool still reserved non-zero bytes, which may cause memory leak, size: 128.0 B.
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fa14049fcd0, pid=1158, tid=0x00007fa091b7e700
#
# JRE version: OpenJDK Runtime Environment (8.0_312-b07) (build 1.8.0_312-b07)
# Java VM: OpenJDK 64-Bit Server VM (25.312-b07 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  0x00007fa14049fcd0
#
# Core dump written. Default location: /__w/incubator-gluten/incubator-gluten/backends-velox/core or core.1158
#
# An error report file with more information is saved as:
# /__w/incubator-gluten/incubator-gluten/backends-velox/hs_err_pid1158.log
- csv scan with option delimiter
#
# If you would like to submit a bug report, please visit:
#   https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%208&component=java-1.8.0-openjdk
#


CLOUDSTACK-10182 Restrict volumes and templates download per user for security purposes

https://issues.apache.org/jira/browse/CLOUDSTACK-10182

@dmytro-shevchenko please rebase and re-open if still relevant


Fix incorrect aspect ratio of terrain polygon in tile set editor

Fixed the terrain polygon using an incorrect aspect ratio when using a vertical offset on Half-Offset Square or Hexagon tile shape.

Current

Hexagon

Half-Offset Square

With Changes

Hexagon

Half-Offset Square

Thanks for the contribution! @groud worked on a feature PR which might supersede this one if you want to review/test: #61809.

Superseded by #61809.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target_f9e63f3e-52df-444d-bf02-18cd5775d04b/pull/1 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target_f9e63f3e-52df-444d-bf02-18cd5775d04b.git

Docs Build status updates of commit b6fe4a2:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-GitBranchDeletedOrForcePushed] Cannot sync git repo to specified commit because branch Release_Archive_master_2021-06-10-08-04-09 has been deleted or has been force pushed

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Additional analysis fixes

Fix C26110,C28023,C28193,C6001,C6031,C6054
Draft until #312 is merged.
Signed-off-by: Alan Jowett<EMAIL_ADDRESS>

@Alan-Jowett merged 312, please rebase and resolve conflicts.  Thanks!

Looks like the recent rebase broke stuff. Will take a closer look when I get home.


Type Graph, Edges use data arrays index rather than name.

Version
4.2.1
Steps to reproduce
For a circular or force graph create a data array with names that do not correspond to each objects index within the array.
For example:
data = [{
    id: 1,
    name: 1,
  }, {
    id: 2,
    name: 2,
  }];

edges = [{
    source: 1,
    target: 2
}];

What is expected?
An edge is created between node 1, and node 2
What is actually happening?
An edge is being made between the node at array index 1, and array index 2.

After some more digging, it seems this only occurs when the name is a number.

index is first checked and then name. This is a feature rather than bug.

I see what you're saying, but that splits from the API for links then.
The API tells us that it uses the name, but in the case that you are using numbers for your name and edges it checks for the index? I would think it'd make more sense to first check for the name, and if that didn't exist then check the index.

I got your point. Needs further discussion on this.

@missionz3r0 I think it's because you are using number type in edges and echarts guess it's an index. You can use string type instead.
data = [{
id: 'n1',
name: 'n1',
}, {
id: 'n2',
name: 'n2',
}];
edges = [{
source: 'n1',
target: 'n2'
}];


nftables resources should be within if !defined

nftables_install.pp should be in the same style as iptables_install.pp, to have package and service resources within if !defined

There's a new nftables module on the Forge. I check this module.

https://forge.puppet.com/modules/puppet/nftables is good, i have used it elsewhere.


Dark block on code

Information:

Prism version:  latest from the download page
Plugins: line numbers, show language, copy to clipboard button, and toolbar

Description
Code examples are highlighted with a dark color. I'm not sure if this is because of a plugin I am using or if its just an issue for me.
Example

or if its just an issue for me.

That's most likely the case here. Issues that cannot be reproduced on prismjs.com are typically due to styles from other CSS files being applied to the pre or code elements. In this case, it seems like some other CSS file is setting the background of the code element.
Could you please check which file (or rule) is setting the background of the code element?

Fixed! I had CSS that was being applied to another code element. Thanks for the help. 😄


Enable use of std::format for AppleClang / Xcode 16

Specified the minimum apple-clang version to support std::format to 16 for connanfile.py.  Xcode 16 does include the <format> header but does not seem to have the __cpp_lib_format compatibility macro defined so a similar override was needed as we had for Clang 17.
To be able to use std::format with Xcode 16 I had to pass -DMP_UNITS_API_STD_FORMAT=AUTO when calling cmake.  Is this expected or is this a sign I missed something in my changes to CMakeLists.txt?

[ ]  Wait until #651 merges and rebase this so we have Xcode 16 CI coverage

To be able to use std::format with Xcode 16 I had to pass -DMP_UNITS_API_STD_FORMAT=AUTO when calling cmake. Is this expected or is this a sign I missed something in my changes to CMakeLists.txt?

Conan should use std::format by default if supported. You can try to force it from the Conan command line with -o '&:std_format=True' and see what happens.

To be able to use std::format with Xcode 16 I had to pass -DMP_UNITS_API_STD_FORMAT=AUTO when calling cmake. Is this expected or is this a sign I missed something in my changes to CMakeLists.txt?

Conan should use std::format by default if supported. You can try to force it from the Conan command line with -o '&:std_format=True' and see what happens.

Oh, actually this must have been confusion on my part looking at some of my temporary debug messages while I wile I was editing the CMakeList.txt.  -DMP_UNITS_API_STD_FORMAT=AUTO is not needed after all.

generate-job-matrix.py should probably also be updated in line 67. Additionally, could you please also update the table at https://mpusz.github.io/mp-units/latest/getting_started/cpp_compiler_support?


Add port to [graphite] log output

Required for all non-trivial PRs

[X] Rebased/mergable
[X] Tests pass
[ ] CHANGELOG.md updated
[X] Sign CLA (if not already signed)

If you have multiple [[graphite]] listeners it can be difficult to debug write errors because the port is not listed on the endpoint.

Current output:

[graphite] {log_message}
[graphite] 2016/05/03 03:44:37 unable to parse line:  : received " " which doesn't have required fields

New output:

`[graphite] {port} {log_message}
[graphite] :2001 2016/05/03 03:44:37 unable to parse line:  : received " " which doesn't have required fields

👍 Seems good to me.

@balopat

@jackzampolin can you make another commit with an update to the changelog for this? I forgot to check for that when I was reviewing this.


Update untitled block text to be "Untitled" from "Untitled Unit"

JIRA: https://openedx.atlassian.net/browse/MA-981

@1zaman please review

:+1:


Error When Attempting to Save SPIB Model

spib version: 1.1.0
Python version: 3.13.0
Operating System: Rocky Linux 8.9

Description
When training the SPIB model, there is an error when torch.save is run to save the model.
What I Did
When running the tutorial notebook in the repo, I get the following traceback when running IB.fit(train_dataset, test_dataset, batch_size=batch_size, tolerance=tolerance, patience=patience, refinements=refinements, index=seed):
`AttributeError                            Traceback (most recent call last)
Cell In[60], line 1
----> 1 torch.save(IB.state_dict(), IB.output_path + '_final_SPIB%i.model' % seed, _use_new_zipfile_serialization=False)
File ~/micromamba/envs/spib/lib/python3.13/site-packages/torch/serialization.py:865, in save(obj, f, pickle_module, pickle_protocol, _use_new_zipfile_serialization, _disable_byteorder_record)
861     raise RuntimeError(
862         "Cannot use skip_data=True with _use_new_zipfile_serialization=False"
863     )
864 with _open_file_like(f, "wb") as opened_file:
--> 865     _legacy_save(obj, opened_file, pickle_module, pickle_protocol)
File ~/micromamba/envs/spib/lib/python3.13/site-packages/torch/serialization.py:1009, in _legacy_save(obj, f, pickle_module, pickle_protocol)
1007 pickle_module.dump(sys_info, f, protocol=pickle_protocol)
1008 pickler = pickle_module.Pickler(f, protocol=pickle_protocol)
-> 1009 pickler.persistent_id = persistent_id
1010 pickler.dump(obj)
1012 serialized_storage_keys = sorted(serialized_storages.keys())
AttributeError: '_pickle.Pickler' object attribute 'persistent_id' is read-only`
The only change is that I am not using the provided MD trajectory data but rather data saved in a series of .dat files. I've attached the packages installed using micromamba and pip as well as the notebooks to this ticket.
I'll continue to try and fix the issue myself and will reply if I find a solution.
Uploading spib.zip…
pip_list.txt
micromamba_list.txt

Solved by changing the dependencies (micromamba and pip packages listed in the attached .txt files). I didn't check which specific packages were causing the issue, but I made sure to downgrade to python 3.10 and torch 2.5.1 with an older version of CUDA (11.8).
pip_list.txt
micromamba_list.txt


Fix 3d picking projection with camera offset

Change List

When the camera is not pointing to the ground, common space z must compensate for the offset.

move the comment to code.

Coverage increased (+2.7%) to 82.742% when pulling 14b1f9cdaedacc01cf3866e41f17cca34de27eb8 on x/unproject-fix into fddf1ab35449a3de4046b0493526c8fa3ff3685d on master.


Fix s3:createBucket request body for default (us-east-1) region

This is really dumb, but if you give a location constraint for the default (us-east-1) S3 region, the request fails.  And if you put an empty CreateBucketConfiguration element, the request fails.  So an XML body is only added if the region is non-default.

Alternatively, we can avoid backing this logic into the client (and thus making code generation more feasible) by making the region parameter optional.  If absent, then the XML document is omitted.  This would put the burden on the caller, but results in a much more transparent client.

I also didn't add this quirk to the fake implementation.  Kind of a niche constraint to emulate, but might be helpful 🤷 .


AniList sync not working?

Steps to reproduce
I got error 403
I try to log out and log in again
Click anilist in sync settings
It takes me to the website, where I already have Yōkai accepted as an app and it simply redirects me to the app again
Expected behavior
Should log me in to AniList on Yokai
Actual behavior
Nothing happens, I just doesn't log me in
Crash logs
No response
Yōkai version
App version: <IP_ADDRESS>-r5452 (standard, 114776bc5, 139, 2024-07-30T00:18:37Z) Android version: 12 (SDK 31) Android build ID: SP1A.210812.016.G975FXXSGHWA3 Device brand: samsung Device manufacturer: samsung Device name: beyond2 Device model: SM-G975F Device product name: beyond2ltexx
Android version
Android 12
Device
Samsung s10+
Other details
I tried to revoke the app in anilist and go through the authorization process again but that didn't work either
As I said, I was getting a 403 error before all this
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, or a request for an extension, I should be contacting the extensions repository's maintainer/support for help.
[X] I am reporting an issue exclusive to this fork. I have also checked that is not an issue on the main version of Mihon
[X] I have tried the troubleshooting guide.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I have updated all installed extensions.
[X] I have filled out all of the requested information in this form.

It's AniList issue, has been happening for awhile now. It's been giving me error 500 for the last 2 days...

It's AniList issue, has been happening for awhile now. It's been giving me error 500 for the last 2 days...

The not being able to log in too though? That's something that has happened to me in others like Kuukiyomi with simkl, but they fixed it on aniyomi later on so...
You think it will fix itself with time? I track everything with AniList... 😞
I also tried using Chrome to log in but didn't work too

The not being able to log in too though

Unfortunately, yes.

You think it will fix itself with time?

It should be, if they didn't introduce breaking changes (which they shouldn't, but who knows, AniList has been acting weird last few years).

The not being able to log in too though

Unfortunately, yes.

You think it will fix itself with time?

It should be, if they didn't introduce breaking changes (which they shouldn't, but who knows, AniList has been acting weird last few years).

I updated and tried again and it worked :)))
Great


⚠ Cioos Pacific CKAN Sitemap has degraded performance

In 02aa16c, Cioos Pacific CKAN Sitemap (https://catalogue.cioospacific.ca/sitemap/sitemap-1.xml) experienced degraded performance:

HTTP code: 200
Response time: 5260 ms

Resolved: Cioos Pacific CKAN Sitemap performance has improved in 422be7a after 5 minutes.


zram-tools uses outdated by 7 years approach in setting up zram thread count

zram module has max_comp_streams property since around 2011, and nowadays it is (at least on x86/amd64) is autodetected to match the CPU core count.
Setting up multiple zram devices is inefficient even if each one is set to use only one compression stream, but with default settings it will end up using number of threads equal to square of the CPU core count (4 on dual-core, 16 on quad-core, etc.)
Note that I don't have access to any ARM boards or other supported by Debian platforms, so I cannot verify whether zram module has the same max_comp_streams behavior there.
Also note that a more lightweight approach to setting up zram could use udev rule instead, e.g. this is what I've been using on my systems:
KERNEL=="zram0", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{initstate}=="0", PROGRAM="/bin/sh -c 'echo $(($(LANG=C free -k | grep -e "^Mem:" | sed -e "s/^Mem: *//" -e "s/  .//")*2))KiB'", ATTR{disksize}="$result", RUN+="/sbin/mkswap $env{DEVNAME}", TAG+="systemd"

zram streams was multi threaded automatically since 3.15 kernel https://wiki.gentoo.org/wiki/Zram#Caveats.2FCons
No need to manually split into separate devices anymore.

Addressed this issue in my PR #4

Thanks again, I just want to give this a quick round of testing before tagging a release.

Its not just streams though as the worst is no check if already and completely ignoring the hot_plug and hot_delete methods of zram.
Also the hugely important mem_limit is missing and like zram_conf its called tools but just does some bad swaps.
Have a look at my examples https://github.com/StuartIanNaylor/zram-config
As I did these because it infuriates me how the extremely bad ubuntu code of zram_conf keeps being emulated and copied time and time again.

I think this issue as opened by the original reporter can be closed.
@StuartIanNaylor if you want to summarize and break apart your issues into new issue(s) I think that would be good - or maybe better, submit a PR.


Centralize Ruby Version to .ruby-version

What are you trying to accomplish?
The .ruby-version file is the ecosystem standard for defining a Ruby version.  This PR adds the .ruby-version file, ensures a required_ruby_version is set, and removes all other references to Ruby in this repository, aligning it with the standard.
What should reviewers focus on?

[!IMPORTANT]
Please verify the following before merging:

Verify that the changes in the PR meets the following requirements or adjust manually to make it compliant:

[x] .ruby-version file is present with the correct Ruby version defined
[x] A required_ruby_version in your gemspec is set
[x] There is no Ruby version/requirement referenced in the Gemfile (no lines with ruby  <some-version>)
[x] A Gemfile.lock is built with the defined Ruby version
[x] The version of Rubocop installed is 1.61.0 or greater
[ ] There is no TargetRubyVersion defined  in rubocop.yml
[ ] There is no Ruby argument  present in  ruby/setup-ruby Github Actions that do not  run on a Ruby matrix (no lines with ruby-version: “x.x”)

Please merge this PR if it looks good, this PR will be merged if there isn't any activity after 4 weeks.

In .github/workflows/publish_docs.yml we're forcing Ruby 3.2 as it wasn't working on 3.3, but I just tried it again and it's working, so must have been fixed in a recent update. So it should be safe to remove that too.


onRest() should only be called after a transition ends

At the moment, onRest is called every time the component is rendered.
Here is a demo to compare this behavior with what react-motion does: https://codesandbox.io/s/3v99xomj2p
I think react-spring should follow the behavior of react-motion, where onRest only gets called after a transition ends.

@bpierre that's curious, yes. Probably because it calls stop before rendering - which it shouldn't anyway since props didn't change. I'll look into this.

@bpierre it should be fixed now ...

It is! https://codesandbox.io/s/3v99xomj2p
Thank you 🙏


pytube.exceptions.CipherError

It was just fine 2 hours ago. When I tried using my code again I got:
pytube.exceptions.CipherError: Couldn't cipher the signature. Maybe YouTube has changed the cipher algorithm.Notify this issue on GitHub: local variable 'func' referenced before assignment.
I updated and still get this error

I have the same problem. Though not for all videos, probably mostly new ones.

Got the same error.
"issue on GitHub: {0}".format(e))

pytube.exceptions.CipherError: Couldn't cipher the signature. Maybe YouTube has changed the cipher algorithm. Notify this issue on GitHub: local variable 'func' referenced before assignment


autogenerate version history page

Maintain a page with historical version info, which gets updated by magic when there's a release.
(Note: this may eventually be superseded by doing updates at a grown-up-MOD frequency instead of periodic releases)

Soon after public release...

out of date, superseded, ancient history ... YAY


Show progress while reading resources from provider

Q
A

🐛 Bug fix?
no

🚀 New feature?
yes

⚠ Deprecations?
no

❌ BC Break
no

🔗 Related issues
#257

❓ Documentation
no

Description
Add progress service that display a spinner until stopped or timeouted

@moadibfr We need a doc PR for the quiet flag too 😉


Explicit Peering Agreement implementation

PR Description
Implements Gossipsub v1.1 "Explicit Peering Agreement" by introducing a new CLI flag --direct-peers ("direct" is used instead of "explicit" to follow jvm-libp2p convention).
As such, documentation on https://github.com/Consensys/doc.teku should be updated as well to reflect this change (I can do it if you wish!).
Implementation
From a discovering configuration perspective, direct peers are treated as static peers, as we want to connect with them immediately on startup and persist the connection with them without being kicked out by the reputation system.
In order to do that, the list of static peers is extended with the direct peers provided in the CLI option.
Lastly, a function that determines whether a peer is direct or not is passed downstream to jvm-libp2p to enable the direct peer functionality on gossipsub.
Fixed Issue(s)
Closes #8004.
Documentation

[x] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[x] I thought about adding a changelog entry, and added one if I deemed necessary.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hey everyone, thanks for the detailed review and feedback! I hope I've addressed all your suggestions now:

downstream propagation of direct peers has been refactored by converting List<String> into List<NodeId> as soon as possible, and then converting it into DirectPeerManager
better description of "static" and "direct" peers has been added to the respective CLI options

I also added one little test to make sure the CLI option and the configurations do the right thing indeed.
You can look at the single updates in the related commits.
Thanks!


network: move to it's own library

Problem
All of our networking lives inside the node library, which also contains bits from the consensus.
Solution
This makes the networking module it's own library called Network, so that we can work on it without making random cycles.

How does this relate to pollinate?

@ulrikstrid, this will make it easier to integrate Pollinate, as our network layer becomes less complected to the actual application state.


Release 1.0

Version 1.0 will consist of this set of features:

[x] Safe and stable experience
[x] Support for stack layout, floating windows, workspaces, screens
[x] Status bar
[ ] Configuration file (planned as part of source code)

[x] Shortcuts
[ ] Colors
[x] Status bar behavoir
[ ] Rules

[ ] Autostart
[ ] Install script

Status bar will be implemented later

Since we have no design yet, no required configuration needed


SpatialBN:error occurs when testing

I use BN as follows:
fc1_bn = model.SpatialBN('fc1_','fc1_bn',hidden_dim,is_test=not model.train)
error occurs when testing:
RuntimeError: [enforce fail at blob.h:97] IsType(). wrong type for the Blob instance. Blob contains nullptr (uninitialized) while caller expects caffe2::Tensorcaffe2::CUDAContext .
Offending Blob name: gpu_0/fc1_bn_rm.
Error from operator:
input: "gpu_0/fc1_" input: "gpu_0/fc1_bn_s" input: "gpu_0/fc1_bn_b" input: "gpu_0/fc1_bn_rm" input: "gpu_0/fc1_bn_riv" output: "gpu_0/fc1_bn" name: "" type: "SpatialBN" arg { name: "is_test" i: 1 } arg { name:"use_cudnn" i: 1 } arg { name: "cudnn_exhaustive_search" i: 0 } arg { name: "order" s: "NCHW" } device_option { device_type: 1 cuda_gpu_id: 0 }

problem solved

how? please advice.


aws_kinesis input GetRecords backoff timer gets clobbered

In the aws_kinesis input, when no records are returned by a get records operation, I believe the intent is for there to be a backoff period before the next get records call is made: https://github.com/Jeffail/benthos/blob/bda960d4522912f24edbf32926961ace1978fde5/lib/input/aws_kinesis.go#L413
(The same goes for when an error other than timeout occurs during the get records call).
However, it looks like the line below later on reassigns the nextPullChan channel reference to the unblockedChan channel, so the backoff period never really takes effect and the get records operation in the next loop runs immediately: https://github.com/Jeffail/benthos/blob/bda960d4522912f24edbf32926961ace1978fde5/lib/input/aws_kinesis.go#L457
In sparsely populated Kinesis streams (when GetRecords frequently return no records), this causes the AWS API rate limit of 5 GetRecords calls per second to get hit. Interestingly, the only evidence of this is in the AWS CloudWatch metrics for the stream (GetRecords.Success average will be less than 100% and ReadProvisionThroughputExceeded average percentage will be greater than 0%). On the client side, the AWS go SDK is not returning the ProvisionedThroughputExceededException error for some reason, so I'm not surprised this wasn't detected.

Hey @Gerald-Lim-Bose, thanks for raising this, looks like you're right. I'll have a fix to try out shortly, just running some integration tests.

Fix: https://github.com/Jeffail/benthos/commit/7a5496e31d827d34bb4d861be30d3dcf3e8801fb. Unfortunately my integration test suite doesn't have checks for rate limits so I can't reproduce the issue locally. I'm planning a release early next week, if you have a chance to try this out in the meantime let me know.

Going to close this for now but if the issue shows up again please reopen. Releasing either this evening or tomorrow.


Add WI incentives

Note that this work did NOT include a data refresh. Carden has reached out to Focus on Energy to see if they're able to refresh the data.
Links

Asana https://app.asana.com/0/1206629812394927/1206662027052982/f

Checklist

[x] This PR includes automated tests where possible.
[x] Relevant READMEs, scripts, etc. in this repo have been updated if needed.
[x] Relevant runbooks and ADRs in Notion have been updated if needed.
[x] Checked that no new errors are introduced in the console or terminal

Test Plan

Ensure node build/scripts/incentive-spreadsheet-to-json.js --strict WI runs without error
Ensure yarn test runs without error

I know you aren't supposed to do a data refresh, but a lot of these comments are more about correcting/vetting the initial set of data vs refreshing for 2024, so I think they still make sense to do.

Got it, I think I misunderstood what a data refresh is! I'll make these changes!


Can't Get Pass in The New Head

before update to the the new, it can work normal, in the b14dcfc head
➜  mimipy git:(master) git reset --hard b14dcfc
HEAD 现在位于 b14dcfc add GET/POST credentials retrieval in apache2 memory
➜  mimipy git:(master) ls
LICENSE  mimipy.py  README.md  requirements.txt
➜  mimipy git:(master) sudo python mimipy.py
[SYSTEM - LightDM] :
	- Process	: /usr/sbin/lightdm
	- Username	: *******
	- Password	: *******
[SYSTEM - GNOME] :
	- Process	: /usr/bin/gnome-keyring-daemon
	- Username	: *******
	- Password	: *******

but now something wrong in the head f122114
➜  mimipy git:(master) sudo python mimipy.py
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__
WARNING:root:[-] __exit__

Because you also needs the last memorpy version.
try the packed version or update memorpy
sudo python packed/mimipy.py

@n1nj4sec Yeah, it work fine now with last memorpy, thanks.


make all

make: make default targets
make all: make all targets

By the way, is there something like coverage for xmake? @waruqi

👍

@TitanSnow --coverage?  codecov?

Yep

not yet

I have added codecov token to travis-ci for xmake-codecov. But I haven't modified travis.yml to upload coverage data to codecov.

I'm afraid testsuite for xmake would be a large work. So for writing tests, how do you think?

I writed  some tests  in xmake/tests directory and we can run tests/test script on ci

I would like to do some modify on .travis.yml

we can try to use luacov?

Great :+1:


PowerShell: Arguments"-input is missing when choosing "Inline" code.

Troubleshooting
Checkout how to troubleshoot failures and collect debug logs: https://docs.microsoft.com/en-us/vsts/build-release/actions/troubleshooting
Environment

Server: Azure Pipelines
Agent:  Hosted (windows)

Issue Description
When adding a PowerShell task to an agent job in a release pipeline the "Arguments"-input is missing when choosing "Inline" code. I am not able to find any documentation that states that this is intended behaviour.
Contrast:

With:

You don't need arguments for inline because you can use build/release variables in your inline code. the variables will be replaced with the values when the task gets executed.

@JohannesDrexler is correct. Arguments are for passing into an external powershell script. If you're using an inline script, you can directly put those variables into your inline code.

Thanks for the heads-up!
This seems a bit inconsistent to me, but as long as it's possible to pass variables to an inline script in one way or another I guess it's fine.
Does the same thing apply to the Bash task?