Fix issues with nested properties

Problem
I merged #18 a little too soon; It has 3 issues:

It doesn't handle comment lines between nested properties
It doesn't handle a blank (whitespace) after = in the nested property opener like the other forms of properties.
The test case was inserted in the wrong location in eini_tests module; it should have been in its own test function, and it should have had some error cases.

Solution

Add support for comment lines in between nested properties.
Add support for blank after = in nested property opener.
Refactor and extend the tests for nested properties to cover more ground.

Known Issues
After I merged #18, I noticed this warning:
Compiled src/eini_lexer.xrl
Parse action conflict scanning symbol blank in state 51:
   Reduce to properties_nested from property_nested (rule 28 at line 97)
      vs.
   shift to state 53, adding right sisters to property_nested.
Conflict resolved in favor of shift.

It appears that the introduction of nesting has added some ambiguity to the grammar aroud the blank, and this change makes it a little worse:
Parse action conflict scanning symbol break in state 47:
   Reduce to single_value from blank (rule 44 at line 121)
      vs.
   shift to state 52, adding right sisters to blank.
Conflict resolved in favor of shift.

Parse action conflict scanning symbol blank in state 58:
   Reduce to properties_nested from property_nested (rule 30 at line 101)
      vs.
   shift to state 61, adding right sisters to property_nested.
Conflict resolved in favor of shift.

Parse action conflict scanning symbol comment in state 58:
   Reduce to properties_nested from property_nested (rule 30 at line 101)
      vs.
   shift to state 12, adding right sisters to property_nested.
Conflict resolved in favor of shift.

Now there is some ambiguity around comment as well, and this appears to cause an issue parsing INI files with a comment line at the end of a block of nested properties when another (not-nested) key follows. I don't know if we should mark this as a known issue or not, but the trigger case is in a commented unit test in eini_tests.

@jimdigriz FYI. I looked at this issue for awhile and didn't come up with a really satisfactory refactor of the grammar to disambiguate these cases. It looks like it will be fairly rare that we encounter issues, so I am not sure how much to worry about it.

tnx for foxing this up from prevolus one

@jimdigriz FYI. I looked at this issue for awhile and didn't come up with a really satisfactory refactor of the grammar to disambiguate these cases. It looks like it will be fairly rare that we encounter issues, so I am not sure how much to worry about it.

Thanks for looking into this, sorry for not capturing all edge cases.
For me now that I it will parse my ~/.aws/credentials configuration without me having to comment out the section every time I use eini (which seems not to be a problem for others) is great and I can live with those edge cases :)
This though is your project, so if you want me to fix up my commits (based on your work here) I am happy to do so.

This though is your project, so if you want me to fix up my commits (based on your work here) I am happy to do so.

No, that's totally alright, I'll just go ahead and merge this PR and raise a ticket for future follow up when I have a chance.


CRI: Gather network information in the CRI probe

Currently the CRI probe lacks network connections between containers. We should decide on which approach to do it with. Either CRI, but at first glance there is no way to request the needed information on the IPs, etc. or via CNI? Maybe the best approach would be to just go through the k8s API?
cc @marccarre @bboreham

Take a look at #3207 , which is under the docker tree but basically only needs a list of PIDs.

@bboreham Thanks for the link! Don't think we can get that via CRI API. Is there a way to somehow use CNI?

Don't think we can get that via CRI API

What is 'that'?
AFAICT all that code needs is a PID.

@rade

What is 'that'?

PID. We cannot get that via CRI API, as it is only set as part of the container creation, there is no list option for it just configuration. AFAICT.
Which is why I was asking @bboreham if we can get that info somewhere else instead?

We now have IPs, I think the next step is adding the docker_container_id latest key to processes, which is what the tagger (tagger.go) in the docker probe does.

The container renderer merges processes with containers:

// ContainerRenderer is a Renderer which produces a renderable container
// graph by merging the process graph and the container topology.
// NB We only want processes in container _or_ processes with network connections
// but we need to be careful to ensure we only include each edge once, by only
// including the ProcessRenderer once.
var ContainerRenderer = Memoise(MakeFilter(
	func(n report.Node) bool {
		// Drop deleted containers
		state, ok := n.Latest.Lookup(docker.ContainerState)
		return !ok || state != docker.StateDeleted
	},
	MakeReduce(
		MakeMap(
			MapProcess2Container,
			ProcessRenderer,
		),
		ConnectionJoin(MapContainer2IP, report.Container),
	),
))

and MapProcess2Container looks at the docker_container_id to do the job.
The docker tagger adds 2 things in the process topology, the "docker_container_id latest key and two parents: container and container_image:
The result of the tagger is a "docker_container_id" property:
  "launcher-tests;3278": {
        "id": "launcher-tests;3278",
        "topology": "process",
        "counters": null,
        "sets": null,
        "latest": {
          "cmdline": {
            "timestamp": "2018-08-22T11:20:33.908720218Z",
            "value": "kube-scheduler --address=<IP_ADDRESS> --leader-elect=true --kubeconfig=/etc/kubernetes/scheduler.conf "
          },
          "docker_container_id": {
            "timestamp": "2018-08-22T11:20:33.921932431Z",
            "value": "085cf25caf229292927e2d7ce9cbd2c2403ac56e1b180c94baefc70eeb7c9026"
	...

and container information in the process parents:
        "parents": {
          "host": [
            "launcher-tests;\u003chost\u003e"
          ],
          "container": [
            "085cf25caf229292927e2d7ce9cbd2c2403ac56e1b180c94baefc70eeb7c9026;\u003ccontainer\u003e"
          ],
          "container_image": [
            "k8s.gcr.io/kube-scheduler-amd64;\u003ccontainer_image\u003e"
          ]
        },

Also noticed a couple more things, started editing the original issue to include a TODO list we can maintain.

The problem we are now trying to solve is: find which host pid maps to pid 1 of the various containers.
The immediate thing that comes to mind is to ask CRI for the container pid, just like what we do in the docker probe. CRI has a provision to do that in ContainerStatus:
message ContainerStatusResponse {
    // Status of the container.
    ContainerStatus status = 1;
    // Info is extra information of the Container. The key could be arbitrary string, and
    // value should be in json format. The information could include anything useful for
    // debug, e.g. pid for linux container based container runtime.
    // It should only be returned non-empty when Verbose is true.
    map<string, string> info = 2;
}

Unfortunately, using this with cri-o leads to an empty info map and indeed, there's no code to populate that map: https://github.com/kubernetes-incubator/cri-o/blob/master/server/container_status.go#L33

Looks like https://github.com/kubernetes-incubator/cri-o/blob/master/server/inspect.go#L113 will get it - ContainerInfowill serialise apid` member.

I checked the containerd implementation and they do return the pid already:
https://github.com/containerd/cri/blob/master/pkg/server/container_status.go#L102.
A reasonable course of action to me is specifying a bit more the CRI interface, defining a few strings in that map that implementations should populate, taking what containerd does as reference. We can then open an issue/implement that support in cri-o.
Unfortunately minikube+containerd doesn't start for me atm.

@bboreham that /info/container/:id endpoint is served over http and not the CRI interface, we currently have no way to discover the HTTP endpoint unfortunately. I guess it could be an extra input parameter though.

Opened a cri-o issue so they are at least aware of something we'd love to have: https://github.com/kubernetes-incubator/cri-o/issues/1752.

Oh! I was wrong, the http enpoints (well, non gRPC calls) are available through the CRI socket! There's a client implementation of the the container info in https://github.com/kubernetes-incubator/cri-o/blob/master/client/client.go.


Processing times france and territories

Trello story: https://trello.com/c/Ujvy6acV/175-marriage-tool-abroad-processing-times-for-france-and-territories-content-change-request
Factcheck
Marriage abroad - Monaco
Marriage abroad - France
Expected Changes
URL on GOV.UK for Monaco
URL on GOV.UK for France

Change the processing times for France and French territories
Countries affected:

France
French Guiana
French Polynesia
Guadeloupe
Martinique
Mayotte
Monaco
New Caledonia
Reunion
St Pierre & Miquelon
Wallis & Futuna Islands

Before
Monaco

France and rest of the French territories

After
Monaco

France and rest of the French territories

Looks good to me.


Project failed after upgrading to 1.21.4

Is there an existing issue for this?

[X] I have searched the existing issues

Run a Diagnostic and Paste Link Here
https://gist.github.com/bfuzze/5058f38292598602d989badeb70b4ee1
Expected Behavior
The project should start without errors.
Actual Behavior
The project fails to start with the following errors:
Network ddev_default created
Starting myproj...
Container ddev-ssh-agent  Started
ssh-agent container is running: If you want to add authentication to the ssh-agent container, run 'ddev auth ssh' to enable your keys.
Using custom PHP configuration: [/home/myuser/Projects/myorg/myproj/.ddev/php/xdebug.ini]
Custom configuration takes effect when the container is created.
  They have been ignored, or old ones used instead.
#15 37.79 Reading package lists...
#15 37.80 Building dependency tree...
#15 37.80 Reading state information...
#15 37.80 E: Unable to locate package cron
------
', stderr='failed to solve: executor failed running [/bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests cron]: exit code: 100'

Steps To Reproduce
No response
Anything else?
I recently upgraded to 1.21.4 and ran into the following issue when starting one of my Drupal projects.  I did not encounter this issue with another Laravel project, but it is much simpler.  The errors shown seem to be related to the project-type.  After downgrading to 1.21.3 I was able to start the project without issue.
I run DDev for numerous projects on WSL 2 (Ubuntu) running on Windows 11.
DDev is installed on the subsystem, not on Windows, using the install.sh method.
Despite this, I love this platform.  It makes my job and my life so much easier.
Great work and thanks!

It looks like all your name resolution was broken at the time you tried this; The first thing to do when you see something like that is to temporarily turn off firewall and VPN, other troubleshooting ideas in https://ddev.readthedocs.io/en/latest/users/usage/troubleshooting/#troubleshooting but mostly... name resolution has to work in your system to be able to get packages.
#15 12.80   Temporary failure resolving 'deb.nodesource.com'
#15 12.80 Err:2 http://deb.debian.org/debian bullseye InRelease
#15 12.80   Temporary failure resolving 'deb.debian.org'
#15 12.80 Err:3 http://packages.blackfire.io/debian any InRelease
#15 12.80   Temporary failure resolving 'packages.blackfire.io'
#15 12.80 Err:4 http://nginx.org/packages/debian bullseye InRelease
#15 12.80   Temporary failure resolving 'nginx.org'
#15 12.80 Err:5 https://packages.sury.org/php bullseye InRelease
#15 12.80   Temporary failure resolving 'packages.sury.org'
#15 25.28 Err:6 http://deb.debian.org/debian-security bullseye-security InRelease
#15 25.28   Temporary failure resolving 'deb.debian.org'
#15 37.76 Err:7 http://deb.debian.org/debian bullseye-updates InRelease
#15 37.76   Temporary failure resolving 'deb.debian.org'

Thanks @rfay
That was my initial thought, but then I couldn't figure out why downgrading would fix it.  In any event, it does seem to be resolved now.
I hate to piggyback, but I'm getting a different error related to the supplemental cron add-on (https://github.com/ddev/ddev-cron).

failed to solve: failed to compute cache key: "/cron.conf" not found: not found

I tried moving cron.conf from web-build to the .ddev root.
I also tried adjusting the path in Dockerfile.ddev-cron to './cron.conf' and '/mnt/ddev_config/web-build/cron.conf'
I finally just I disabled all the lines in Dockerfile.ddev-cron to get the container running.
Do you have any suggestions or should I create an issue under that repo?
Thanks!

@rfay I found this...
https://github.com/ddev/ddev-cron/issues/21
I changed the path to .ddev/web-build/cron.conf, but now I'm getting those name resolution errors again.  I'll work through the troubleshooting guide.  Thanks.

Yeah, could have just done ddev get ddev/ddev-cron to fix it as well. Thanks for the update!


Some tests fail

I'm reviewing your chapters.  On running npm install and npm run build in the blockchain and chapter-listings directories, I then run npm run test-all from the chapter-listings directory and receive test errors.  I get more-or-less the same errors running in Docker Compose.
npm run test-all

><EMAIL_ADDRESS>test-all /home/jahred/Documents/writing/joj/src/chapter-listings
> rm -rf _babel && babel src --out-dir _babel/src --keep-file-extension; mjs-mocha _babel; rm -rf _babel

@babel/preset-env: `DEBUG` option

Using targets:
{
  "node": "12.7"
}

Using modules transform: false

Using plugins:
  syntax-async-generators { "node":"12.7" }
  syntax-object-rest-spread { "node":"12.7" }
  syntax-json-strings { "node":"12.7" }
  syntax-optional-catch-binding { "node":"12.7" }

Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.
Successfully compiled 55 files with Babel.
  1.3.2 - JavaScript objects: no fluff, just stuff:
    ✔ Object literals passed
    ✔ Object constructor passed
    ✔ Classes passed
    ✔ Delegation passed
    ✔ Functional Mixins passed

 ✔ All 5 tests passed

  1.3.4 - Inheritance vs composition: why not both?:
    ✔ Block class with composed mixins passed
    ✔ Object.assign vs compose passed

 ✔ All 2 tests passed

  1.4.1 - Algebraic Coding:
    ✔ Implement read using Validation ADT passed
    ✔ countBlocksInFile using Validation#map passed

 ✔ All 2 tests passed

  1.4 - Higher-order functional programming:
    ✔ Functions are objects passed
    ✔ Compose using reduce passed

 ✔ All 2 tests passed

  1.5 - Separating concerns like a pro:
Execution time: 0s 0.011015ms
    ✔ Perf counter using proxy passed

 ✔ All 1 tests passed

  1.6 - Taming asynchronous code:
Result is:  7
    ✔ CountBlocksInFile using async/await passed

 ✔ All 1 tests passed

  1.7 - Types for JavaScript?:

 ✔ All 0 tests passed

  2.1.2 - Differential inheritance:
    ✔ Adds calculateHash to transaction passed
    ✔ Differentiate using Object.setPrototypeOf passed

 ✔ All 2 tests passed

  2.1 - Reviewing "prototypal inheritance":
    ✔ Simple proto passed
    ✔ Transaction objects linked using a basic prototype setup passed

 ✔ All 2 tests passed

  2.2 - Constructor functions:
    ✔ Transaction hierarchy using constructor functions passed
    ✔ Omit new.target check passed
    ✔ Fat-finger prototype references passed

 ✔ All 3 tests passed

  2.3.2 - Limitations of JavaScript class system:
Transaction from<EMAIL_ADDRESS>to<EMAIL_ADDRESS>    ✔ Studies Fragile base object passed

 ✔ All 1 tests passed

  2.3.1 - Prototypes !== classes:
    ✔ Listing 2.3 Transaction hierarchy using constructor functions passed
    ✔ Transaction using IIFE passed

 ✔ All 2 tests passed

  3.1 - Object/behavior delegation with OLOO:
    ✔ Listing 3.1 HashTransaction using simple object linking passed

 ✔ All 1 tests passed

  3.2.1 - Explicit Delegation:
    ✔ Listing 3.2 Explicit delegation from Blockchain to its internal array store passed
    ✔ Shows a version of Blockchain based on an internal Map passed

 ✔ All 2 tests passed

  3.2.2 - Implicit Delegation:
    ✔ Using a constructor function passed
    ✔ Classes passed
    ✔ Array-like + constructor function passed
    ✔ OLOO passed
    ✔ Listing 3.2 - Modeling Transaction using behavior delegation (OLOO) passed

 ✔ All 5 tests passed

  3.3 - Functional Mixins:
    ✔ 3.3.1 - Object.assign uncovered passed

 ✔ All 1 tests passed

  3.3 - Functional Mixins:
    ✔ 3.3.2 - Assignment vs definition passed

 ✔ All 1 tests passed

  3.4.1 - Mixin linearization:
    ✔ Simple mixin linearization passed
    ✔ Blockchain definition using mixins passed
    ✔ Listing 3.8 Block definition passed
    ✔ Listing 3.9 Wallet object passed

 ✔ All 4 tests passed

Base is /home/jahred/Documents/writing/joj/src/chapter-listings/wallets
  3.4 - Assembling objects using mixins:
    ✔ Simple mixin composition passed
    ✔ Simple mixin composition using spread operator passed
    ✔ Listing 3.3 Transaction object using mixin concatenation passed
    ✔ Listing 3.4 HasHash mixin passed
    ✔ Listing 3.5 HasSignature mixin passed

 ✔ All 5 tests passed

  4.1 - What is functional programming, exactly?:
    ✔ Demonstrates using higher-order functions passed
    ✔ 4.1.2 - Shows why Array.sort is impure passed

  4.1.2 - Convert imperative to functional:
    ✔ Imperative passed
    ✔ Functional passed

 ✔ All 4 tests passed

  4.2.1 - Decomposing complex code:
    ✔ Before decomposing passed
    ✔ After decomposing passed
    ✔ After decomposing, using a recursive version of computeCipher passed

 ✔ All 3 tests passed

  4.2.2 - Working with side effects:
    ✗ Imperative function that counts words in a text file failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
    at Object.openSync (fs.js:447:3)
    at Proxy.readFileSync (fs.js:349:35)
    at countWordsInFile (file:///home/jahred/Documents/writing/joj/src/chapter-listings/_babel/src/ch04/4-2-2.spec.mjs:20:29)
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:157:18)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
}
    ✗ Counting words using manual composition failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
    at Object.openSync (fs.js:447:3)
    at readFileSync (fs.js:349:35)
    at countWordsInFile (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:160:57)
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:161:18)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
}
    ✗ Counting words using compose2 failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
    at Object.openSync (fs.js:447:3)
    at readFileSync (fs.js:349:35)
    at file:///home/jahred/Documents/writing/joj/src/blockchain/dist/lib/fp/combinators.mjs:5:50
    at file:///home/jahred/Documents/writing/joj/src/blockchain/dist/lib/fp/combinators.mjs:5:50
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:165:18)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
}
    ✔ Shows simple reduce passed
    ✗ countWordsInFile implemented with compose failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
    at Object.openSync (fs.js:447:3)
    at readFileSync (fs.js:349:35)
    at file:///home/jahred/Documents/writing/joj/src/blockchain/dist/lib/fp/combinators.mjs:5:50
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:179:18)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/3fn16.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
}

 ✗ 4/5 failed

  4.2 - Composition: the functional way:
    ✔ Demonstrates compose2 passed

 ✔ All 1 tests passed

  4.3.1 - Curried Function Application:
    ✔ Working with prop and props passed
    ✔ Curried versions of prop passed

 ✔ All 2 tests passed

  4.3.2 - The curry and composition duo:
    ✔ Secure compute cipher for HasHash mixin passed
    ✔ Implements HasHash mixin passed

 ✔ All 2 tests passed

  4.3 - Lazy coding:
    ✔ Use default value to assert preconditions passed
    ✔ Shows add manually curried passed

 ✔ All 2 tests passed

  4.4 - Working with immutable objects:
    ✔ Working with Money Value Object passed
    ✔ Implements HasHash mixin by sending copy of data passed

 ✔ All 2 tests passed

  4.5 - Point-free coding:
    ✗ Count words/blocks in file as point-free failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
    at Object.openSync (fs.js:447:3)
    at readFileSync (fs.js:349:35)
    at file:///home/jahred/Documents/writing/joj/src/blockchain/dist/lib/fp/combinators.mjs:5:50
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/_babel/src/ch04/4-5.spec.mjs:28:18)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/xfngbc.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/xfngbc.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/ch04/sample.txt'
}

 ✗ 1/1 failed

  4.6 - Imperative to functional transformation:
    ✔ Calculate balance in Wallet using FP passed
    ✔ Calculate balance in Wallet using FP with flatMap passed
    ✔ Calculate balance in Wallet using FP in point-free style passed

 ✔ All 3 tests passed

  4.7 - Looking into the future:
    ✔ Function binding passed
    ✔ Pipelining passed

 ✔ All 2 tests passed

  4 - Introduction:
    ✔ Demonstrates that JavaScript functions are objects too by printing its parent constructor passed

 ✔ All 1 tests passed

  5.1.1 - Using containers for encapsulation and immutability:
    ✔ Mapping functions on an array passed
    ✔ Implementing a “contextless” container by extending from Array passed

 ✔ All 2 tests passed

  5.1.2 - Contextual composition:
    ✔ Uses compose in place of Id.map passed

 ✔ All 1 tests passed

  5.1.3 - JavaScript data types:
    ✔ Tests JS primitive types passed

 ✔ All 1 tests passed

  5.2 - New Array APIs: {flat, flatMap}:
    ✔ Intro passed
    ✔ 5.2.1 Array.prototype.flat passed
    ✔ 5.2.2 Array.prototype.flatMap passed

 ✔ All 3 tests passed

  5.3 - The map/compose correspondence:
    ✔ map passed
    ✔ flatMap passed

 ✔ All 2 tests passed

  5.4 - Universal protocols:
    ✔ 5.4.1 - Functors: identity and composition passed
    ✔ Functor mixin passed
    ✔ Monads: Left identity, Right identity, Associativity passed
    ✔ Monad mixin passed

 ✔ All 4 tests passed

  5.5 - Kinds of algebraic data types:
    ✔ Records passed

 ✔ All 1 tests passed

  5.6.4 - Higher-kinded composition with Validation:
Block {
  index: 2,
  previousHash: '737dd980481c43014739ff3033a1ad5cd116eca233eff8c5c766ec2f78268084',
  data: [ 'some data' ],
  nonce: 0,
  difficulty: 0,
  timestamp:<PHONE_NUMBER>335,
  hash: '2b505ee8c0c48cc6fd3fa68274c47087b15d1af404a01e146f7a7b4613c3e44c'
}
    ✔ Shows isValid using flatMapo passed

 ✔ All 1 tests passed

  5.6.5 - 1.6.5	Point-free coding with ADTs:
Block {
  index: 2,
  previousHash: 'ad1dc90aaff2d2e7c8fb6d744012e11633ccc386193ab6352c71540b5d565b9c',
  data: [ 'some data' ],
  nonce: 0,
  difficulty: 0,
  timestamp:<PHONE_NUMBER>395,
  hash: '6d16927972721725663f5dcbf40c223f4eca919c2f24b35e04b20169789b1f99'
}
    ✔ Shows isValid using composeM passed

 ✔ All 1 tests passed

  5.6.6 - Validating complex data structures:
Failure (Block out of order [previous (2) next (0)])
    ✔ Calls isValid recusively on the entire blockchain and its items passed

 ✔ All 1 tests passed

  5.6.7 - Third party integration:
    ✔ Using Ramda passed

 ✔ All 1 tests passed

  5.6 - Implementing the Validation ADT:
    ✔ 5.6.2 - Modeling success or failure passed
    ✗ Parent Validation class with Success and Failure subclasses failed
AssertionError: expected false to be true
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/_babel/src/ch05/5-6.spec.mjs:231:12)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/x64hq.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/x64hq.mjs:110:7) {
  message: 'expected false to be true',
  showDiff: true,
  actual: false,
  expected: true
}
Block {
  index: 2,
  previousHash: '996570b54b03a127984e489664626db2cce30cdea6243e05aa5606579fffcb1a',
  data: [ 'some data' ],
  nonce: 0,
  difficulty: 0,
  timestamp:<PHONE_NUMBER>646,
  hash: '8057c30ba57a140371b8b01146a026448f82e370b57f8f660de835280182aa0f'
}
    ✔ Validating a block passed

 ✗ 1/3 failed

  5.7 - ADTs that help shape the future of JavaScript:
    ✔ 5.7.1	Optional chaining passed
    ✔ Maybe/Result passed
    ✔ 5.7.2	Try and throw expressions passed

 ✔ All 3 tests passed

  6 - Scratch Pad:
TBD
    ✔ CJS case passed
    ✔ ESM case passed

 ✔ All 2 tests passed

  Extending from Arrays:
    ✔ Should extend from Array using classes passed
    ✔ Should extend from Array using classes (set species) passed
    ✔ Should extend from Array using prototype passed
    ✔ Should use structure typing (array-like) to behave like an array passed

 ✔ All 4 tests passed

  Bind proposal:
    ✔ prop passed
    ✔ map passed
    ✔ Money passed
    ✔ Extracts from Array passed

 ✔ All 4 tests passed

  Calculate hash:
    ✔ calculates a hash using composition passed
    ✔ calculates a hash using composition and recursion passed

 ✔ All 2 tests passed

  Combining classes with mixins:
funds 0
funds 20
    ✔ Should create an amphibian object passed

 ✔ All 1 tests passed

  Count words:
Result is:  3
    ✔ compose2 passed
    ✔ pipeline passed
    ✗ Count blocks imperative failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/misc/sample.txt'
    at Object.openSync (fs.js:447:3)
    at Proxy.readFileSync (fs.js:349:35)
    at countWords (file:///home/jahred/Documents/writing/joj/src/chapter-listings/_babel/src/misc/countwords.spec.mjs:36:25)
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:173:20)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/misc/sample.txt'
}
    ✗ Count blocks using composition failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/misc/sample.txt'
    at Object.openSync (fs.js:447:3)
    at readFileSync (fs.js:349:35)
    at file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:149:43
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:187:20)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/misc/sample.txt'
}
    ✗ Count blocks using compose2 failed
Error: ENOENT: no such file or directory, open '/home/jahred/Documents/writing/joj/src/chapter-listings/src/misc/sample.txt'
    at Object.openSync (fs.js:447:3)
    at readFileSync (fs.js:349:35)
    at file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:149:43
    at file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:149:43
    at Object.callback (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:196:20)
    at processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:94:20)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async processLevel (file:///home/jahred/Documents/writing/joj/src/chapter-listings/node_modules/mjs-mocha/temp/7ajtyl.mjs:110:7) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/jahred/Documents/writing/joj/src/chapter-listings/src/misc/sample.txt'
}

 ✗ 3/5 failed

  Studies new and instanceof:
{ fromEmail: 'a', toEmail: 'b' }
    ✔ Using new passed
    ✔ Using instanceof passed

 ✔ All 2 tests passed

  OLOO domain modeling:
[ { hash: '0000' } ]
[ { hash: '0000' }, { hash: '234' } ]
true
    ✔ Extends array using OLOO pattern passed
    ✔ Should create a simple Transaction model passed
MY NAME IS LUIS!!
I'm studying compsci
    ✔ Should create a simple Person/Student model passed
Hello, I am Bar:b1.
Hello, I am Bar:b2.
    ✔ Should create a simple Foo/Bar model passed

 ✔ All 4 tests passed

  Parameter validation with default arguments:
    ✔ Uses default argument syntax to provide parameter validation passed
    ✔ Validates the second argument passed
    ✔ Validates the first argument passed

 ✔ All 3 tests passed

 ✗ 4/53 test suites failed

Whoops I was .gitignore-ing the .txt files. I fixed and checked it in. Please do a Git pull and try again. Thanks for letting me know!

All good, now. Thanks :)


EPIC - Support the same workflow name in different namespaces

Description
From the SonataFlow and other k8s deployments perspective, a workflow/process with the same name, deployed in two different namespaces, namespace1 and namespace2, represents a completely different workflow/process.  And, even while having the same name/id, the workflow/process definition might be totally different.
However, when we have an installation, where the Data Index was installed in a cluster-wide mode, we have an issue, since the Data Index is not prepared to manage namespaced workflow/process definitions.
Instead, if workflow/process "my-workflow" is deployed in namespace1, and then, in a later point in time, in namespace2 (with a potential different definition), the last deployment will overwrite previous definition.
The objective of this epic is to support this use case

[ ] https://github.com/apache/incubator-kie-kogito-serverless-operator/issues/442
[ ] https://github.com/apache/incubator-kie-kogito-apps/issues/2031
[ ] https://github.com/apache/incubator-kie-kogito-runtimes/issues/3562
[ ] https://github.com/apache/incubator-kie-tools/issues/2435

Implementation ideas
No response

An alternative to deploy the  same workflow with different configuration is to allow dynamic configuraiton within the same namepace for OpenAPI properties, see https://github.com/apache/incubator-kie-kogito-serverless-operator/issues/501


Should we still take providers list in ConfigurationBuilder constructor?

Some providers will depend on data in the configuration builder's Properties to initialize correctly (right now the only example of this are the file-based providers which use GetBasePath() to figure out the full paths of configuration files, but things can evolve to include more cases).
At least the way things are implemented right now, providers will only get wired up correctly if the configuration builder is created empty and the sources are added through the AddXyz() methods.
If providers can still be passed to the ConfigurationBuilder's constructor, but then the burden of initializing the provider correctly (e.g. resolve the full path for configuration files) is on the application. It seems that the value of passing the providers in the constructor argument has diminished.

Agreed.

Any chance to document breaking changes? A blog post, something?

@leus we post significant breaking changes here: https://github.com/aspnet/Announcements/ (and you can subscribe to notifications)

@Eilon @kirthik could the announcements https://github.com/aspnet/Announcements/issues/88 and https://github.com/aspnet/Announcements/issues/91 be put in the correct milestone so we can act when necessary?

@henkmollema looks like the milestones are correct now on those issues.

Yeah I noticed. Thanks @Eilon and @kirthik!


Merge pull request #24 from douglasb/RMarticles

R marticles

👷 Deploy Preview for sparkly-mousse-72daf9 processing.

Name
Link

🔨 Latest commit
5056816044b81ac20dbea09bda2d14365b5803f9

🔍 Latest deploy log
https://app.netlify.com/sites/sparkly-mousse-72daf9/deploys/6445dd63c2bbbe0008e0bac1


phengreaksmey

TypeScript Version:
1.7.5 / 1.8.0-beta / nightly (1.9.0-dev.20160217)
Code
// A self-contained demonstration of the problem follows...

Expected behavior:
Actual behavior:

#7721

<EMAIL_ADDRESS>


Allow overwriting repo_opt with ''

Setting it to undef makes puppet use the default from ::docker::params.
This change allows us to set it to '' instread omit any additional install_options.

+1, looks good

+1
Actually the default `repo_opt' params won't work in rhel7 and this patch is the only way out of it (at least from my personal experience).

@felixb thanks for the fix. I'll have a think about a nicer interface for this, but for now this solves the problem. Much appreciated.


Travis.yml improvements

Hello, have added more params into the .travis.yml. My forked repository passed all tests with it
https://travis-ci.org/dmitrijivanenko/kolpa/builds/260506003

Thanks a lot. Merged.


Enhancement Request: Add flag to suppress "managedFields" from output

What would you like to be added:
A flag to get <object> -o <format> to suppress the managedFields in the output.
Why is this needed:
With 1.18, the output of a manifest from kubectl get <object> -o <yaml> now has the additional managedFields. This addition is generally not useful when inspecting an object or debugging a failing service/pod/etc.
This might be part "this is new and I'm not used to look at this", but I do think that it increases the noise in the output here and makes it more difficult to scan a manifest while trying to figure out what's wrong to debug it.
I'm opening this issue to see if there's a possibility of adding a new CLI flag to this command to suppress the managedFields from this output.
 Darren also mentions UI projects (i.e. Kubernetes Dashboard, Kontena Lena) will have to apply patches to hide this information so that they remain usable.

See https://github.com/kubernetes/kubernetes/issues/89080 and also https://github.com/kubernetes/kubernetes/issues/90066

We'll track this on https://github.com/kubernetes/kubernetes/issues/90066
/triage duplicate
/close


New release of the operator since spark 2.4.5 is officially cut

Hi was just wondering when the next release would be.

Will cut a release today.

https://console.cloud.google.com/gcr/images/spark-operator/GLOBAL/spark-py@sha256:c1f21b8b6f4f0ad7b25177ad086b7eaf7d96747940b0fe2e8dc6ca688c85db76/details?tab=info

A new release of the operator has been cut: https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/releases/tag/v1beta2-1.1.0-2.4.5. The image has also been published at gcr.io/spark-operator/spark-operator:v1beta2-1.1.0-2.4.5.

Thank you 👍


No module named 'pyparsing'

Hi, i got some error on CF.
Output : Unable to parse Cloudflare anti-bots page: No module named 'pyparsing'
but pyparsing is installed on my computer.
I missed something ?
Thanks for your help :)

Are you using Python2 or Python3? Maybe you have installed pyparsing only in one of them.
When you install new version of Cloudscraper it installs only pyparsing for Python3. If you are using Python2 then you have to do the installation of pyparsing manually.
sudo apt-get install python-pyparsing
sudo apt-get install python3-pyparsing

Hrrm.... how did you install cloudscraper?
py2 and py3 in https://pypi.org/project/pyparsing/2.4.7/#files
also its in requirements.txt
https://github.com/VeNoMouS/cloudscraper/blob/master/requirements.txt#L4
as well as
https://github.com/VeNoMouS/cloudscraper/blob/master/setup.py#L38
so not sure why you're having a problem!?

root@tvz0r:/tmp# pip2 install cloudscraper
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting cloudscraper
  Using cached cloudscraper-1.2.36-py2.py3-none-any.whl (109 kB)
Requirement already satisfied: requests-toolbelt>=0.9.1 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (0.9.1)
Collecting pyparsing>=2.4.7
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Requirement already satisfied: requests>=2.9.2 in /usr/local/lib/python2.7/dist-packages (from cloudscraper) (2.22.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (2019.6.16)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (1.25.3)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (3.0.4)
Requirement already satisfied: idna<2.9,>=2.5 in /usr/local/lib/python2.7/dist-packages (from requests>=2.9.2->cloudscraper) (2.8)
Installing collected packages: pyparsing, cloudscraper
  Attempting uninstall: pyparsing
    Found existing installation: pyparsing 2.1.10
    Uninstalling pyparsing-2.1.10:
      Successfully uninstalled pyparsing-2.1.10
Successfully installed cloudscraper-1.2.36 pyparsing-2.4.7
root@tvz0r:/tmp#

it installs fine via pip for py2

sudo python setup.py install
byte-compiling build/bdist.linux-x86_64/egg/cloudscraper/__init__.py to __init__.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying cloudscraper.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cloudscraper.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cloudscraper.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cloudscraper.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cloudscraper.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
cloudscraper.user_agent.__init__: module references __file__
creating 'dist/cloudscraper-1.2.36-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing cloudscraper-1.2.36-py2.7.egg
removing '/usr/local/lib/python2.7/dist-packages/cloudscraper-1.2.36-py2.7.egg' (and everything under it)
creating /usr/local/lib/python2.7/dist-packages/cloudscraper-1.2.36-py2.7.egg
Extracting cloudscraper-1.2.36-py2.7.egg to /usr/local/lib/python2.7/dist-packages
cloudscraper 1.2.36 is already the active version in easy-install.pth
Installed /usr/local/lib/python2.7/dist-packages/cloudscraper-1.2.36-py2.7.egg
Processing dependencies for cloudscraper==1.2.36
Searching for pyparsing>=2.4.7
Reading https://pypi.python.org/simple/pyparsing/
Downloading https://files.pythonhosted.org/packages/4f/49/f5ef814360ce13ab6eab4e05762ce555ed5bbc169ac941229a3355e91
97a/pyparsing-3.0.0a1.tar.gz#sha256=700d17888d441604b0bd51535908dcb297561b040819cccde647a92439db5a2a
Best match: pyparsing 3.0.0a1
Processing pyparsing-3.0.0a1.tar.gz
Writing /tmp/easy_install-HTYsRY/pyparsing-3.0.0a1/setup.cfg
Running pyparsing-3.0.0a1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-HTYsRY/pyparsing-3.0.0a1/egg-dist-tmp-
JqzXBT
Traceback (most recent call last):
  File "setup.py", line 55, in
    'Topic :: Software Development :: Libraries :: Python Modules'
  File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 117, in do_egg_install
    cmd.run()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 436, in run
    self.easy_install(spec, not self.no_deps)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 680, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 727, in install_item
    self.process_distribution(spec, dist, deps)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 772, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 846, in resolve
    dist = best[req.key] = env.best_match(req, ws, installer)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1118, in best_match
    return self.obtain(req, installer)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1130, in obtain
    return installer(requirement)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 699, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 725, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 906, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1145, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1131, in run_setup
    run_setup(setup_script, args)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 258, in run_setup
    raise
  File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 198, in setup_context
    yield
  File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 169, in save_modules
    saved_exc.resume()
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 144, in resume
    six.reraise(type, exc, self._tb)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 157, in save_modules
    yield saved
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 198, in setup_context
    yield
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 255, in run_setup
    DirectorySandbox(setup_dir).run(runner)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 285, in run
    return func()
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 253, in runner
    _execfile(setup_script, ns)
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 47, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-HTYsRY/pyparsing-3.0.0a1/setup.py", line 10, in
    readme = fp.read()
  File "/tmp/easy_install-HTYsRY/pyparsing-3.0.0a1/pyparsing/__init__.py", line 104, in
  File "/tmp/easy_install-HTYsRY/pyparsing-3.0.0a1/pyparsing/core.py", line 166
    nonlocal found_arity, limit
                       ^
SyntaxError: invalid syntax
So if I want to execute cloudscraper in python2 I have to install pyparsing manually... and then it works Ok:
sudo apt-get install python-pyparsing

We are not the only ones with this issue. In case of python2, you need to install pyparsing 1.5.7 that is compliant with Python 2.7, whereas pyparsing 2.0 is compliant with Python 3.0
You can do that from the command line with the following command:
sudo pip install pyparsing==1.5.7
Sources:
https://github.com/matplotlib/matplotlib/issues/1792/
https://www.odoo.com/forum/help-1/question/installation-issue-pyparsing-2-0-0-6876

You are right, if I install with command
pip2 install cloudscraper
then it installs the right way with no errors.
The problem comes if I do the install with
sudo git clone https://github.com/VeNoMouS/cloudscraper
cd cloudscraper
sudo python setup.py install
In the second case, it raises the pyparsing error, due to the explanation given in the last post.


Malformed ObjectID

As far as I can tell I cannot get this to work when using MongoDB as the database.
Mongo expects its '_id' parameter to be of type ObjectId (bson), but I have found no way of making dbRecordIdFunction return a valid ObjectId
Why does this package rely on inserting the id field into the database, instead of allowing Prisma/Mongo to generate its own, via @default()?

Mongo expects its '_id' parameter to be of type ObjectId (bson)
There's actually no such restriction, as long as you @map the field to _id it'll work.

You get a different issue when you try to use the id field as _id (can't quite remember what it is, but it's described in another issue)
A (completely untested but working enough to bypass the issue) solution can be to just define an Object ID as the main id.
model Session {
  objId     String   @id @map("_id") @db.ObjectId @default(auto())
  id        String   @unique
  sid       String   @unique
  data      String
  expiresAt DateTime
}

Thanks for the replies!
@kleydon - I hadn't considered it, but looking now; it does seem that MongoDB has only recently been officially supported!
@SunburntRock89 - I had tried literally everything, except maybe the concept of saving the _id in a separate field to the id this package passes 🙈
This was as far as got before I edited the source files (untested) to allow this
model Session {
  id             String   @id @map("_id") @default(auto()) @db.ObjectId
  sid            String   @unique
  data         String
  expiresAt DateTime
}

This was as far as got before I edited the source files (untested) to allow this

model Session {
id           String   @id @map("_id") @default(auto()) @db.ObjectId
sid          String   @unique
data         String
expiresAt DateTime
}

Curious: Is this working for you so far?

@kleydon - No, that was as far as I got. Using that layout still produces the malformed ObjectId Error.
I believe what SunBurntRock has said would be a usable workaround, just means adding an extra 'objId' column into the database (making for three id fields; _id, id & sid )!.
I brute-forced a fix by removing:
id: this.dbRecordIdIsSessionId ? sid : this.dbRecordIdFunction(sid),

From the data object @line 391, prisma-session-store.ts,
I haven't had time to test this, beyond successfully writing/reading sessions from the database

@Sunnuld Ok - good to know.

@SunburntRock89 - Do you think this can be closed, now that PR #96 is merged, or are there other details that need to be thought through?

@kleydon In my (limted) testing you don't need a specific object ID field anymore. In fact I think I ended up encountering another, bigger issue because of using the workaround whilst testing this change.

👍


Improve Footer white 15

Need to improve this component on Footer/src/footer-white-15.html
Improvements required :

Make it responsive
Make it as shown in figma file

Any reference image?
Full Screen View

Mobile View

You can checkout this one for better understanding.

@Rajdip019 Please Assign this to me

Done #781


Allow to add RESET values from existing keys

This PR adds a way to quickly create RESET values from existing animation keys. It's useful when importing old animations or when you just want to update the RESET value to match another animation.

If multiple keys are selected, only the first selected key in a track will get a RESET value:

Closes #55634

Thanks!

Nice! Thanks!

@KoBeWi I did a backport for 3.x in my local branch, and it seems to work, but it raises an error when adding a reset track this way:
 scene/resources/animation.cpp:881 - Index p_track = 0 is out of bounds (tracks.size() = 0).

This is the commit in my fork (didn't push to upstream 3.x yet): https://github.com/akien-mga/godot/commit/10d200c812abd5c6f95ae9afbabe52eaf4c25607
I didn't check if it's reproducible in master.

I don't know how I missed this error, I'll make a hotfix >_>

Cherry-picked for 3.5. (Together with #55671.)


ROS2 recipes for dashing

Hi,
I'm interested in the ROS2 meta layer for the dashing release. What is the status of these recipes, and is somebody working on this?
I also posted this question here on discourse, for the people who are interested: https://discourse.ros.org/t/ros2-yocto-meta-layer/9643
Regards,
Windel

Recipes for dashing are now available -- see https://github.com/ros/meta-ros/wiki/OpenEmbedded-Build-Instructions. Please let us know if you encounter any problems.


[NuGet.org Bug]: Symbol Server: Can't find pdbs bundled in nupkg via the Symbol Server API

Impact
I'm unable to use NuGet.org
Describe the bug
Unless packages are published via snupkg, using nuget.org's Symbol Server API doesn't result in finding symbols.
See: https://github.com/getsentry/symbolicator/issues/1437
Repro Steps
Use the documented alternative to symbol packages:
https://learn.microsoft.com/en-us/dotnet/standard/library-guidance/nuget#symbol-packages
In other words, instead of publishing a separate snupkg, copy the pdb to the output directory to let it get copied into the nupkg next to the dll.
Google uses this approach here: https://github.com/googleapis/google-cloud-dotnet/blob/2f193795dd1daaba3ad6dd1f0f6b0c20c6597e6a/tools/DotnetToolProperties.xml#L8
Expected Behavior
When a debugger (or a crash reporting service like Sentry tries to fetch the debug symbols for a DLL loaded from nuget.org, it finds them and downloads them.
Unfortunately that doesn't happen. When using snupkg, it works as expected.
Screenshots

PDBs exist in the nupkg: https://nuget.info/packages/Google.Cloud.Storage.V1/4.10.0

Additional Context and logs
We use the Microsoft Symbol Server format to fetch symbols (worked for the other symbols on the screenshot above);

2024-04-17T15:21:07.275945Z DEBUG symbolicator_service::download::http: Fetching debug file from https://symbols.nuget.org/download/symbols/Google.Cloud.Storage.V1.pdb/A18B94CDA70745BEB0A2C316C2AB5314ffffffff/Google.Cloud.Storage.V1.pdb
[…]
2024-04-17T15:21:07.413918Z DEBUG symbolicator_service::download: Unexpected client error status code from https://symbols.nuget.org/download/symbols/Google.Cloud.Storage.V1.pdb/A18B94CDA70745BEB0A2C316C2AB5314ffffffff/Google.Cloud.Storage.V1.pdb: 404 Not Found

It's trying to download from that URL with an additional header of SymbolChecksum: SHA256:cd948ba107a7be65b0a2c316c2ab5314f8339cb1c32051c3138287f307a274d6. Assuming the identifiers and the checksum are all correct, where on the server should the file be found? How does snupkg vs nupkg translate into paths?

Quotes from this comment

Suggested solution: when processing nupkg, copy out PDBs and make them available same way as when ingesting snupkg packages. Before snupkg were the preferred way to upload symbols, "everyone" was doing the embedded pdb in nupkg, including Sentry for many years.

Thanks for the suggestion, @bruno-garcia. I think this proposal makes sense in many ways. The data shows that active packages favor .snupkg -- 15% use .snupkg and 12% use "PDB in .nupkg".

In other words, both have similar adoption but .snupkg is on the rise and PDB is on the slight decline but still quite active. But as you say "PDB in .nupkg" is a documented alternative so perhaps it should have support that's just as good, or nearly as good, as .nupkg.
Some kinks that we'd need to work out are:

How do we manage Windows (non-portable) PDBs in .nupkgs?

Today, a .snupkg is rejected if it has non-portable PDBs. Would we reject .nupkgs with Windows PDBs? Or silently not ingest them into the symbol server? Open questions.

If a .nupkg has both PDBs in it and a .nupkg, which one "wins"? Do we just ingest all of the PDBs or just one set? Do we reject a .snupkg for a package that has PDBs in it?
Today .snupkg is mutable in the sense that you can delete and replace the .snupkg on an existing version. Is this scenario important for .nupkg based PDBs which are immutable today?

Perhaps another option is to improve the debugger client to know about PDBs in the NuGet global package folder. This makes sense for cases when you're debugging a project that depends on these other DLLs (e.g. Google APIs) as package reference. But what if you're debugging an entry point without project context? For example windbg can read from a symbol server like NuGet.org's symbol server (theoretically). In cases like that the NuGet global packages folder may not be populated with the packages associated with the runtime dependencies you're looking at.
There is also the perspective that other package sources may not want to implement the .snupkg ingestion flow but do want to implement a symbol server. In such cases they may very well want to ingest PDBs from .nupkg (or that cursed old .symbols.nupkg artifacts). Should we enhance the metadata in the NuGet V3 protocol to allow package sources to declare how they treat PDBs in .nupkg and/or .snupkg? It's possible this question extends beyond NuGet.org.

Some kinks that we'd need to work out are:

How do we manage Windows (non-portable) PDBs in .nupkgs?

Today, a .snupkg is rejected if it has non-portable PDBs. Would we reject .nupkgs with Windows PDBs? Or silently not ingest them into the symbol server? Open questions.

PPDB has been default on all flavors of .NET for many years now, I imagine silently not ingesting would be OK. That said further analysis on % of pdbs affected before committing to this decision might be the safer route.

If a .nupkg has both PDBs in it and a .nupkg, which one "wins"? Do we just ingest all of the PDBs or just one set? Do we reject a .snupkg for a package that has PDBs in it?

I imagine this isn't a common scenario but it's a fair point. I imagine it doesn't matter which one wins because the way this could happen is if an app is configured to write pdb to the bin folder and packages it, while also creating snupkg. So if one overrides the other, or if the nupkg extraction doesn't happen because before doing so it checks of snupkg already exists, either way would be fine.

Today .snupkg is mutable in the sense that you can delete and replace the .snupkg on an existing version. Is this scenario important for .nupkg based PDBs which are immutable today?

tbqh I don't know why one would need to make symbols mutable. They come out of the compiler with the executable and if you can't change the executable, why do that for the symbols? Here again (prob due to my ignorance on the subject) I imagine it's fine if snupkg are mutable while the extracted ppdb are not. Or "push a snupkg to override it" if that's the behavior decided above.

Perhaps another option is to improve the debugger client to know about PDBs in the NuGet global package folder. This makes sense for cases when you're debugging a project that depends on these other DLLs (e.g. Google APIs) as package reference. But what if you're debugging an entry point without project context? For example windbg can read from a symbol server like NuGet.org's symbol server (theoretically). In cases like that the NuGet global packages folder may not be populated with the packages associated with the runtime dependencies you're looking at.

The use case I'm thinking of (which is the one that affected my ability to debug things since I had no line numbers) was a live/prod app. Sentry captures the stack trace, and on the server (sentry itself, not a .NET app) looks up symbols via symbol servers.

There is also the perspective that other package sources may not want to implement the .snupkg ingestion flow but do want to implement a symbol server. In such cases they may very well want to ingest PDBs from .nupkg (or that cursed old .symbols.nupkg artifacts). Should we enhance the metadata in the NuGet V3 protocol to allow package sources to declare how they treat PDBs in .nupkg and/or .snupkg? It's possible this question extends beyond NuGet.org.

I don't have strong opinions here, I imagine folks on the NuGet team will know best what's the ideal route here

It would be interesting to consider how we could make .NET debuggable by default. Today, there are many gaps in the experience. See https://github.com/NuGet/Home/issues/10793 for another relevant discussion.

Should we enhance the metadata in the NuGet V3 protocol to allow package sources to declare how they treat PDBs in .nupkg and/or .snupkg?

I don't think we need additional metadata in the V3 protocol for this. In theory it is completely valid for a third-party NuGet server to ingest portable PDBs in a .nupkg:

Windows PDBs are inherently insecure. Symbol servers shouldn't expose these for .NET DLLs.
From my understanding, the symbol server protocol is basically a content-addressable store & there is only up to one valid portable PDB per DLL (the DLL contains the checksum of its portable PDB). If this is correct, the worst case scenario for ingesting all portable PDBs is that you have wasted space for portable PDBs that will never be downloaded.


Review + improve docs for "how to upgrade serialisation version"

I.e. from a developers point of view, how do I write SerHugrV2?

Closing as duplicate of #1235


Have a problem with ocmposer bower asset update

Hi, im trying to use composer update depending on your  repository
Adding VCS repository bower-asset/bootstrap
Downloading https://api.github.com/repos/twbs/bootstrap
Downloading https://api.github.com/repos/twbs/bootstrap/contents/bower.json?ref=master
Downloading https://api.github.com/repos/twbs/bootstrap/commits/master
Downloading https://api.github.com/repos/twbs/bootstrap/tags?per_page=100
Downloading https://api.github.com/repos/twbs/bootstrap/git/refs/heads?per_page=100
[UnexpectedValueException]
Could not parse version constraint <=2.: Invalid version string "2."
It happens on 2 different computers but not happen on remote, can you help me with that?

duplicate https://github.com/twbs/bootstrap/commit/9b1a213cf758e1b60e20c59a721a63e13da098f7

See https://github.com/francoispluchino/composer-asset-plugin/issues/129


refactor: tags

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 93.09%. Comparing base (cd89c06) to head (529317c).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #44      +/-   ##
==========================================
- Coverage   93.12%   93.09%   -0.04%
==========================================
  Files           7        7
  Lines         611      608       -3
==========================================
- Hits          569      566       -3
  Misses         42       42

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


SECTION_AWS_ACCOUNT

First, great project!
i am in doubt what value to fill in SECTION_AWS_ACCOUNT, in /util/config.py
i've tried:
arn:aws:iam::************:user/nfscan_development
nfscan_development
my aws account id ************
created /etc/boto.cfg with my account id and access key
no luck.
any advice?

Hi @matiasbraun
Thanks for you compliments, I'm still on the process of documenting this project to make it as easy as possible to use.
Regarding to this questions I thought this could be a good way to explain how things work on ocr-process-service project.

ocr-process-service uses boto as its way to communicate with AWS services. So you do can configure boto the way that fits best to you as described on their documentation.

the util/config.py file is a ocr-process-service file and it assumes you have already a working boto configuration file. It reads a file from /etc/ocr-process-service/ocr-process-service.cfg on your operational system. So you have two options: Either you move the template file located under the same path in this project to this location or you change this line to the place you have ocr-process-service.cfg. https://github.com/nfscan/ocr-process-service/blob/master/util/config.py#L17

on the ocr-process-service.cfg all you have to do is to set the values from your AWS resources. Basically it needs to know in which region you have configured the SQS queues and S3 bucket. It's very likely that if you have followed the previous set up walkthrough I've wrote on nfscan/nfscan repository that it's going to be something like this.

[aws_account]
default_region = sa-east-1

[aws_sqs]
queue_name_in = DES-NFSCAN-OCR-PROCESS-IN
queue_name_out = DES-NFSCAN-OCR-PROCESS-OUT

[aws_s3]
bucket_name = <YourBucket>

Let me know if that worked for you mate
Regards


Clarify supported Docker versions

I tried to run my existing playbooks with the latest version and got an error when trying to install with docker_version: 17.06 on Ubuntu 16.04 because the specified version is not available from the configured apt repo.
So it seems we no longer support all of the versions of the Docker engine we used to with the old 0.1.0 Rancher scripts.
The new logic relies on the yum/apt repositories at https://download.docker.com/linux/ but these repos seem to only support edge, nightly, test and stable tags — not individual Docker versions.
For now I just pinned down to 0.1.0, but we should clarify in the README which versions of Docker can be installed with this role, and ideally provide options for people to install older versions of the Docker engine, maybe just falling back to the Rancher scripts if need be...

Those repos have previous docker versions in them, so there is no need of reverting to rancher script. For example docker 17.06 is named 17.06.0~ce-0~ubuntu.
I think that there is a problem how docker_package variable is created and that's why setting docker_version: 17.06 failed on ubuntu.

Is it possible to reproduce this issue in our current test suite? If so, I'd like to see it attached to whatever proposal for a fix to make sure that it is truly fixed.

We would need another test scenario, and molecule 1.24 doesn't support multiple scenarios. Right now it's either latest or some specified version.


Example with images

Thanks for keeping this package updated!
I'm having some issues integrating it in my project. This is what I currently have:
import BlotFormatter2 from "@enzedonline/quill-blot-formatter2";
import { ForwardedRef, forwardRef, useEffect, useRef } from "react";
import { Quill } from "react-quill-new";

const BlockEmbed = Quill.import("blots/block/embed") as any;

class ImageBlot extends BlockEmbed {
  static blotName = "image";
  static tagName = "img";

  static create(value: any) {
    let node = super.create();
    node.setAttribute("src", value.url);
    node.setAttribute("alt", value.alt);
    node.setAttribute("height", value.height);
    node.setAttribute("width", value.width);
    node.setAttribute("style", value.style);
    return node;
  }

  static value(node: any) {
    return {
      url: node.getAttribute("src"),
      alt: node.getAttribute("alt"),
      height: node.getAttribute("height"),
      width: node.getAttribute("width"),
      style: node.getAttribute("style"),
    };
  }
}

Quill.register(ImageBlot);

Quill.register("modules/blotFormatter2", BlotFormatter2);

I'm using quill 2 with react-quill-new and I followed this guide to implement an ImageBlot. However after I embed an image with something like this:
editor.insertEmbed(
  insertSelection.current.index,
  "image",
  { alt: "Image", url: imageUrl },
  "user",
);

And try to click over it I get this error:
TypeError: blot.parent.formats is not a function
    at DefaultAligner.isAligned (DefaultAligner.js:51:59)
    at DefaultToolbar.preselectButton (DefaultToolbar.js:69:21)
    at eval (DefaultToolbar.js:54:18)
    at Array.forEach (<anonymous>)
    at DefaultToolbar.addButtons (DefaultToolbar.js:47:33)
    at DefaultToolbar.create (DefaultToolbar.js:16:14)
    at AlignAction.onCreate (AlignAction.js:16:38)
    at eval (BlotFormatter.js:55:20)
    at Array.map (<anonymous>)
    at BlotFormatter.createActions (BlotFormatter.js:54:42)
    at BlotFormatter.show (BlotFormatter.js:36:14)
    at ImageSpec.onClick (ImageSpec.js:16:28)

It looks like blot.parent is a ScrollBlot and it has no formats method.
https://github.com/enzedonline/quill-blot-formatter2/blob/master/src/actions/align/DefaultAligner.ts#L59
What is the correct way to use the plugin?

The code in that documentation example doesn't look right to me. The image blot is an inline blot rather than a block blot. You can see their own implementation here.
It's not actually necessary to create an image or video blot with this tough, you can just use the native Quill blots.
Pure JS example:
Quill.register('modules/blotFormatter2', QuillBlotFormatter2.default);
const quill = new Quill('#editor', {
  modules: {
    toolbar: [
      [{ header: [1, 2, false] }],
      ['bold', 'italic', 'underline'],
      ['image', 'video'],
    ],
    blotFormatter2: {},
  },
  placeholder: 'Compose an epic...',
  theme: 'snow', // or 'bubble'
});

CodePen
I'll take a look at the IsAligned() function and see if it can be modified to handle custom blots better. To be honest, the custom blot handling code is a leftover from the old version and, other than being converted to TypeScript, I left it alone as I concentrated on the native Quill image and video formats. I have an update almost ready which adds a modal form for images to edit alt & title attributes, if there's an improvement in the custom blot handling I can make, I'll add it in there. I'll let you know here when that's up.

Yep, wrong blot, working correctly now, thank you!

Great, glad you got it fixed.
It did prompt me to rewrite that bit of logic. Next release will look at blot scope instead of blot tag type to handle inline vs block.

v2.1 released today with that logic update. Also includes support for alt/title & captions for images.


[NFC] Batchnorm backward solvers core

This PR updates batchnorm::ProblemDescription, implements batchnorm::BwdInvokeParams, and updates BatchNormBackward.
Splitting it to a separate branch allows for making backward solver PRs in parallel rather than sequentially and eases the review by splitting the source.

Changes look good. I provided network configs earlier. Can you please run them for correctness and performance impact?

sure, will do

Passed, no noticeable performance difference, no OpenCL build parameters difference.

Passed, no noticeable performance difference, no OpenCL build parameters difference.

Good. I will approve this PR now.


CPU bottleneck during network training

The generation of training data takes up a disproportionate amount of time during training.

I deleted this branch as it had not been updated (and couldn't be at this time, if I remember correctly).


docs(readme-storybook-addons): update storybook README addons

Coverage remained the same at 99.407% when pulling b56fd08412b46f099e35627bdd1e3bbaf8618e27 on fix-readme-addons into 4afd5ccbd87b87465b622117af7d619a1c555443 on master.

:tada: This PR is included in version 3.1.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Using in psychopy

I'm trying to use articledownloader through psychopy but this line of code:
from articledownloader.articledownloader import ArticleDownloader
produces this error:
File"C:\Users\legg0028\Dropbox\flinders_university\owen_R_classes\download_journal\0.1_article_downlod\articledownloader\articledownloader.py", line 5, in <module>from autologging import logged, traced ImportError: No module named autologging
Is this because I have not imported the requirements (require, etc.)? If so, do you know how I can import these through psychopy?

If you try pip install -r requirements.txt from the root folder of the repository, that should work.
Alternatively, you can just install the latest requirements by default (since the txt file might be a bit out of date...):
pip install requests autologging htmlparser
Let me know if that works!


TensorFlow Bazel build is failing on Windows

http://ci.tensorflow.org/job/tf-master-win-bzl/339/console
18:24:27 ERROR: C:/tf_jenkins/home/workspace/tf-master-win-bzl/tensorflow/core/kernels/BUILD:3802:1: C++ compilation of rule '//tensorflow/core/kernels:quantized_ops' failed: msvc_cl.bat failed: error executing command
...
18:24:27 c:\tmp\_bazel_system\rrc05caq\execroot\tf-master-win-bzl\external\gemmlowp\internal\common.h(21): fatal error C1083: Cannot open include file: 'pthread.h': No such file or directory

Culprit: f736991fd3a7987665a6f9fcd26d464ea7f68e2b
This changes introduced the dependency on //tensorflow/core/kernels:quantized_ops through //tensorflow/tools/graph_transforms:transform_graph_lib, which doesn't build on Windows yet.

If simply exclude //tensorflow/tools/graph_transforms:transform_graph_lib, we'll get another error:
ERROR: C:/tools/msys64/home/pcloudy/workspace/tensorflow/tensorflow/python/BUILD:2274:1: undeclared inclusion(s) in rule '//tensorflow/python:_pywrap_tensorflow.so':
this rule is missing dependency declarations for the following files included by 'tensorflow/python/pywrap_tensorflow.cc':
  'C:/tools/msys64/home/pcloudy/workspace/tensorflow/tensorflow/tools/graph_transforms/transform_graph.h'
  'C:/tools/msys64/home/pcloudy/workspace/tensorflow/tensorflow/tools/graph_transforms/transform_utils.h'

@petewarden FYI

We fixed this in cmake, and I am attempting to fix it in https://github.com/tensorflow/tensorflow/pull/7082
But not been successful so far.

Thanks, @gunan !  The pip package build is back to normal, only two python tests are failing. Are they supposed to pass on Windows, or should we just skip them?
23:48:48 //py_test_dir/tensorflow/python:bigquery_reader_ops_test                 FAILED in 1 out of 2 in 6.6s
23:48:48   C:/tmp/_bazel_SYSTEM/rrc05Caq/execroot/tf-master-win-bzl/bazel-out/vc_14_0_x64-py3-opt/testlogs/py_test_dir/tensorflow/python/bigquery_reader_ops_test/test.log
23:48:48 //py_test_dir/tensorflow/python/kernel_tests:denormal_test               FAILED in 1 out of 2 in 4.5s
23:48:48   C:/tmp/_bazel_SYSTEM/rrc05Caq/execroot/tf-master-win-bzl/bazel-out/vc_14_0_x64-py3-opt/testlogs/py_test_dir/tensorflow/python/kernel_tests/denormal_test/test.log

Two PRs out for that. #7107 and #7112

This one now should be fixed.


Assertion failed and inability to preview camera

Describe the bug
I have a renderer with the Flat Kit Fog renderer feature enabled.
If I select the camera gameobject, the camera preview that appears on the scene editor only show the fog and the console shows the following assertion:
Assertion failed
UnityEngine.Rendering.RTHandle:op_Implicit (UnityEngine.Rendering.RTHandle)
FlatKit.BlitTexturePass:Execute (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Rendering.Universal.RenderingData&) (at Assets/FlatKit/[Render Pipeline] URP/RenderFeatures/Common/BlitTexturePass.cs:69)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:189)
To Reproduce
Steps to reproduce the behavior:
Create a renderer with the fog renderer feature, create a camera, click the camera on the hierarchy.
Expected behavior
I should be able to see the camera preview in the scene view.
Screenshots
Screenshot below.
Unity details:

Flat Kit version: 3.1.0
Unity version: 2022.2.0.f1
Graphics Pipeline: URP
URP version (if applicable): [e.g. 10.3.1]
Development OS: macOS Ventura

Build platform:

Platform: iOS
Test device: iPhone, but the problem is apparent on the editor.

Additional context
Add any other context about the problem here.

Thanks for reporting this.
I can't reproduce this so far, (in the same Unity version):

A few questions to help us debug:

Does this happen in the Valley demo scene for you?
Did you import Flat Kit into Unity 2022.2, or did you import it in a previous version and the upgraded?

It was being used on a previous version and then imported into 2022.2. I'll reinstall Flatkit and get back to you.

Reinstalling Flatkit fixed it. Thanks for the speedy reply.


Bluesky pds

[!NOTE]
We are meticulous when it comes to merging code into the main branch, so please understand that we may reject pull requests that do not meet the project's standards. It's never personal. Also, game-related scripts have a lower chance of being merged.

Description
Provide a summary of the changes made and/or reference the issue being addressed.
Fixes # (issue)
Type of change
Please check the relevant option(s):

[ ] Bug fix (non-breaking change that resolves an issue)
[ ] New feature (non-breaking change that adds functionality)
[ ] Breaking change (a fix or feature that would cause existing functionality to change unexpectedly)
[ ] New script (a fully functional and thoroughly tested script or set of scripts.)

Prerequisites
The following efforts must be made for the PR to be considered. Please check when completed:

[ ] Self-review performed (I have reviewed my code, ensuring it follows established patterns and conventions)
[ ] Testing performed (I have tested my changes, ensuring everything works as expected)
[ ] Documentation updated (I have updated any relevant documentation)

Additional Information (optional)
Provide any additional context or screenshots about the feature or fix here.
Related Pull Requests / Discussions
If there are other pull requests or discussions related to this change, please link them here:

Related PR #

I saw that you closed this but if you plan on resubmitting I strongly suggest you do not modify build.func. We consider that high risk and even minor changes are strongly debated.

We also avoid using other installation scripts


Build authorization middleware for server

[ ] Check permission of a user (skip if user is super user)
[ ] Check IP address of a user (skip if user is super user)

Order or precedence

IP address check (403)
Permission check (403)

relies on #57 #59


Problem with validator when using i18n

There is a problem when error messages with rules containing options are configured via the i18n module. Indeed, the options are not recognized and this generates an error. Example: The rule below works normally when hard-coded into the validator
public messages: CustomMessages = {
distinct: "The {{ options.field }} value for {{ field }} must be unique"
}
But when it is integrated into the file (validator.yaml/validator.json) there is an error like
{
"message": "Cannot read properties of undefined (reading 'errors')",
"stack": "TypeError: Cannot read properties of undefined (reading 'errors')\n at SchedulingsController.store (C:\Users\User\anlabstech\CANAL OLYMPIA APP\api\app\Controllers \Http\Admin\SchedulingsController.ts:29:63)\n at processTicksAndRejections (node:internal/process/task_queues:96:5)\n at Object.PreCompiler.runRouteHandler [as fn] (C:\ Users\User\anlabstech\CANAL OLYMPIA APP\api\node_modules\@adonisjs\http-server\build\src\Server\PreCompiler\index.js:47:31)\ n at RequireAdminAuth.handle (C:\Users\User\anlabstech\CANAL OLYMPIA APP\api\app\Middleware\RequireAdminAuth.ts:31:5)\n at DetectUserLocale.handle (C: \Users\User\anlabstech\CANAL OLYMPIA APP\api\app\Middleware\DetectUserLocale.ts:50:5)\n at Server.handleRequest (C:\Users\User\ anlabstech\CANAL OLYMPIA APP\api\node_modules\@adonisjs\http-server\build\src\Server\index.js:108:13)"
}

The error message says Cannot read properties of undefined (reading 'errors'). Not sure how is this related to using i18n for error messages.
Can you please the controller using the validator and also the JSON files with messages

The error message says Cannot read properties of undefined (reading 'errors'). Not sure how is this related to using i18n for error messages.
Can you please the controller using the validator and also the translations JSON file?

Of course
Source of validator.yaml -->
shared:
required: "The {field} field is mandatory"
number: The {field} field must be a valid number
range: The field {field} must be between { start } and { stop } years
enum: "The {field} field must be one of the { choices }"
unique: The value for field {field} must be unique
url: The value of {field} is not a valid url
"date.format": The date format for {field} is not valid
exists: The reference constraint(s) for {field} is not satisfied
distinct: "The { options.field } value for { field } must be unique"
afterOrEqual: The {field} field cannot be in past
My Validator -->
import { schema, CustomMessages, rules } from '@ioc:Adonis/Core/Validator'
import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import { DateTime } from 'luxon'
export default class CreateSchedulingValidator {
constructor(protected ctx: HttpContextContract) {}
public refs = schema.refs({
allowedDate: DateTime.now()
})
public schema = schema.create({
start_at: schema.date({}, [
rules.afterOrEqual(this.refs.allowedDate)
]),
end_at: schema.date({}, [
rules.afterField('start_at')
]),
movie_id: schema.number([
rules.exists({
table: 'movies',
column: 'id',
where: {
active: 1,
deleted: 0
}
})
]),
movie_room_id: schema.number([
rules.exists({
table: 'movie_rooms',
column: 'id',
where: {
active: 1,
deleted: 0
}
})
]),
packages: schema.array([
rules.distinct('label')
]).members(schema.object().members({
price: schema.number([
rules.unsigned()
]),
label: schema.string(),
description: schema.string(),
places: schema.number([
rules.unsigned(),
rules.range(0, 255)
])
}))
})
public messages: CustomMessages = {}
}
A chunk of my controller method -->
    const user = await ctx.auth.use('api').user!

    let form_data: any

    try {
        form_data = await ctx.request.validate(CreateMovieValidator)
    } catch(e) {

        if(Env.get('NODE_ENV') === 'development') {
            console.log(e)
        }

        return ApiResponseUtils.bad_input(ctx, e.messages.errors)
    }

    // Check if the movie doesn't exists
    const exists = await Movie.query().where({
        title: form_data.title,
        year: form_data.year,
        lang: form_data.lang
    }).first()

    if(exists) {
        return ApiResponseUtils.bad_request(ctx, ctx.i18n.formatMessage('messages.text_movie_exists'))
    }

Can you please format the code blocks properly, it's kind of hard to scan them. Here's a quick guide from Github on the same https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#syntax-highlighting

Can you please format the code blocks properly, it's kind of hard to scan them. Here's a quick guide from Github on the same https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#syntax-highlighting

Hello
It's ok can you check it ?


docs: add UCloud as a production adopter

Signed-off-by: Allen Sun<EMAIL_ADDRESS>Ⅰ. Describe what this PR did
We have heard from @Liberxue that UCloud is using PouchContainer to guarantee the disk quota for rocketmq in production environment, then I would like to put UCloud as an enterprise adopter of PouchContainer.
I would like to invite @Liberxue to introduce more production scenario about what you used PouchContainer. Could you help to introduce the following things:

your demand about container solutions;
why you have the demand;
the solution PouchContainer provides;
how you use PouchContainer;
your further thoughts on PouchContainer

Thanks a lot if you are free to tell us your story.
Ⅱ. Does this pull request fix one issue?

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

LGTM


Angular Material vs Angular MDC

What is difference between both of this and which is preferable to use?
Angular Material - Material Design components for Angular - https://material.angular.io
Angular MDC - Material Web Components for Angular - https://github.com/trimox/angular-mdc-web
How it is different from implementation and contributors point of view?
Are they both maintained by google ?

Angular Material is an official library from the Angular team, Angular MDC is an independent project. Angular MDC implements the official Material components from Google (but the Angular Material is trying this too). The problem now is that it seems that @trimox  has discontinued this project. So currently it is better to use Angular Material.

Angular Material is an official library from the Angular team. Angular MDC is an independent project. Angular MDC implements the official Material components from Google (but the Angular Material Team is trying this also). The problem now is that it seems that @trimox has discontinued this project. So currently, it is better to use Angular Material.

If it is so, It is recommended to remove the Angular MDC link from https://material.io/develop/web/docs/framework-wrappers.

If it is so, It is recommended to remove the Angular MDC link from https://material.io/develop/web/docs/framework-wrappers.

Indeed, this would be very recommended.


minimap & info table

Minimap
Enables users to view which section of the graph they are currently in. The utility of this feature scales with the size of the graph and the number of events.
Goals:

Show where the user is in relation to the graph
Allow user to navigate through the graph using the Minimap

Info Table
A small table on the top right corner of the graph to show which event is selected by the user. Currently, the table will show the id of the event, but more information can be added to it based on user preferences.

used for better navigation

What would this info table contain?

to show more info about node

Won't the minimap stunt #17 a bit though? to render it youd need a larger data set than currently in view

It should be fine because the minimap only shows data which has been rendered. So it may be useless when the user is looking at a few nodes in the beginning. But once they choose to render more data, it can be confusing as to where they are on the graph. So the minimap will show which section on the graph they are currently viewing in relation to the rendered areas.


dovecot is no http

dovecot is no http

you don't want to add imap/pop3 ?

you don't want to add imap/pop3 ?

We can't know, because it can be both, but one without the other too...


Render static markup in a div (not autogenerated)

Usage:

It is the unofficial force—the Baker Street irregulars.

		<address>Sherlock Holmes</address>
		Sign of Four

It is the unofficial force—the Baker Street irregulars (yes it can be different).

	<address>Sherlock Holmes</address>
	Sign of Four

Option to put the raw unescaped markup in your own source-panel div, instead of it being generated.

@scottjehl see if this works for you

👍


Fix regex for new nightly name

Change in wheel's name breaks fetching it via javascript on installation-windows:
Kivy-1.9.2.dev0_30062016_git_8d5451f-cp27_30062016_git_8d5451f-none-win32
↓
Kivy-1.9.2.dev0_31072016_git_cfec8f3-cp27-cp27m-win32.whl

I added it only as another "or" to the regex in case the name would be reverted or changed in a way the old part would match the wheel.

I did change (fix) the names. However, I also added files with constant names that get updated with every nightly so that we can have direct links and remove the javascript altogether. @kived was saying that the java script seemed to be very round-about. But also, I'd prefer that we do not have js if we don't need it.

I that case I'm all for the removing that js. For some people, including me, it may seem as unsafe solution using js to request files from other website even if it is for framework within its own website and therefore discourage them from even trying latest Kivy without compiling.
I'm of the same opinion that it's a big "round-about", because it has to find the link for the latest wheel file through ajax (which isn't even pure ajax, but some yahoo api that makes it easier) -- I wasn't aware that you can have a single link that would work this way with Drive except manually updating the file e.g. when you right click on the file -> versions -> upload new version for each nightly (4x manually, each night).
But I think it was still better than scrolling and checking for the latest name manually, especially when there was grid display by default and user couldn't even sort the files with display changed to list :yum:

Those 4 nightlies are, or at least should be updated in place every night. That means the files are not changed, just their content is updated. So we should be able to get that the link directly to the 4 files and not have to update the link every night. Wouldn't that work instead of the js? Or is this what you were saying? I'm not that familiar with js/html so I'm not really sure how to update the website to reflect that.

Yup, that's exactly what I'm saying. If there's an option to avoid insecure-looking workaround, then let's do it.
Btw, is there some google drive api you are doing it with or how exactly do you change the content of the files?

I use PyDrive. The re-use happens here: https://github.com/kivy/kivy-sdk-packager/blob/master/win/gdrive.py#L99

ref #4516


Add CHANGELOG

Please add CHANGELOG.md :)
// You can grab format from the OkHttp for example.

I guess I'm the only one that uses releases https://github.com/brianPlummer/TinyDancer/releases.  Will migrate notes from there to changelog

Thanks!
On Mon, Dec 14, 2015, 22:35 Mike Nakhimovich<EMAIL_ADDRESS>wrote:

I guess I'm the only one that uses releases
https://github.com/brianPlummer/TinyDancer/releases. Will migrate notes
from there to changelog
—
Reply to this email directly or view it on GitHub
https://github.com/brianPlummer/TinyDancer/issues/23#issuecomment-164536577
.

--
@artem_zin


[New Primitive] Grid

Feature request
Overview

Examples in other libraries

Who does this impact? Who is this for?

Additional context

Hi @ranjithpmankada,
This looks like a "style-only" primitive which doesn't really fit with what Radix primitives are for given they are unstyled accessible primitives.
I'll close this issue for now but feel free to keep chatting here.
✌


Universal search engine :)

Hello !
I'm trying to do an universal search (search engine) in Cockpit.
First, I tried to use regexp :
find(array('title'=> array('$regex' => $_POST['title'])))->sort(["created"=>"-1"]) as $item): ?>
Here, I can find post like in sql :
select * from post where title like '%$_POST['title']%';
Now, I want to do it case insensive : something like :
select * from post where title like '%$_POST['title']%';
But I failed :( I tried to use regexp for mongo... but it doesn't work.
Can you help me ?
THank you

You would have read :
select * from post where lower(title) like '%lower($_POST['title'])%';

I would approach a search functionality by leveraging a search engine like Apache Solr or Algolia. The contents can be indexed by pushing the contents to the search engine during a "collections.save.after" event.
Resuming I see some space for a custom addon that provides the mechanisms to integrate with such engines.

Exactly :)

Thank you ! I will have a look to this addon. Don't understant how it's work at first sight, but I will dig !

The other approach is to go outside the API entirely and generate the search engine from whatever site is consuming the API. I've got a proof-of-concept project with Algolia here:
https://github.com/ICJIA/algolia-site-indexer
Essentially, this takes a sitemap.xml file for a site (in my case generated with Nuxt.js), parses it, and then one-by-one indexes each url from the site. If it's in the sitemap, it'll get indexed.
I grab key meta items -- title, keywords, description -- and then append a set limit of characters from the URL's main body (by checking whatever class/id attribute is used for the body content). I generate a unique Algolia objectID based on an MD5 hash of the actual URL. That way, I know the objectIDs are unique to each page.
Then I send all the results to the Algolia index.
Finally, I check and see if pages have been deleted since the last indexing. If so, I delete those pages from the Algolia index. (Added pages are automatically included, so I don't need to worry about those.)
In my actual site, I use the Algolia 'vue-instantsearch' tag to display the results.
It works incredibly well. I'm not sure if this is the best way to do it, but for a basic, instant search. this works great!


ibazel_notify_changes not working for tests

I am trying to implement something very similar to https://github.com/bazelbuild/rules_nodejs/pull/233 for a nodejs test rule and not getting it to work with the ibazel_notify_changes. It is really strange if I take my rule, make it a binary then it all works fine and I can listen to stdin for the ibazel messages as expected. As soon as I turn the rule into a real test via the test=True attribute and a _test name things start failing and the binary seems to be getting a close event sent pretty quickly (when listening to stdin) and then never gets the message from ibazel passed on on rebuild. Maybe there are some test limitations (and I have tried running the test with just bazel run)?
I have spent a few hours investigating but could not find anything so far.

Do you have any more specifics? Maybe a test repo that I could play with to diagnose?

Yes, apologies it was late when I posted this. Here you have a repro: https://github.com/ecosia/bazel_rules_nodejs_contrib/tree/jest-rules
If you run ibazel run //examples/nodejs_jest_test:sum_test that runs the test using the test rule and you can see that ibazel stream closed logs immediately and changes to sum.test.js trigger nothing in the binary. But if you run ibazel run //examples/nodejs_jest_test:sum_test.binary (which is exactly the same as the test rule, just the test attributes removed for demonstration purposes) then you see things working as expected, changing e.g. sum.test.js logs IBAZEL_BUILD_COMPLETED SUCCESS printed by the test binary after reload.

This seems very odd to me. Would you be willing to duplicate a testcase in the e2e tests that exercises this? Here is an example I think just creating an extra must(t, b.ScratchFile("defs.bzl", "# some code in here that creates a very simple rule that has test turned on")) and modifying the BUILD file  would be enough to determine if it is an iBazel issue or something in your repo. Does that work for you? There is a LOT of stuff going on in rules_nodejs +  bazel_rules_nodejs_contrib and even with a few hours of mucking in it over the past few weeks, I don't think I quite understand what is happening in a clear way. Having a self-contained example of this bug would be really helpful to me.

@achew22 Yep I understand that a lot is happening in that repo, happy to add a e2e test for it as soon as I get around to it.

@Globegitter did you ever get a chance to look into this? I would love to find the bug and squash it but I need a little help

Gah! Enter is so easy to accidentally git.
... I need a little help finding it. Is this still happening? Do you have any more clues on what's triggering it?

@achew22 Sorry I dropped the ball on this. I will create a more minimal example this week.

@achew22 sorry about taking such a long time. While I would still like to write the e2e test at least I managed to write a simple repro case now: https://github.com/Globegitter/bazel-watch-test-repro
Let me know if that is a sufficient simple repro case.

I believe that https://github.com/bazelbuild/bazel/pull/8322 will fix this.

@DavidANeil did that fix the issue?

I didn't test any of the repros provided here or in that issue, but the merge did fix our case and we are able to successfully use ibazel_notify_changes with _test executables now.
Basically: yes I'm pretty sure this issue should be closed, but I haven't done due diligence.

Okay, I'm going to close this, but if someone else runs into it please open a new one or reopen this.
Thanks everyone!


Updated documentation

Removed references to default "SAML assertions in a specific format" that pymetrics does not need to process custom attribute mappings. We only need UserFirstName, UserLastName and User Email at this stage.

@vulongtran : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @vulongtran  Users don't need to do any action in the Attribute section in the Azure portal. Including default attributes UserFirstName, UserLastName, and User Email are also prepopulated in the Azure, so there is no action required from the users.

#sign-off


Use the Real Environment dataset to train the model, Program running Error

Hi, thanks for your brilliant work and open-source code!
I tried your dataset files to generate mp4 file, or to train the model.
[https://drive.google.com/drive/folders/1vhKa4tNPfMkeK7SW86vKorb39epTYW39] —— aloha_mobile_chair_truncated
program running error, error code is :
Traceback (most recent call last):
File "visualize_episodes.py", line 160, in
main(vars(parser.parse_args()))
File "visualize_episodes.py", line 44, in main
save_videos(image_dict  , DT, video_path=os.path.join(dataset_dir, dataset_name + '_video.mp4'))
File "visualize_episodes.py", line 78, in save_videos
all_cam_videos = np.concatenate(all_cam_videos, axis=2) # width dimension
File "<array_function internals>", line 200, in concatenate
numpy.AxisError: axis 2 is out of bounds for array of dimension 2
The real environment file data format is not same as simulation generated data files especially the camera data.
How to solve this problem?

采集数据中，图像压缩模式关掉

You shold use the visualize_episodes.py script hosted in https://github.com/MarkFzp/mobile-aloha/tree/main/aloha_scripts if you want to visualize real-world collected data from the author. The visualize_episodes.py in this repo only used for visualize simulated task like sim_tansfer_cube and sim_insertion_scripted.

Hello, may I ask how to modify the data format of my robotic arm to training format, and can the data of a six axis robotic arm be trained


chore: add license

Codecov Report

Merging #8 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #8   +/-   ##
=======================================
  Coverage   90.72%   90.72%
=======================================
  Files           6        6
  Lines         194      194
=======================================
  Hits          176      176
  Misses         18       18

Flag
Coverage Δ

#unittests
90.72% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out 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 bc1c991...eeec9cd. Read the comment docs.


⚠ GitLab Server has degraded performance

In 7f68a59, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 7070 ms

Resolved: GitLab Server performance has improved in 4de32e0.


Request for document update: Please use the setup syntax sugar

This function solves the problem (这个功能解决的问题)
Make the document more closely aligned with the usage environment, as almost no one is not using the setup syntax anymore.
Expected API (期望的 API)
<script setup>
import { ref } from 'vue'

const someVariable = ref('example')
...

duplicate  https://github.com/tusen-ai/naive-ui/issues/5105


Bump up prometheus & grafana versions

Good to keep these up to date, and the problem with our pangeo-hubs prometheus was a WAL replay bug causing a crash - perhaps a newer version will not have that.

@yuvipanda this is also something we can configure the helm chart version bumper to take care of? https://github.com/2i2c-org/infrastructure/blob/master/.github/workflows/bump-helm-versions.yaml

@sgibson91 ooooh, yes actually let's!