Prototype 1: building from a Dune lockfile

Goal: with just the opam binary, dune build builds projects "from scratch", relying on no external state or OCaml-based tools.
Overview
The opam binary is being used here rather than attempting in this prototype to use opam's libraries. The default opam root (~/.opam) will not be used at all by this prototype, which should initialise a hidden opam root internally (it will therefore necessarily be slow).
This prototype won't look to address UX issues in Dune (selection of configuration options, etc.). The aim is rather to look at what changes are needed in dune-project, dune-workspace and the lockfile itself.
There's no mapping yet between Dune public names and opam packages, the packages which are required are implicitly in the project's opam files (which may of course be being generated from dune-project).
Implicit state to dune-workspace; defaults to dune-project
Dune obtains a lot of implicit state from the environment when it starts. This needs to be re-homed, and suitable default inferred. Two major items need to be addressed:

Compiler version selection. At present, the compiler version is implicitly taken from the build context. This should probably be surfaced as an alternative to (switch opam-switch-name) with the compiler version instead specified e.g. (context (opam (ocaml 5.0))). As a simplification at this stage, it may well be sensible to require a full version specification (i.e. (ocaml 5.0.0)) although the final target would be to be able to specify the series only (and have the lockfile do the rest - i.e. the workspace declares that OCaml 4.14.x is in use and the lockfile guides Dune towards whether that means 4.14.0 or 4.14.1). This is also where compiler options would also be specified (e.g. flambda) but that's beyond the scope of this prototype.
Optional tools/package selection. Anything which the dune files would interpret based on the environment needs to have a mechanism for being declared - this includes (select  and (enabled-if fields and any stanzas which activate only on the presence of tools found in the environment (odoc, mdx, etc.). We also need to consider what the default behaviour should be for these. These will probably require extra fields in the (context stanza to specify what is wanted and may also want changes to the dune stanzas (for example, (select may want to be augmented with a (default) flag).

dune-workspace is the obvious home for configuration options which may need to be changed, but which should not necessarily be committed to a repository. Defaults may perhaps need to go in dune-project, for example, as to whether test dependencies should be built by default, the default contexts to use if there is no dune-workspace file (a repository might use dune-project to indicate that dune-workspace should be initialised to test OCaml 4.08 and OCaml 5.0, still giving the user the ability to add additional build contexts to a specific checkout of the repository).
Lockfile design
We have found when discussing lockfiles that even determining exactly what is meant by a lockfile can take some agreement! At the moment, in OCaml, lockfiles principally refer to a single set of solved dependencies. This works up to a point, but it has a serious limitation - there are no non-trivial OCaml projects where exactly one lockfile describes all possible uses:

Very few, if any, OCaml libraries are designed to be used with a single version only of the compiler, so single-configuration lockfiles are virtually unused in this context.
opam's conf-* packages partially mask the effect of different operating systems on dependencies by providing a common central package for OS-specific dependencies, but this only works up to a point. The eio package, for example, has different opam dependencies for each of the major operating systems.
Dependencies of an optional component can affect the dependencies of other components. For example, Lwt's lwt_domain package logically belongs in the same repository as the rest of Lwt, but locking dependencies to allow lwt_domain to be included would artifically constrain all of Lwt to OCaml 5.0+.

A set of opam packages at specific versions, therefore, constitutes merely the simplest of lockfiles. This simple lockfile provides repeatability for configuration of the lockfile.
What is wanted, therefore, is a lockfile for all the possible configurations for a given project. For compiler and OS versions, we could almost consider creating these lockfiles up front, but this quickly falls down in the face of optional components within a project, as the number of "lockfiles" soon becomes unmanageable.
If repeatability for any given configuration is the goal, then the perfect lockfile contains just enough information to allow this. To this end the lockfile requires:

The list of opam-repository remotes in use, in priority order, and their HEAD commits
The list of manually pinned dependencies, and their HEAD commits
The constraint solver and criteria

Note that 1 and 2 together with the project's own opam files describe a single universe of opam packages. When building in Dune, the packages themselves are implicitly "pinned" (i.e. solving is done using the package opam files in the Dune workspace, and all those in repositories are overridden). If we assume a stable constraint solver, then each individual lockfile configuration is simply a solving request against this universe of opam packages. The configuration itself is a consequence of the computer running the build (for example, providing that the architecture is arm64 and the OS is macOS) and things flowing from the build itself (for example, the build context gives the constraint required for the "ocaml" package; the presence of an mdx stanza adds the requirement for the "mdx" package to be available to provide the tool; etc.)
To this we must add a small seasoning of reality. Our solvers are occasionally slow and they are also occasionally unstable. Both of these should be regarded as bugs, but it means that to the minimal lockfile, we should add the ability to cache the results of commonly required solves. In this case, solving for a given configuration involves first checking if the configuration is cached in the lockfile and only beginning an actual package solve if the configuration differs. In just the same way as Dune's cache can perform statistical checks for reproducibility, one could also conceive of configuring Dune to test lockfile caches.
Dune's lockfile is therefore going to look something like:
; Two opam-repository selections; lowest priority given first
(repositories
  (default git+https://github.com/ocaml/opam-repository.git#master a9fb5a379794b0d5d7f663ff3a3bed5d4672a5d3)
  (coq-released git+https://github.com/coq/opam-coq-archive.git/released#master b4a388d3b07a30cd0ac7b5c98ea8a82c7fc89eea))

; Pinned packages, with (potentially shared) sources
(pins
  ((eio.0.8 eio_linux.0.8) git+https://github.com/ocaml-multicore/eio.git#main 80f5352526b260e9c32d7110844c7e7408e905f4))

; Cached configurations. In this case the cache entries specify the values of
; "free" solver variables (os, in this instance, comes from the machine running
; Dune) and configuration variables (ocaml, in this case comes from
; dune-workspace). Note when generating the cache entries that it would be
; necessary to capture all _relevant_ solver variables. For example, if the
; packages in the universe use `os-distribution` in any dependency formula,
; then its value would be captured as part of the configuration.
(configurations
  (linux (os "linux") (ocaml 5.0))
  (windows (os "win32") (ocaml 5.0))
  (macos (os "macos") (ocaml 5.0)))

(cache
  ; ocaml-base-compiler.5.0.0 is required for _all_ configurations
  ocaml-base-compiler.5.0.0
  ; ...
  ; eio_linux is only required for the linux configuration
  eio_linux (linux))

It is beyond the scope of this prototype to generate these lockfiles (in particular, the caches may be generated ad hoc using other mechanisms for now). Part of the prototyping work will need to look at whether the location of repositories and pins should be in dune-project with the SHAs only in the lockfile, etc.
Switch creation for tools and the build
Equipped with this enhanced configuration, the prototype should then be in a position to define the opam switch required, rather than detect it. For the purposes of the prototype, opam's command line client should be used to initialise an opam root and local switch inside _build. The build graph will need to ensure that:

The repository list of the opam root matches the lockfile
The internal local switch for the build has the correct pins
The internal local switch's invariant matches the selected configuration
The packages installed in the local switch exactly match those required by the constraints in the lockfile
opam switch create / opam install x y z is run, if needed, to bring the switch into a usable state (it would be fine, for the purposes of the prototype, if the switch is always recreated if the dependencies are changed)

For the purposes of this protoype, no caching or sharing need be attempted. In particular, nothing need be done at this stage to separate dependencies of tools from the project (e.g. ocamlformat, mdx, etc. build as part of the package's dependency cone).
Outcomes
This prototype will be slow to use (since it always builds OCaml as part of the initial build) and will be exposed to the vagaries of wrapping the opam command line tool directly (network access, terminal control, etc.).
What should be demonstrable is taking a project (to be selected, preferably with differing dependencies between Linux/macOS/Windows) and cloning it to Linux/macOS/Windows having only a pair of opam and dune binaries (in particular, with opam not initialised) and demonstrating that dune build in the cloned repo successfully, and consistently, builds the project for that given platform.

A side-note on monorepos and lockfiles. I'd possibly distinguish here a genuine monorepo (such as Jane) vs an assembled monorepo (such as RWO). i.e. Jane is developed as a monorepo, from which some separate packages are carved out by RWO is assembled from external dependencies, and must be updated (at some point) when they change.
If the monorepo is genuinely "mono", then one lockfile should work. However, if one imagines the "disassembled" view of RWO (i.e. RWO with its dependencies installed externally, instead of as a monorepo), even then it ideally would like to be building on Linux / macOS / Windows which implies more than one lockfile, even if it only targets exactly one version of OCaml. It does, of course, get a little fuzzy/grey with monorepos, because of course you can solve Linux / macOS / Windows by having one lockfile which is the union of all the dependencies, even if they can't necessarily all be co-compiled (and won't be, for example, if enabled-if is being used to control OS-specific libraries).

Thanks for taking the initiative on this effort. There's lots of good ideas here, but I'd like to offer an argument for the more traditional (and simplistic) definition of lock files. The definition is indeed simpler and less useful on its own, but I hope to show that its limitation can be lifted with complimentary features rather than modifying what a lock file is.
The definition I'll work with is indeed just a set of package names, their corresponding build metadata, and sources needed to complete the build. Lock files also have a social contract a lock file is published, the build plan derived from the lock file was observed to successfully build the project at some point. Therefore, if one reproduces the environment of the observer, one is guaranteed to successfully build the project.
The difference in our approaches can actually be summarized by the answer to one question: "Should the lock file store the input or the output of the solver?". If we pretend to have the function:
val solve : repository list -> (free_variable * value) list -> project -> pin list -> (package_name * package_metadata * package_source) list

Your approach is to save the input of this function. I'd like to argue for the output instead.
The first benefit of using the output is that this assumption:

If we assume a stable constraint solver

Is no longer necessary. We retain the right to change the implementation details of the solver without compromising the reproducibility of existing plans.
Another benefit is that we avoid spurious changes to the lock file. In your scheme, it's possible to update the commit hash of the opam repositories without actually changing the build plan. That creates unnecessary code review work going through these spurious changes, and also wastes cycles for downstream users pulling metadata they don't actually need. If we hash the output, code review is made easier because the diff shows exactly which packages have been updated. There's also no "junk". We only download what we know we're going to use.
Finally, let me address the question of portability. In your example, the lock file includes valid build plans for 3 different platforms. Presumably, you have the means to test that these build plans actually work on these platforms (otherwise these build plans are just optimistic solver output that has no business being saved anywhere). Therefore, you can use the same means to also generate a lock file for every different platform you have access to. We're still left with some practical problems, but they can be addressed separately:

Isn't there going to be a lot of redundancy between multiple lock files? Not necessarily. We can choose a format that shares as much information as possible
How do we make sure that some constraints are shared between the lock files? Nothing steps us from guiding the solver by modifying the inputs.

I have some other unrelated comments left, but this response is getting long and I figure that it would be better to get the big things out of the way. Will write more later.

@dra27 wrote:

I'd possibly distinguish here a genuine monorepo (such as Jane) vs an assembled monorepo (such as RWO).

I don't think this is a useful distinction, since I went to quite a bit of effort in the early jbuilder/dune porting days to make platform-specific packages build (as dummy packages) on foreign platforms.  I don't believe it's good practise to vary the source code for a monorepo based on the current platform, and build tools should do that instead. The reasons for this are myriad: from making cross-compilation easier/possible, to generating SBOMs for the final binaries.

Sorry for the very lagged reply (and there are likely to be more lags, I'm afraid). I think we're largely arguing in agreement, though - I've used the word "cached", but the intent of the proposal was that we don't store just the inputs, we're storing both the inputs and the outputs for some configurations. The sharing @rgrinberg describes and @kit-ty-kate's example above, look to me simply alternate ways of writing the cache stanza proposed above.
We're possibly interpreting differently what the lockfile being reproducible means - I think you're referring to the build itself being reproducible (i.e. if I set-up the build with the packages listed from the outputs, then it should work). I was referring to the production of the lockfile itself - i.e. the lockfile contains enough information that I should be able to call the solver and produce the same lockfile (which is why I called the "output" a "cache").
The main thing for me (which we all seem in agreement on so far) is that the lockfile is capable of describable multiple builds, which means it's moved beyond what I regard as "simplistic"!

otherwise these build plans are just optimistic solver output that has no business being saved anywhere

I completely agree - there shouldn't be a cache/output list of packages which hasn't been verified in some way. The benefit, as I see it, to the very small extra storage of the inputs is that if two independent users try to use the project on a platform for which there is no cached/stored/whatever lockfile, then there is a chance that they gain the same solution. i.e. they fallback to the same solution. Hypothetically, that means a project published with a Linux-only lockfile but which has different dependencies for macOS/Windows has its users either still installing the same dependencies because they use the same solver and the same repository hashes or installing in the same way. Otherwise, those two users may solve with different repository hashes (based on the date they did the build) and therefore have different outcomes, which is bad.

Another benefit is that we avoid spurious changes to the lock file.

There aren't spurious changes to the lockfile in the propsal above. You'd only change the hash for the repository if the build plan actually alters. Pull the latest versions of the opam repositories (the background equivalent of opam update) would not cause the hash in the lockfile to change.

In the example that Kate brought up the conditional entry is suspect to me:
 (ocaml-option-bytecode-only.1 (and (!= :arch "arm64") (!= :arch "x86_64")))

How can a user prescribe what compiler to use for all other architectures?  Has the author of this lock file really tested every other architecture? If this is a property of some package in the project, then it should be specified as a constraint and not in a concrete build plan.
To me, multi platform support consists of two steps:

Generate and verify a build plan for every configuration planned to be supported
Find a minimal representation of the build plans discovered in 1.

This process cannot produce the example above.

Okay, I now understand David's point. I don't see a problem with including the hashes (and possibly urls) of the sources used to generate the lock file. This isn't data that affects the build plan in any way however. But it does seem very useful to be able to work with the original sources the author of the lock file worked with.


[cherry pick](jdbc catalog) refresh catalog close jdbcclient #28300

Proposed changes
Issue Number: close #xxx

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

#28300


Drop IdentityType (?)

It looks like IdentityType is never used outside of LDK. We only use it for additional checks inside the Identity's constructors. If the idea is to find a way to discriminate Identities by their types, I think instanceof is enough. cc @tiero

Not sure about that. IdentityType enum is just a way to categorize varous type of wallet structure etc..
we can have many identities of Mnemonic type, maybe with differente derivation type etc..This comes handy when extending/overriding

it could be a constant setup in each Identity's implementation, not a constructor argument. With the current implementation we need to put type: Mnemonic in all the new Mnemonic() statements.

Just t give you a bit of rationale about it:
the original idea of that IdentityType is to mostly support Hardware Wallets/Keyless kind of signers:
we could have a Mnemonic class that support many different identity types, such as "I want HD wallet and I have keys, so will pass as options" (what we call now IdentityType.Mnemonic, since we explicitly checks for seed being passed) or "I want an HD wallet but I have my Trezor, so please connect over the transport to get the xpub"
But I see how we are evolving the architecture, moving in favor of binding Class to their own Options, which is more a design and semantic change, we could agree on. So it's not simply as "drop a field in the interface"


Upgrade to characteristic 14.1.0

If a user has installed a recent version of the service_identity package it will have installed characteristic v 14.1.0 as a dependency.
If that user then installs Flocker (outside of a virtualenv ...as in the case of Homebrew...I think) it may / will downgrade to Characteristic-0.1.0.
Then any Twisted code will start to break, because service_identity will be discovered, imported and attempt to use APIs that are only present in Characteristic-14.1.0.
We should update our dependencies to Characteristic-14.1.0 and create new Fedora packages for our Copr repo.
Here's an internal discussion on the matter:
engineering > service_identity

Richard Wall: David Gebler Like you said, I get a traceback if I've manually installed service_identity ...which relies on characteristic-14.1.0...then manually installed flocker which downgrades characteristic to 0.1.0

Richard Wall: Here's where we hid the warnings https://github.com/ClusterHQ/flocker/issues/317

Richard Wall: and here's the traceback

(562)(elk-tutorial-562 ✕ ▴2)[~/.../HybridLogic/flocker]$ trial flocker.node.test
flocker
  node
    test ...                                                            [ERROR]

===============================================================================
[ERROR]
Traceback (most recent call last):
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/trial/runner.py", line 586, in loadByNames
    things.append(self.findByName(name))
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/trial/runner.py", line 396, in findByName
    return reflect.namedAny(name)
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/python/reflect.py", line 303, in namedAny
    topLevelPackage = _importAndCheckStack(trialname)
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/python/reflect.py", line 242, in _importAndCheckStack
    return __import__(importName)
  File "/home/richard/projects/HybridLogic/flocker/flocker/node/__init__.py", line 12, in <module>
    from ._deploy import Deployer, NodeState, SSH_PRIVATE_KEY_PATH
  File "/home/richard/projects/HybridLogic/flocker/flocker/node/_deploy.py", line 15, in <module>
    from .gear import GearClient, PortMap, GearEnvironment
  File "/home/richard/projects/HybridLogic/flocker/flocker/node/gear.py", line 15, in <module>
    from treq import request, content
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/treq/__init__.py", line 3, in <module>
    from treq.api import head, get, post, put, patch, delete, request
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/treq/api.py", line 1, in <module>
    from twisted.web.client import Agent
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/web/client.py", line 765, in <module>
    from twisted.internet.ssl import (CertificateOptions,
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/internet/ssl.py", line 223, in <module>
    from twisted.internet._sslverify import (
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/internet/_sslverify.py", line 184, in <module>
    verifyHostname, VerificationError = _selectVerifyImplementation()
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/twisted/internet/_sslverify.py", line 159, in _selectVerifyImplementation
    from service_identity import VerificationError
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/service_identity/__init__.py", line 12, in <module>
    from . import pyopenssl
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/service_identity/pyopenssl.py", line 14, in <module>
    from ._common import (
  File "/home/richard/.virtualenvs/562/lib/python2.7/site-packages/service_identity/_common.py", line 136, in <module>
    @attributes(["pattern"], apply_with_init=False)
exceptions.TypeError: attributes() got an unexpected keyword argument 'apply_with_init'

flocker.node.test
-------------------------------------------------------------------------------
Ran 1 tests in 0.002s

Richard Wall: It shouldn't affect Linux users following our tutorial, because it installs it in a virtualenv, but I'm not sure about Mac users using Homebrew. What happens if they've got service_identity installed?

Itamar Turner-Trauring: we should switch to latest characteristic

Itamar Turner-Trauring: and, in general, we should be vendoring all dependencies

Itamar Turner-Trauring: or using minimal versions, not specific ones, when installing as normal package as opposed to virtualenv

We are moving our development planning to JIRA. This issue is now being tracked at https://clusterhq.atlassian.net/browse/FLOC-688. You are welcome to file additional issues in GitHub if that's easier for you.


Cleaned up jenkins.sh

This path is more common for Jenkins configuration in Linux distros.
Also I have cleaned jenkins.sh bash script code.

I like the changes to bash, but changing the jenkins home may be a breaking change

Thank you for this pull request! Please check this document for how the Jenkins project handles pull requests.

Ok, I have recovered old JENKINS_HOME and improved script a little.


e19: updates for 1.14.0

libraries and applications updated to the latest
the "elementary getting started" (https://docs.enlightenment.org/auto/elementary/group__Start.html)
works with just pkg-config --cflags --libs elementary
switched from lua-old to elua

cc @matejc

Builds and runs fine on my machine. The travis ci error I saw is a gcc crash on ffmpeg.

thanks, will test on my machine, building at the moment

works for me.. could you rebase to master?

Yep, done.

hum,
travis: "g++: internal compiler error: Killed (program cc1plus)"
I do not recognize the error... maybe out of memory?

ok it is out of memory... merging
@ftrvxmtrx thanks for the contribution!

Awesome, thanks!


Fix linux version being broken

This also move all file that was outside .minecraft in  .minecraft/config.

its still doesn't work when its a jar... i hate lib


Available regions not showing up when products available by region is clicked

When products available by region is clicked, and Azure Devops is selected, the only region it shows available is "Non Regional"
https://azure.microsoft.com/en-us/global-infrastructure/services/?products=azure-devops

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

ID: be194f45-05b2-8421-186f-f12700eea9aa
Version Independent ID: efffdc56-fd4c-aeba-6cd3-d07aaf776d51
Content: Find or change your Azure DevOps organization location (region)
Content Source: docs/organizations/accounts/change-organization-location.md
Product: devops
GitHub Login: @chcomley
Microsoft Alias: chcomley

Hi @maniSbindra thank you for your comment. The entry for Azure DevOps in Azure’s “Products available by region” page is not correct, and we are working to get it updated. Azure DevOps is available in the following Azure geographies: Asia Pacific, Australia, Brazil, Canada, Europe, India and the United States. Azure DevOps is delivered as a geographical service rather than a regional one, and the “Products available by region” page does not yet have the ability to indicate this, which led to the current issue. For more information on Azure geographies and regions, see https://azure.microsoft.com/en-us/global-infrastructure/geographies/.


Docker: Log to json, fixes multiline logging in Docker

Since Docker logs to stdout, the ident to distinguish between the authentication and application logs is no longer applicable.
Furthermore, logging using the regular formatters lead to all logs landing in a single line, making it hard to read and distinguish. It also hits the 16KB logline length of Docker
Using the syslog formatter fixes those issues.

Is the information added by the AdditionalInfoFormatter also preserved in the JSON?


bug: Error when using git mv on a directory without any git tracked files

Did you check the docs and existing issues?

[X] I have read the docs
[X] I have searched the existing issues

Neovim version (nvim -v)
v0.10.0-dev-2976+g208852126
Operating system/version
MacOS 14.4.1
Describe the bug
[oil] Error applying actions: Error in git mv: fatal: source directory is empty, source=cue/external-secrets, destination=cue/third-party/external-secrets

What is the severity of this bug?
breaking (some functionality is broken)
Steps To Reproduce

mkdir a b c within a git repo.
touch a.txt
Open oil and move b into c. MOVE b/ -> c/b/. Click OK:

[oil] Error applying actions: Error in giv mv: fatal: source directory is empty, source=b, destination=c/b

try to move a into c.

[oil] Error applying actions: Error in giv mv: fatal: source directory is empty, source=a, destination=c/a

git add a/a.txt
move a into c. -> success

Expected Behavior
Move operations of files not tracked by git should work.
Directory structure
a/a.txt
b/
c/
Repro
-- save as repro.lua
-- run with nvim -u repro.lua
-- DO NOT change the paths
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "runtime", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
-- save as repro.lua
-- run with nvim -u repro.lua
-- DO NOT change the paths
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "runtime", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  {
        "stevearc/oil.nvim",
        config = function()
            require("oil").setup({
              -- add any needed settings here
                -- EXPERIMENTAL support for performing file operations with git
                git = {
                  -- Return true to automatically git add/mv/rm files
                  add = function(path)
                   return false
                  end,
                  mv = function(src_path, dest_path)
                   return true
                  end,
                  rm = function(path)
                   return true
                  end,
                },
            })
        end,
  },
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here

Did you check the bug with a clean config?

[X] I have confirmed that the bug reproduces with nvim -u repro.lua using the repro.lua file above.

git ls-files can be given the path of any file with that you can determine if the source is tracked in git. Combined with --error-unmatch you can just check for the exit code.
$ git ls-files --error-unmatch a
a/a.txt

$ git ls-files --error-unmatch b
error: pathspec 'b' did not match any file(s) known to git
Did you forget to 'git add'?


Reduce number of ZooCache instances and Watchers

This commit removes most of the places where ZooCache instances were being created in favor of re-using the ZooCache from the ClientContext. Additionally, this commit does not place a Watcher on each node that is cached and instead places a single persistent recursive Watcher at the paths in which the caching is taking place.
This change roughly reduces the Watchers reported in WatchTheWatchCountIT by 50%. While reducing the number of Watchers, this commit could reduce ZooKeeper server performance in two ways:

There is a note in the ZooKeeper javadoc for the AddWatchMode enum that states there is a small performance decrease when using recursive watchers as all of the segments of ZNode paths need to be checked for watch triggering.

Because a Watcher is not set on each node this commit modified the ZooCache.ZCacheWatcher to remove the parent of the triggered node, the triggered node, and all of its siblings from the cache. This overmatching may mean increased lookups in ZooKeeper.

Related to #5134
Closes #5154, #5157

Given how much this conflicts with #4809 and #5124, I'd like to hold off on some of these, and would prefer to go with a much more narrow change that just reuses the existing ZooCache on the context.

Re-using the ZooCache on the context is actually the larger change code-wise. Modifying ZooCache to use the persistent recursive watchers is pretty much self contained within ZooCache except for some tests.

The prerequisite branch I made to help @meatballspaghetti get started on the chroot stuff for #4809 and the work I have already nearly wrapped up for #5124 are heavily conflicted with these changes, and I'd prefer to get those in first.

I have no issue with waiting for #4809 and #5124 to be merged first, assuming they are done relatively soon.

Additionally, this PR seems to be broken on its reliance on a newer ZooKeeper version, newer than the one we have been testing as a supported. Do you know which ZK version introduced these features? If the versions required to support this change are too narrow, it might really limit the deployment options for users, if that range of versions is buggy in some way. In the past, we've generally supported a pretty large range of ZooKeeper versions, allowing quite a lot of flexibility for users when making upgrade decisions. I'd like to not narrow the versions of ZK we support too much, if this was only introduced in 3.9 or maybe even 3.8. But if this was introduced in 3.6 or 3.7, it's probably fine.

Persistent Recursive Watchers were added in 3.6.0, so it's a very minor bump in the minimum required version.

I also have questions about how these new watchers work, and whether it'd actually perform better. It seems there were some open questions about that.

I agree, which is why I targeted this for 4.0, to give us time to test it.

Right now, I don't think we have an excessive number of watchers like we've had in the past, so it's not much of a problem

I don't know what excessive means in this context. The WatchTheWatchCountIT is failing due to the increased watchers added in a recent PR for caching the non-existent nodes in ZooCache.

I don't know what excessive means in this context.

In the past, we had watchers scale as numTablesEverCreated * numProperties * numTServers. WatchTheWatchCountIT was made to keep an eye on that. Now we scale to numCurrentTables * numTServers (not counting the new stuff you're referring to, which I think is probably still not quite the same scale as what we saw before, but we definitely need to address since the caching of non-existence was added).


README: don't say it's possible to use loopback, it's not

In b81bbd, it was added that using loopback should be possible if
multicast flag was added. However, in config.c, IFF_LOOPBACK flag on
an interface makes it impossible to use a loopback interface.
In fact, I would be very interested to use the loopback. I would like to send local traffic to a multicast address but I have multiple output interfaces. I'd like to be able to bind to loopback and let pimd advertises the multicast endpoint. So I'll try to remove the limitation in config.c instead.

Well, this works just fine let me do another PR instead.

Good catch, must've been from when I was about to remove that limitation myself but never really got around to it.


add temporal.io

hey! just adding Temporal since they released v1.0 and its missing from this list

👍


Feature/c make options

Hi, I changed the build process once more. Changes should be backwards compatible, but CMake 3.0.0 is required now. Is this a problem?

@jowr The CMake script works good.  Since each wrapper page contains instructions for building the wrapper, I'd remove some clutter and follow the clear CMake instruction format already used previously with this:

Accessing IF97 from your software
There is a wrapper directory for 3rd party applications, including:

Mathcad 15 (Jeff Henning main contributor)
Mathcad Prime (Jeff Henning main contributor)

See the README in each wrapper directory for instructions on building and installing each.
Furthermore, there is an interface library target that installs the header file. This target can also be digested by other CMake-based projects using the add_subdirectory command. Enable it like this:
mkdir buildIL
cd buildIL
cmake .. -DIF97_CMAKE_MODULE=ON

If I got the intent of the build correct...

Pardon my stupidity, but what do you gain with this above and beyond just adding the include to the .h file in another project?

You do not gain much here, but I am working on including CoolProp in the Hunter package management for CMake and this requires that all dependencies are "hunterized" as well. The proposed changes make it much easier to add the Hunter-specific code to https://github.com/hunter-packages/IF97 since I do not want them to clutter this repo.

Hey @jowr - that seems reasonable; thanks for the explanation.  I have no other comments to make on this one, if you have tested and it works properly, I have no objection to a merge.


timer: mimimum value of Duration should be Non Zero Positive number.

Duration specify time interval before timer expires for first time,
it is measured in milliseconds. It must be greater than zero.
Currently we even duration with 0ms value is also valid.
This patch does 2 tasks :-

Enforce Duration is Positive non Zero Number.
Currently _TICK_ALIGN is adding one extra Tick to duration while
programing. This patch removed addition of _TICK_ALIGN.

Jira: ZEP-2497
Signed-off-by: Youvedeep Singh<EMAIL_ADDRESS>

Adding my view on this here as well: there are use cases where the k_timer_start() API user wants the timer to fire for the first time as soon as possible, and then after that using the given period. In such cases giving K_NO_WAIT seems like the most intuitive thing, i.e. forbidding it makes the API worse (IMO).

Hi @jhedberg
There are 2 approaches to this:
Approach 1 (one for which I have submitted patch):- Enforce  the condition that Duration should be positive non Zero Value and remove _TICK_ALIGN while calculating final duration. In this respect I have submitted a patch @  https://github.com/zephyrproject-rtos/zephyr/pull/1073
Approach2 (Approach proposed by jhedberg): - Allow duration 0 value passed in the duration to be legal and handle 0 case inside k_timer_start something like :-
Duration = Duration < K_MSEC(1) ? K_MSEC(1) : Duration
But there are some points we should consider against approach 2:-

If a user want to fire a timer after 0 duration, then why she will start the timer, instead a function call can be made and this function call can do same action as timer handler.
Zephyr Documentation calls out clearly that Duration should be non Zero positive value.
Zephyr begin a RTOS should distinguish between Duration of value 0 and 1, If we go by Approach 2 then timer value programmed is going to be same for Duration value 0 and 1, whereas a user expects Duration of 1 is going to me more than 0.

Looking at above points it looks like Approach 1 is more convenient as compared to Approach 2. Also I did grep and found that all instances of k_thread_start as using Non Zero as duration argument (excepy microbit Display). For microbit Display I have submitted a patch  https://github.com/zephyrproject-rtos/zephyr/pull/1074.
So technically we put 2 patches
https://github.com/zephyrproject-rtos/zephyr/pull/1073
https://github.com/zephyrproject-rtos/zephyr/pull/1074
net system behavior is going to be same as it is currently and it will confer to Zephyr Documentation too.

Hi @youvedeep
Some answers to your points regarding approach 2:

One reason is that the user always wants the timer callback to happen in the same context, which may be different from the one that's calling k_timer_start. This is e.g. the case with the micro:bit display driver.

Yes, but it's also in conflict with the asserts in the current k_timer_start implementation. One of those is not right, but I wouldn't say it must be the implementation rather than the documentation.

We have other "timer" APIs where K_NO_WAIT has the same intuitive "as soon as possible" meaning. One example is passing K_NO_WAIT to k_delayed_work_submit(). In such a case it behaves the same as k_work_submit().

Assuming that the justification in point 1 is valid, if the API user desires "as soon as possible" triggering of the first timer callback, having to pass 1 instead of 0 makes the API usage "weird" in that what you're giving it is a bit arbitrary and not reflecting the exact intention.

I agree with @jhedberg here  in that, from the point of view of the API user, it is much more understandable to have a K_NO_WAIT parameter passed in when you want the timer to fire as soon as possible, instead of having to artificially hardcode an arbitrary value of "1". What the kernel does internally is an entirely different thing, but "fire timer ~now" is a valid usecase.

@youvedeep @galak @jhedberg @cvinayak we just had a similar confusion happen to one of our developers, when he tried to call k_sleep(K_FOREVER) and that just returns immediately. I think K_NO_WAIT and K_FOREVER should be allowed in all kernel APIs or not allowed at all.

Hi @carlescufi
I looked at this and here are my comments:-
What Code indicates:- (Do not allow K_FOREVER)
"K_FOREVER" is mapped to -1 and because of this it is returning from k_sleep() immediately without waiting.
__ASSERT(duration != K_FOREVER, "");
What Documentation indicates :- (Do not allow)
(http://zephyr-docs.s3-website-us-east-1.amazonaws.com/online/1.7.0/api/kernel_api.html) :-
void k_sleep(int32_t duration)
Put the current thread to sleep.
This routine puts the current thread to sleep for duration milliseconds.
duration: Number of milliseconds to sleep.
What intuition indicates:- (Allow -1)
if we look at  type of parameter this API (int32_t duration), which indicates a signed value, So intuitively -1 (wait forever) should be allowed,
I think this confusion is starting due to this intuition ,
So we should :- "
Either allow "K_NO_WAIT or K_FOREVER" across the APIs
or
Update parameter type and document accordingly and do not allow these.

Hi @carlescufi / @jhedberg
can you please help me to verify if my latest patch fixes GFX issue on microbit device.

@youvedeep I can do that, as soon as I get back to my office where the hw is

@jhedberg oh thanks for that


Cannot import from poetry

[x] I have searched the issue tracker and believe that this is not a duplicate.

Make sure you run commands with -v flag before pasting the output.
Steps to reproduce

In a poetry project root, trying to follow the instructions to import it to pdm.
Actual behavior

➤ pdm --version
pdm, version 1.3.0

➤ pdm import -vf poetry pyproject.toml
Traceback (most recent call last):
  File "/var/home/yajo/.local/bin/pdm", line 8, in <module>
    sys.exit(main())
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 73, in __call__
    return self.main(*args, **kwargs)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 112, in main
    raise err.with_traceback(traceback)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 108, in main
    f(options.project, options)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/cli/commands/import_cmd.py", line 25, in handle
    do_import(project, options.filename, options.format)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/cli/actions.py", line 519, in do_import
    project_data, settings = FORMATS[key].convert(project, filename)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/formats/poetry.py", line 171, in convert
    with open(filename, encoding="utf-8") as fp, cd(os.path.dirname(filename)):
  File "/usr/lib64/python3.9/contextlib.py", line 117, in __enter__
    return next(self.gen)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/utils.py", line 290, in cd
    os.chdir(path)
FileNotFoundError: [Errno 2] No such file or directory: ''

➤ pdm import -vf poetry .
Traceback (most recent call last):
  File "/var/home/yajo/.local/bin/pdm", line 8, in <module>
    sys.exit(main())
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 73, in __call__
    return self.main(*args, **kwargs)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 112, in main
    raise err.with_traceback(traceback)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 108, in main
    f(options.project, options)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/cli/commands/import_cmd.py", line 25, in handle
    do_import(project, options.filename, options.format)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/cli/actions.py", line 519, in do_import
    project_data, settings = FORMATS[key].convert(project, filename)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/formats/poetry.py", line 171, in convert
    with open(filename, encoding="utf-8") as fp, cd(os.path.dirname(filename)):
IsADirectoryError: [Errno 21] Is a directory: '.'

Expected behavior

Import successful.
Environment Information
➤ pdm -v info && pdm -v info --env
Traceback (most recent call last):
  File "/var/home/yajo/.local/bin/pdm", line 8, in <module>
    sys.exit(main())
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 73, in __call__
    return self.main(*args, **kwargs)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 112, in main
    raise err.with_traceback(traceback)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/core.py", line 108, in main
    f(options.project, options)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/cli/commands/info.py", line 29, in handle
    actions.do_info(project, options.python, options.where, options.env)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/cli/actions.py", line 478, in do_info
    python_path = project.environment.python_executable
  File "/usr/lib64/python3.9/functools.py", line 969, in __get__
    val = self.func(instance)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/project/core.py", line 159, in environment
    return Environment(self)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/models/environment.py", line 94, in __init__
    self.python_requires = project.python_requires
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/project/core.py", line 163, in python_requires
    return PySpecSet(self.meta.requires_python)
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/pdm/project/core.py", line 412, in meta
    return Metadata(self.pyproject_file, self.pyproject["project"])
  File "/var/home/yajo/.local/pipx/venvs/pdm/lib64/python3.9/site-packages/tomlkit/container.py", line 576, in __getitem__
    raise NonExistentKey(key)
tomlkit.exceptions.NonExistentKey: 'Key "project" does not exist.'

I guess https://github.com/python-poetry/poetry/issues/3332 is related. Poetry stores project metadata in a section called [tool.poetry].

Oh, weird. I found the workaround: prepend ./ to the file name:
➤ pdm import -vf poetry ./pyproject.toml
Changes are written to pyproject.toml.


Wrong generation

I think I should open a similar issue on gir but here is what we get after we generated gdkx11 and try to build it:
$ cargo build
   Compiling gdkx11 v0.1.0 (/home/imperio/rust/gdkx11)
error[E0405]: cannot find trait `ToValue` in this scope
  --> src/auto/x11_device_xi2.rs:69:45
   |
69 |         let mut properties: Vec<(&str, &dyn ToValue)> = vec![];
   |                                             ^^^^^^^ not found in this scope
   |
help: possible candidates are found in other modules, you can import them into scope
   |
5  | use gdk::prelude::ToValue;
   |
5  | use gdk_pixbuf::prelude::ToValue;
   |
5  | use gio::prelude::ToValue;
   |
5  | use glib::ToValue;
   |
     and 3 other candidates

error[E0412]: cannot find type `GLContext` in crate `gdk`
  --> src/auto/x11gl_context.rs:11:135
   |
11 |     pub struct X11GLContext(Object<gdk_x11_sys::GdkX11GLContext, gdk_x11_sys::GdkX11GLContextClass, X11GLContextClass>) @extends gdk::GLContext;
   |                                                                                ^^^^^^^^^ not found in `gdk`

error[E0412]: cannot find type `Monitor` in crate `gdk`
  --> src/auto/x11_monitor.rs:11:127
   |
11 |     pub struct X11Monitor(Object<gdk_x11_sys::GdkX11Monitor, gdk_x11_sys::GdkX11MonitorClass, X11MonitorClass>) @extends gdk::Monitor;
   |                                                                                ^^^^^^^ not found in `gdk`

warning: unused `#[macro_use]` import
  --> src/lib.rs:20:1
   |
20 | #[macro_use]
   | ^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

error: aborting due to 3 previous errors; 1 warning emitted

Some errors have detailed explanations: E0405, E0412.
For more information about an error, try `rustc --explain E0405`.
error: could not compile `gdkx11`.

To learn more, run the command again with --verbose.

Any idea @sdroege @EPashkin ?

As used types are versioned all of these module must be versioned too
#[cfg(any(feature = "v3_16", feature = "dox"))]
use glib::ToValue;
//in gdk
#[cfg(any(feature = "v3_22", feature = "dox"))]
pub use self::monitor::{Monitor, MonitorClass};
#[cfg(any(feature = "v3_16", feature = "dox"))]
pub use self::gl_context::{GLContext, GLContextClass};

error[E0405]: cannot find trait ToValue in this scope

Missing include somewhere. Otherwise what @EPashkin said :)

For the gdk types yes. However, there should have a "use glib::ToValue" at the top of the file, however there isn't!

@GuillaumeGomez You removed comment here just now? About ToValue?

 :)

Ok, lets remove question and answer too ;)

However it's still weird that the import is behind a cfg whereas the method where it's used is not...

Yes, and fix is ready: https://github.com/gtk-rs/gir/pull/925

I guess this can be closed


Read all device states at once for raw input handlers

Use the new API of ppy/opentk#25.

Closes ppy/osu#3073

Blocking this pending benchmarking for potential increases in allocs.


Publishing from Windows Subsystem Linux (WSL Ubuntu distro) terminal or browser fails to create a draft in Medium

I'm running Windows 10 and I have been using an Ubuntu Linux distro under the Windows Linux Subsystem.
When I click on "Deploy to Medium" I get to the publish screen without any issues, but then when I click on "Publish" I get the following error:
Failed to post to Medium
Returned error message below

"cannot identify image file <_io.BytesIO object at 0x7faefba705f0>"

When I publish from the terminal I get a more detailed view of the issue:
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied
Failed to generate minidump.Traceback (most recent call last):
  File "/home/etzimopoulos/anaconda3/bin/jupyter_to_medium", line 8, in <module>
    sys.exit(main())
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_command_line.py", line 129, in main
    publish(**args)
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_publish_to_medium.py", line 289, in publish
    p.main()
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_publish_to_medium.py", line 216, in main
    self.md, self.image_data_dict = self.create_markdown()
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_publish_to_medium.py", line 114, in create_markdown
    self.nb, self.resources = no_ex_pp.preprocess(self.nb, self.resources)
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/nbconvert/preprocessors/base.py", line 69, in preprocess
    nb.cells[index], resources = self.preprocess_cell(cell, resources, index)
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_preprocesors.py", line 126, in preprocess_cell
    output['data'] = {'image/png': ss_creator(html)}
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_screenshot.py", line 147, in _repr_png_
    return self.run(html)
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_screenshot.py", line 136, in run
    img = self.finalize_image(buffer)
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/jupyter_to_medium/_screenshot.py", line 108, in finalize_image
    img = Image.open(buffer)
  File "/home/etzimopoulos/anaconda3/lib/python3.7/site-packages/PIL/Image.py", line 2896, in open
    "cannot identify image file %r" % (filename if filename else fp)
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f9606bf7b30>

It looks like it's having an issue saving down the image using the Pillow library and that fails under "_screenshot.py"
Background
One of the issues I've had, in getting that far with using the library, was the fact that I'm running WSL and chrome browser would not always be accessed correctly by various libraries. e.g. - I wasn't able to launch a browser tab when I was launching my Jupyter Notebook under the WSL ubuntu distro as there was no UI and so I had to point it to the Windows Chrome executable (See details here)

I suspect the libraries are using the /usr/bin/chrome path to access chrome but under my configuration it wouldn't be able to launch the final confirmation about the draft medium page. To be honest I'm a little confused at this stage as to how these interplay, i.e. the Linux Chrome Installation (/usr/bin/chrome) vs the windows executable which needs to be used at some point to see the results published.
To verify this, I installed the other library you've published (dataframe_image) to generate an image from dataframes into a PDF, and again, when I publish the final PDF, I get the following error when using the option "Download-->DataFrame by Image via Browser (PDF)":

500 : Internal Server Error
The error was:

nbconvert failed: Could not connect to chrome server

To summarise:

I'm either missing some configuration in my setup to interchange between Windows Chrome and WSL Linux Chrome or there must be issue in the libraries that needs fixing/updating to cater for WSL (or a combination).
The actual issue of failing to convert the image using screenshot might be a genuine bug as I run the library with both chrome versions and got the same error (unless within the library it's using native linux chrome and that's the reason it's failing anyway).

Appreciate it's a long post but any support and feedback would be great.
Thanks

Can you attach your notebook here so I can download it and test it on my end?

Yes of course, thank you. I've played around with many notebooks but this simple one would do whereby I've tried to use some of your demo commands for generating a dataframe as the output of a cell and then highlighting it.
I also created a plot graph to see if this comes through but still no luck.
TestCellOutput.zip

Thanks. Also, can you run the following lines and tell me output?
import platform
platform.system()
platform.platform()

Here it is:
'Linux-4.4.0-19041-Microsoft-x86_64-with-debian-bullseye-sid'
I imagine this is going to be added as an option under the Operating systems or so? Something to pick upon in the IF statement? :)

Thanks. No, that's platform.platform. I'm guessing platform.system is 'Linux'

Yes you're right, apologies, I run both on the same cell previously.

No problem. I tested your notebook on my machine and it works.
It's finding chrome and taking screenshots, just reading it as 0 bytes. We need to find the chrome executable on your machine: It looks in one of these places
None,
 "/usr/local/sbin",
"/usr/local/bin",
"/usr/sbin",
"/usr/bin",
"/sbin",
"/bin",
"/opt/google/chrome"

for one of these commands:
"google-chrome", "chrome", "chromium", "chromium-browser", "brave-browser"

Can you identify where it is and which command its calling?

So I'm running Ubuntu under Windows Subsystem Linux, which means, there's no browser only the terminal.
I had a similar issue with launching Jupyter Notebook itself from Ubuntu, and the way I resolved it was pointing to the windows Chrome Executable (See here )
The full path is
/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe
which I also used when running the library as an argument, but made no difference:
jupyter_to_medium TestCellOutput.ipynb --chrome-path='/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'
At some point I edited your files locally to add this path to the ones you have above, but didn't work (or maybe I did something wrong).

I realised I forgot to address the other question. I just tested it and it's "google-chrome" but for some reason it's not working. This is what I get when I run it:
google-chrome Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied Trace/breakpoint trap (core dumped) (base) etzimopoulos@DESKTOP-HI9P6E4:/mnt/c/Users/etzim/Google Drive/Career/Data Science/GitHub/jupyter-to-medium$ [275:275:0100/000000.539345:ERROR:zygote_linux.cc(653)] write: Broken pipe (32) [0623/155257.539491:ERROR:nacl_helper_linux.cc(308)] NaCl helper process running without a sandbox! Most likely you need to configure your SUID sandbox correctly
So it looks like I need to fix that on my end. I would have expected "chrome" to work given I'm able to launch a browser with Jupyter from Ubuntu, but I'm fairly new to this cross platform functionality.

Thanks for all the information.  Could this be because it's a windows executable and we're passing linux arguments (e.g. headless, screenshot, etc...)?

I tried the same with google-chrome and got this:
 etzimopoulos@DESKTOP-HI9P6E4:~google-chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/ Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied Failed to generate minidump.Illegal instruction (core dumped)

If I run google-chrome on my terminal I get the following (gets stuck running):
 etzimopoulos@DESKTOP-HI9P6E4:~$ google-chrome Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied Trace/breakpoint trap (core dumped) (base) etzimopoulos@DESKTOP-HI9P6E4:~$ [1305:1305:0100/000000.631628:ERROR:zygote_linux.cc(653)] write: Broken pipe (32) [0624/070546.631832:ERROR:nacl_helper_linux.cc(308)] NaCl helper process running without a sandbox! Most likely you need to configure your SUID sandbox correctly

I played around a bit and managed to make this work (but temporarilly)
google-chrome --no-gpu --no-sandbox --disable-setuid-sandbox --headless --screenshot http://www.chromestatus.com

It created an image along with an error, but unfortunately worked only once. See attached picture here:

Tried running this again but it now keeps getting stuck without saving the image:
(base) etzimopoulos@DESKTOP-HI9P6E4:~$ google-chrome --no-gpu --no-sandbox --disable-setuid-sandbox --headless --screenshot http://www.chromestatus.com [0624/072025.641074:ERROR:udev_watcher.cc(61)] Failed to enable receiving udev events.

Not really sure either. Can you run the commands again with sudo?

I just uploaded a new version 0.1.0 to pypi with the option of using matplotlib to create tables instead of google chrome. The tables will look a bit different, but should be pretty close to the original.
Can you try with the new option and report back?

Hi Ted,
Unfortunately none of these worked. I think it's an issue with my system setup (Windows Subsystem Linux-WSL).
Let me take this away and I'll come back to you if I have any updates. I'll try to setup a VM to run this on Linux properly to check if its me or the library :)
Thanks again for your support.
Angelo

Did you try the matplotlib option? It has nothing to do with chrome.

It's working!!! Hooray!
Sorry, didn't realise it was an added parameter so previous test was invalid. Here's what I tried:
1) TestCellOutput.ipynb - via the terminal
I run the following command: jupyter_to_medium TestCellOutp - WORKED FINE ut.ipynb --chrome-path='/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe' --table-conversion='matplotlib'
Output:
findfont: Font family ['Helvetica'] not found. Falling back to DejaVu Sans.
findfont: Font family ['Helvetica'] not found. Falling back to DejaVu Sans.
loading image to medium
loading image to medium
loading image to medium

Successfully posted to Medium!!!
--------------------------------
id                  xxxx
title               TestCellOutput
authorId           xxxx
url                 https://medium.com/@etzimopoulos/xxxx
canonicalUrl
publishStatus       draft
license             all-rights-reserved
licenseUrl          https://medium.com/policy/9db0094a1e0f
tags                []

2) TestCellOutput.ipynb via the UI (selecting Matplotlib option in the publishing page) -  WORKED FINE
3) TestJ2m.ipynb via the UI  - WORKED FINE
This was the original I was trying to publish as an article when I realised I'm getting errors so tested that to make sure it works.
Attached both files below.
TestJ2m.zip

Also, this was the log from running Test2m.ipynb via the UI:
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
findfont: Font family ['Helvetica'] not found. Falling back to DejaVu Sans.
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
Fontsize 0.00 < 1.0 pt not allowed by FreeType. Setting fontsize = 1 pt
loading image to medium
loading image to medium
loading image to medium
loading image to medium
loading image to medium
loading image to medium
loading image to medium

Successfully posted to Medium!!!
--------------------------------
id                  f896d38a16ad
title               TestJ2m

Excellent! Thanks for testing again. I'll try and make the matplotlib conversion better in the future.
As for WSL. I have no idea how to make it work and don't really want to use my time to dig deeper into it as the matplotlib option should be good enough as a replacement.


MINOR; Remove duplicate update updateLeaderEndOffsetAndTimestamp

The KafkaRaftClient.onBecomeLeader will invoke appendLeaderChangeMessage, the call stack are:
1. appendLeaderChangeMessage
    1.1 flushLeaderLog
        1.1.1 updateLeaderEndOffsetAndTimestamp
        1.1.2 log.flush()

so the updateLeaderEndOffsetAndTimestamp  is already invoked, and updateLeaderEndOffsetAndTimestamp should only be invoked after leo change(or time change), since log.flush() will not change leo(and ts),  it's unnessary to invoke twice.

ping @hachikuji to have a look.


PI-634 Version number incorrect in mod_cloudflare.c comment

Version 1.0.3

Thanks

DNS client


Auto continue documentation comments

Right now regular multiline comments are continued just fine and when you hit return it will add the double forward slashes. Documentation comments, however, which use the tripple forward slashes are not continued. Rather it enters two forward slashes.

The docblockr package can do this

Atom has a commentStart setting (given in settings/rust.cson). It would be nice if this setting would be able to take more than one value or even a regex. I'm not sure, but I think it's a single string only.


Fix #1655: Allow export of classes inside objects

This is a trivial extension to allow exports of static classes / modules. The only non-trivial issues is name choice, which we effectively circumvent by forcing the user to choose a name.

Review by @sjrd

Updated.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/3500/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/4608/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/3501/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/4609/
Test PASSed.


Added sanitizer-specific suffixes

I'd like to have separated Godot binary filenames that display which sanitizers were enabled.
Not sure if we want this, but I find it useful.

@Rubonnek Is this still desired? If so, it needs to be rebased and tested on the latest master branch, and the above feedback needs to be addressed. Otherwise, abandoned PRs will be closed.

@aaronfranke Yes, I'd still like to have this change. I've update the PR. There's also nothing to address in the feedback above as it is a compliment since this PR helps a bit with #37301 but does not solve that issue.

A significant issue with this is that it will increase the disk space usage when doing multiple builds, since it will change the name of all intermediate compiled objects. So this would break incremental builds when changing from one sanitizer to another. It also makes it harder to guess what the binary name will be unless you know exactly in what order the options get parsed to append a suffix. WDYT @qarmin?

I don't think that this will cause increased disk usage, because users(or just me) use most of the time only 1 set of sanitizers options (undefined + address + leak). Thread(very very slow) and Memory(for now barely usable in Godot) sanitizer cannot be mixed with previous options and are used very rarely so only a few people will need to use more space, but this will help with recompilation, as in the meantime the files will not be overwritten when using different set of options.
I'm not sure about incremental builds, because from my experience it doesn't work between two builds with different sanitizers options(scons use_tsan=yes overwrite all generated files from scons use_asan=yes). As for the suffixes, they will allow to see without running Godot what flags were used to create it. This is not problem for me, but maybe other may have a little problems with it.

A significant issue with this is that it will increase the disk space usage when doing multiple builds, since it will change the name of all intermediate compiled objects. So this would break incremental builds when changing from one sanitizer to another. It also makes it harder to guess what the binary name will be unless you know exactly in what order the options get parsed to append a suffix. WDYT @qarmin?

Would it need to be intermediate files? Seems the original request is just related to the final binary.

If the concern is disk space, don't change the intermediate suffix, and intermediates will be overwritten. Do change the PROGSUFFIX so the binary is built separately.
If the concern is incremental build speed, use different suffixes for intermediates and the final binary.

Possibly those two ideas could be made into an option, but that seems a bit contrived.

Closing pull request as I'm no longer interested in maintaining it.
I wrote some shell functions on my end as my workaround to renaming the binaries.


Duplicate code in Utils to check for a "single instance"

Describe the bug
Notwithstanding the dubious comment reporting "very brittle logic", I am reporting what I believe is duplicate code in the Utils.py file (below).
Steps/commands/code to Reproduce
The following code block:
    # The next if statement is very brittle logic to determine if we're processing a single instance
    if (
        file_path.startswith("text://")
        or (Path(file_path).is_file() and Path(file_path).suffix in [".md", ".txt"])
        or is_github_issue_url(file_path)
    ):
        ib = InstanceBuilder(token=token)
        ib.set_problem_statement(file_path)
        if repo_path:
            ib.set_repo_info(repo_path, base_commit=base_commit)
        elif is_github_repo_url(file_path):
            ib.set_repo_info_from_gh_url(file_path, base_commit=base_commit)
        else:
            msg = f"Could not determine repo path from {file_path=}, {repo_path=}"
            raise ValueError(msg)

        return [ib.build()]

Is identical logically to:
    # The next if statement is very brittle logic to determine if we're processing a single instance
    if (
        (Path(file_path).is_file() and Path(file_path).suffix in [".md", ".txt"])
        or is_github_issue_url(file_path)
        or file_path.startswith("text://")
    ):
        ib = InstanceBuilder(token=token)
        ib.set_problem_statement(file_path)
        if repo_path:
            ib.set_repo_info(repo_path, base_commit=base_commit)
        elif is_github_repo_url(file_path):
            ib.set_repo_info_from_gh_url(file_path)
        else:
            msg = f"Could not determine repo path from {file_path=}, {repo_path=}"
            raise ValueError(msg)

        return [ib.build()]

Error message/results
n/a
System Information
n/a
Checklist

[X] I'm running with the latest docker container/on the latest development version (this means running both git pull and docker pull sweagent/swe-agent:latest)
[X] I have copied the full command/code that I ran (as text, not as screenshot!)
[X] If applicable: I have copied the full log file/error message that was the result (as text, not as screenshot!)
[X] I have enclosed code/log messages in triple backticks (docs) and clicked "Preview" to make sure it's displayed correctly.

This was introduced in https://github.com/princeton-nlp/SWE-agent/pull/317/files#diff-b24a4d7213e40c6b304daeb27a324ff87a7366285920dc6060b38cc96087ce4c . Clearly a mistake and I didn't catch it when reviewing.
Thanks for spotting this!


Update readme

@HughPH Yo, changed version to 2.4.0-alpha1. Sounds good?

FYI - https://www.nuget.org/packages/Box2D.NetStandard/2.4.0-alpha1

https://github.com/benzuk/box2d-netstandard/pull/24


stm32u5: Re-implement VCO input and EPOD configuration

Describe the bug
During implementation of https://github.com/zephyrproject-rtos/zephyr/pull/41310, VCO input and EPOD configuration were removed.
Initial tests didn't show any adverse effect, but it would be saner to re-instantiate this piece of code.
Instead of doing it directly in #41430, it is proposed to do it on top of https://github.com/zephyrproject-rtos/zephyr/pull/41585,
taking benefit of tests and code optimization provided.

@ABOSTM fyi


Payment processing failed

Hello i'm trying to use this pool for my eth private network made with geth but i'm having problems:
Payment processing failed System.Exception: Unable to determine block reward: Unsupported chain type
at Miningcore.Blockchain.Ethereum.EthereumPayoutHandler.GetBaseBlockReward
here the geth startup line:
geth --networkid 171 --datadir BlockChainData/ --http --http.addr <IP_ADDRESS> --http.api admin,eth,miner,net,txpool,personal,web3 --allow-insecure-unlock --http.corsdomain "" --http.vhosts "" --http.port 8545 --unlock private--password pass.txt --allow-insecure-unlock --mine --cache 1024
Any help is welcome

Hello. Change "chainTypeOverride" in config.json to "Main"

Hello. Change "chainTypeOverride" in config.json to "Main"

Thanks but now have this problem:
Payment processing failed System.InvalidOperationException: This NpgsqlTransaction has completed; it is no longer usable.
at Npgsql.NpgsqlTransaction.CheckReady()
at Npgsql.NpgsqlTransaction.Rollback(Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlTransaction.Rollback()

and this:
Payment processing failed System.InvalidOperationException: Sequence contains more than one element
at System.Linq.ThrowHelper.ThrowMoreThanOneElementException()


Bump follow-redirects from 1.13.0 to 1.14.8

Bumps follow-redirects from 1.13.0 to 1.14.8.

Release notes
Commits

updated-dependencies:

dependency-name: follow-redirects
dependency-type: indirect
...

Signed-off-by: dependabot[bot]<EMAIL_ADDRESS>

good

Looks good


JCAMP of 1H created in Mnova 14.1.2 will not load

When I upload a JCamp of an 1H generated in Mnova, nothing happens (two examples attached).

Testing done by me:

JCAMP files of 13C generated by Mnova work
JCAMP files generated by TopSpin of the same spectra work (attachment, suffix _bruker)
JCAMP files generated by

I don't see the files. Can you zip them and upload them here ?


feat: bump android to 2.3.1

:tada: This PR is included in version 1.5.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


release version 0.1.4

Codecov Report

Merging #488 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #488   +/-   ##
=======================================
  Coverage   96.11%   96.11%
=======================================
  Files          33       33
  Lines        2161     2161
  Branches      177      177
=======================================
  Hits         2077     2077
  Misses         46       46
  Partials       38       38

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 0f5d6cc...2df0616. Read the comment docs.


Fix reference handler

Depends on #1877, so review/merge that one first
Fixes the reference handler to return a dict rather than a list

👍

Coverage decreased (-0.06%) to 83.713% when pulling 665160c2e7177ab4f2172d5384fa2646f1a8b73f on josenavas:fix-reference-handler into 4430c0734d993620a954810f58b510e34f15b57a on biocore:simplify-restAPI.


Implement Home page as shown in mockup

Description

Home Page Mockup
Add a Home Page component that resembles mockups.
Should replace Welcome Page (Laravel).
Possible Implementation

Make a Home.tsx
Components:

events card

Out of scope

N/A
Requirements / Restrictions

N/A

Please add your planning poker estimate with ZenHub @bcobo341


doc: issue-238: update parameter naming and remove filter param

Summary:
Update all parameter naming to be all snake_case and remove the unused filter parameter issue-238
Expected behavior:
Changes are in the naming of parameters in the yaml, so there shouldn't be any UI changes.
Testing tips:
As long as the current automated tests pass, I think it should be fine. There is no change to existing logic and no new logic is introduced.
Please make sure these boxes are checked before submitting your pull request - thanks!

[ x ] Run the unit tests with ./scripts/api-tests.sh to make sure you didn't break anything
[ x ] Add or update any needed documentation to the repo
[ x ] Format the title like "feat: [new feature short description]". Title must follow the Conventional Commit Specification(https://www.conventionalcommits.org/en/v1.0.0/).
[ x ] Linked all relevant issues
[ x ] Include screenshot(s) showing how this pull request works and fixes the issue(s)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Roy Li seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Single YouTube Videos with Referenced Playlist Fail to Load

Describe the bug
Embedding a single video with a URL containing the playlist query param causes the embed to fail.
This was working previously; this change in behavior may have been introduced with commit 38eb029.
To Reproduce
Steps to reproduce the behavior:

Have a YouTube video link of a format https://youtube.com/watch?v=<some-video-id>&list=<some-playlist-id> in a source markdown file
Build and view the page

Example url in this format:
https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=RDdQw4w9WgXcQ
Generates an iframe (line breaks added for readability):
<iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
src="https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ&list=RDdQw4w9WgXcQ"
allow="autoplay; encrypted-media" allowfullscreen=""></iframe>

Which yields a non-working embed:

Expected behavior
Video embed works. As the YouTube share/embed code doesn't seem to allow for including the playlist, dropping the playlist information should be acceptable.
Additional context
Looking at the above example link with the old regex seems to work matching on just the video id. The new regex from 38eb029 fails and includes &list=... in the matched value.
I believe adjusting the regex to conditionally termiate at a first ampersand would correct this behavior. Unfortunately, my regex-fu is failing me in creating an updated regex pattern. If one is available, I'd be happy to open a PR for it.
Also, thank you for the hard work with this plugin! It's easy to use and configure, which is exactly what I was looking for.

Hi @edm00se
thanks for reporting.
Yes, it seems that the mentioned commit is the reason for this issue.
I have created a playground with the updated urls which should work ( or not?! ):
https://regex101.com/r/kPbXGI/3
And here the example with the old regexp:
https://regex101.com/r/9Ef2it/2

It seems we have to merge them or create a alternative regexp which handles both cases.
Any ideas how we could solve this?

I tried my hand at dong this a more "normal" JS way, since the regular expression approach seems to be getting a bit crazy. I first tried switching off a condition for using the old vs newer regex pattern, but eventually decided to try just parsing the url. This breaks with the approach used by the plugin here and incorporating it may be a bit more than a regex tweak, but at least it seems sane.
https://codesandbox.io/s/floral-dawn-bs67r?file=/index.ts

Thanks for the update and your time to find a solution.
I'm currently trying to solve it via RegEx.
I use https://www.debuggex.com/ to get it readable.
Glad that we have a holiday tomorrow in germany - it could be a long night :D

@edm00se i think I got it.
Definition:
https://www.debuggex.com/r/gm6rsrImNqXBS_9V
Example:
https://regex101.com/r/99zR6X/1
But with this regex we have also to make some changes inside the providers/Youtube.js.

That looks pretty good to me. I'll have a go at creating a PR.

I took a stab at it, it can be found in #39.

I will check it tomorrow

merged and released ✌

Preview updated: https://gridsome-preview.ilovenox.now.sh/content/gridsome-content-test/youtube/
I have added the two missing examples.

Excellent news.

In case anyone comes across this after-the-fact and wonders why it isn't working, check that your YT url has the video id url param before the list param. ?v=XXXXX&list=YYYYY as opposed to ?list=YYYY&v=XXXXX.


Pushing new CatalogSource won't update the deployed image

This is if using a tag.  There's no way to specify imagePullPolicy.  Workaround is use image digest.

The workaround doesn't work.  Discussion on https://jira.coreos.com/browse/SREP-1116
Was setting this up in https://github.com/jewzaam/osd-operators-registry/tree/catalog-image-digest but if it doesn't work it's going to be deleted eventually.

Should be fixed in https://github.com/operator-framework/operator-lifecycle-manager/pull/816


[8.2.0-dev] Target Cairo version doesn't exist

Trying to clone and build this branch but this commit (https://github.com/openfl/lime/commit/7824a39e815984549560fcb3a4ef0ad7cd453a4f) refers to a commit on freedesktop/cairo, which is a repo that doesn't exist.

Yeah, we had to update .gitmodules to point to freedesktop.org (2b3fe0ac0de16d25ed4b80a57b69eb17f43930bb). You should already have this commit, but you may still need to run git submodule sync && git submodule update.

And if you need to switch back from 8.2.0-Dev to develop, you will need to run git submodule sync && git submodule update again to go back to the original module URLs that develop is still using for our 8.1 updates. After we merge 8.2.0-Dev into develop, this commands won't be needed anymore.

The issue I was having was that I was unable to checkout the branch due to the missing submodule. I ended up being able to use --no-recurse-submodules and that allowed me to check out the corrected .gitmodules file, and then after that I could perform the git submodule sync.

Weird. My best guess is that when you previously checked out that branch, github.com/freedesktop/cairo still existed, and it remembered that URL. Maybe another solution would have been to delete your local copy of 8.2.0-Dev, then run git checkout upstream 8.2.0-Dev.
Anyway, glad you got it working.

Logging it here in case people try to find it, I encountered an error if I ever attempted to fetch the cairo submodule repository in its entirety:
error: object e5b831b107ad18e78ec9ea5e6da68eb30bf71126: missingSpaceBeforeDate: invalid author/committer line - missing space before date
fatal: fsck error in packed object
fatal: fetch-pack: invalid index-pack output

It seems some old commit in that repo is corrupted and needs to be fixed by them. In the meantime, I was able to do this to pull just the commit I needed:
git fetch --depth 1 freedesktop tag 1.17.6


can't import rule with a group in Install-On

We have many rules with groups in the install on.
The script has properly imported the group with dummy objects in it.
However it fails to import rules that uses this group in "Install On"

Hey @verduynb,
Does the import operation fails completely or does it finish and the rules are not imported properly?
If it fails, could you please attach the logs from the failure?

I was able to import the ruleset. However the rules with groups of GW in "Install On" were missing.Regards
Le mercredi 23 octobre 2019 03 h 49 min 28 s UTC−4, chkp-niram<EMAIL_ADDRESS>a écrit :

Hey @verduynb,
Does the import operation fails completely or does it finish and the rules are not imported properly?
If it fails, could you please attach the logs from the failure?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hi, is this solved in the actual version?

Hi,
Issues concerning importing-exporting simple-gateways and groups containing them have been fixed in the new release v5.8
Regards,
Eden


There is no such thing as 'Debian bases' which is in FAQ and linked from the first page

'Debian Bases' is wrong. It should be probably replaced with 'Debian-based Distributions'. I'm not sure if anything smaller can be used, but anyway, 'Debian-base' is wrong, it is 'Debian-based'.

@hedayat Thanks for reporting that, we will dix that :)


Init demo-app

I have made initial setup of demo-app.
There are a couple unresolved issues throught:

had to comment out moduleId: module.id
had to use full path to import variables / mixins

import variables / mixins, through it could be fixed for webpack with:
@import "~angular2-mdl/src/scss-mdl/variables";
@import "~angular2-mdl/src/scss-mdl/mixins";

Hi tb!
You are too fast ;-)
Just working on the demo/e2e app. But it seems that i can merge your work without problems because you have added a root folder "demo-app". Do you think your pr is ready for a merge? Otherwise I need to push my work first and you need to rebase with some small conflicts...

I have updated the PR, refactored the isVisible into
@HostBinding('class.is-visible') public isVisible = false;

I was not able to fix test through.
I think you can merge it as it gets us into right direction.


Unable to upgrade to cortex-m 0.4.3

I've tried to update the cortex-m crate to version 0.4.3.
There is a problem to get peripherals to enable the FPU. I didn't found a solution to get peripherals without taking the sole ownership of it.
The current code is :
let scb = &*cortex_m::peripheral::SCB.get();
scb.enable_fpu();

We can't do that because peripherals will not be accessible from other scopes :
let mut scb: cortex_m::peripheral::SCB = cortex_m::Peripherals::steal().SCB;
scb.enable_fpu();

Maybe I am missing somethind or we can't upgrade to this version of cortex-m crate.

There is a problem to get peripherals to enable the FPU.

(FWIW, cortex-m-rt enables the FPU before main on the thumbv7em-none-eabihf target)
let p = cortex_m::Peripherals::take().unwrap() will move all the core peripherals into the current execution context. After that you can pass p.SCB around to wherever you need. If you are using rtfm, SCB is under p.core where p: init::Peripherals.

We can't do that because peripherals will not be accessible from other scopes :

You can move SCB from init to any task using a late resource. If several tasks need access to it then the SCB resource can be shared by several tasks.
If any of that doesn't work for you could you give me more details about how your application is structured?

I've tried to update the cortex-m crate in cortex-m-rt. When switching to cortex-m 0.4.3, I had a problem on the fpu enable part before main. I've looked for a solution and did not find anything that could works without taking preripherals and making them not accessible in main.

I think I have the same issue on cortex-m 0.4.3, unable to run through  scb.enable_fpu(); line on a thumbv7em-none-eabihf target (STM32L432).
Gdb does not give back the hand once I step through this line and I have to kill it.
Everything works fine if I disable the fpu (switch to a thumbv7em-none-eabi target).

Is this still an issue? The last comment was about a cortex-m version that still required nightly. A lot has changed since then. Are there any MCUs that require specific FPU enabling actions?

Closing this as fixed. c-m-rt now uses assembly to enable the FPU. If there are still issues with the current version, please file a new issue.


Please provide examples using javascript. Not typescript.

Sorry I am new to TypeScript. I know JavaScript only. I am developing a web application using Google Lit-Html ( NOT Lit-Element).  In this application, I am using global variables to store states. It is working fine.
I want to move to use statemanjs to manage the Lit-Html model state by using JavaScript ( Not TypeScript). Is it possible? Thanks!

@haducloc here is an example with lit-html:
const clickState = createState(0);

const myTemplate = (clicks) =>
  html`<button @click=${clickHandler}>Clicks: ${clicks}</button>`;

function clickHandler() {
  clickState.set(clickState.get() + 1);
}

render(myTemplate(clickState.get()), document.body);

clickState.subscribe((s) => {
  render(myTemplate(s), document.body);
});

Thank you very much! I will give it a try. Really like your simpler solution to manage state in JavaScript application!

Thank you 😊


CSS

User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
Acceptance Criteria
GIVEN A prework study guide website
WHEN I view the study guide
THEN I see a dark blue header and footer, and four boxes with a shadow

added CSS external


Design Feature: Transfer tokens with eKYC Tx Check Golden Path v0.2

As a user
I want to transfer e-money token to another user
So that I can pay for another service
As an e-money token issuer
I want to ensure that transactions are only made between users that are KYC compliant
So that I am regulatory compliant
User is transferring e-money tokens

Check proof from issuer
is transaction less than the limit in proof
isKYC'd
onBeforeProccessingTransaction
Check proof is valid

Further details are at the Notion page

V0.2 ⇒ Design sessions ⇒ Privacy respecting KYC ⇒ pair on**
- Privacy respecting KYC
- Research on pending tx pool
    - Transactions need to be stopped if AML profile incorrect
- Investigate Tendermint mempool prio
- AML, not comfortable to do, takes time
    - include in module, a sink where we dump relevant information
    - we can attach to some queue at a later date
    - can be audited later, logic can be outside the node
- **Pending tx pool**, if approved, balance tracking
    - Issuer approves to the tx automated as an off-chain automated process
    - milliseconds
    - tool to approve
- off chain
    - auditor that can submit something to chain flagging tx
- KYCCredential
    - id
    - root
    - is_verified

https://www.notion.so/allinbits/OffChain-AML-Online-AML-4f61e02e47f54b179f498d7a9c4a99bf

During the design session of the 2021-06-11 we had a more detailed conversation about the requirements for compliance and it has been clarified that the requirements are that:

transactions shall be allowed only by KYC verified parties
it is not required to have off-chain filters on the content of the transactions, only on-chain KYC credentials

This issue isn't needed anymore


Arrow.write slow perf with ZonedDateTime

I'm trying to serialize a DataFrame with multiple columns types, including a ZonedDateTime column, with Arrow.jl. It appears ZonedDateTime columns have (or seem to have) a huge impact on the Arrow.write performance as compared to simple DateTime. Any diagnostic of that issue or potential remedy ?
using DataFrames, Dates, TimeZones, Arrow, BenchmarkTools

# Create a test dataframe
df_length = Int(1e3)
df = DataFrame(
    int = rand(0:1000, long_test_df_length),
    int_missing = rand(vcat(collect(0:10), [missing]), long_test_df_length),
    cont = randn(long_test_df_length),
    cont_missing = rand(vcat(randn(10), [missing]), long_test_df_length),
    str = rand(["a", "b", "c", "d"], long_test_df_length),
    str_missing = rand(["a", "b", "c", "d", missing], long_test_df_length),
)

# DF to Arrow in buffer function
serialize(df::DataFrames.AbstractDataFrame) = Arrow.write(IOBuffer(), df)

# Add regular DateTime column to df
df_with_dt = copy(df)
insertcols!(df_with_dt, "date" => collect(DateTime(2020, 1, 1 , 0, 0, 0):Second(1):(DateTime(2020, 1, 1, 0, 0, 0) + Second(df_length- 1))))
# Add ZonedDateTime column to df
df_with_zdt = copy(df)
insertcols!(df_with_zdt, "date" => collect(ZonedDateTime(2020, 1, 1 , 0, 0, 0, tz"Europe/Paris"):Second(1):(ZonedDateTime(2020, 1, 1, 0, 0, 0, tz"Europe/Paris") + Second(df_length- 1))))

# Benchmark it
# Regular DateTime
@btime serialize(df_with_dt)    # => 311.645 μs
# ZonedDateTime
@btime serialize(df_with_zdt)    # ==> 1.480 s

Hi @juliengooris, sorry for the slow reply here. I'm not seeing the same slow down in my setup:
julia> # Benchmark it
       # Regular DateTime
       @btime serialize(df_with_dt)    # => 311.645 μs
  276.730 μs (1367 allocations: 172.89 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51144, maxsize=Inf, ptr=51145, mark=-1)

julia> # ZonedDateTime
       @btime serialize(df_with_zdt)    # ==> 1.480 s\
  283.974 μs (1370 allocations: 171.41 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51176, maxsize=Inf, ptr=51177, mark=-1)

I'm on OSX, v"1.6.0-beta1" Julia. Can you share your OS and Julia version?

Hi @juliengooris, sorry for the slow reply here. I'm not seeing the same slow down in my setup:
julia> # Benchmark it
       # Regular DateTime
       @btime serialize(df_with_dt)    # => 311.645 μs
  276.730 μs (1367 allocations: 172.89 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51144, maxsize=Inf, ptr=51145, mark=-1)

julia> # ZonedDateTime
       @btime serialize(df_with_zdt)    # ==> 1.480 s\
  283.974 μs (1370 allocations: 171.41 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51176, maxsize=Inf, ptr=51177, mark=-1)

I'm on OSX, v"1.6.0-beta1" Julia. Can you share your OS and Julia version?

Hi,
I ran it on : Julia Version 1.4.2 (2020-05-23)
and Ubuntu 18.04.5 LTS.

Julien Gooris
Tel:  +33 (0)<IP_ADDRESS>.83
<EMAIL_ADDRESS>P before printing this email, think about the environment
Le mar. 26 janv. 2021 à 06:40, Jacob Quinn<EMAIL_ADDRESS>a
écrit :

Hi @juliengooris https://github.com/juliengooris, sorry for the slow
reply here. I'm not seeing the same slow down in my setup:
julia> # Benchmark it
   # Regular DateTime

   @btime serialize(df_with_dt)    # => 311.645 μs

276.730 μs (1367 allocations: 172.89 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51144, maxsize=Inf, ptr=51145, mark=-1)
julia> # ZonedDateTime
   @btime serialize(df_with_zdt)    # ==> 1.480 s\

283.974 μs (1370 allocations: 171.41 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51176, maxsize=Inf, ptr=51177, mark=-1)
I'm on OSX, v"1.6.0-beta1" Julia. Can you share your OS and Julia version?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JuliaData/Arrow.jl/issues/95#issuecomment-767309548,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACPQIPYOO7ATGMWJJAGTDUTS3ZIVBANCNFSM4VPQELCQ
.

Hi,
I ran it on : Julia Version 1.4.2 (2020-05-23)
and Ubuntu 18.04.5 LTS.

Julien Gooris
Tel:  +33 (0)<IP_ADDRESS>.83
<EMAIL_ADDRESS>P before printing this email, think about the environment
Le mar. 26 janv. 2021 à 06:40, Jacob Quinn<EMAIL_ADDRESS>a
écrit :

Hi @juliengooris https://github.com/juliengooris, sorry for the slow
reply here. I'm not seeing the same slow down in my setup:
julia> # Benchmark it
   # Regular DateTime

   @btime serialize(df_with_dt)    # => 311.645 μs

276.730 μs (1367 allocations: 172.89 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51144, maxsize=Inf, ptr=51145, mark=-1)
julia> # ZonedDateTime
   @btime serialize(df_with_zdt)    # ==> 1.480 s\

283.974 μs (1370 allocations: 171.41 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51176, maxsize=Inf, ptr=51177, mark=-1)
I'm on OSX, v"1.6.0-beta1" Julia. Can you share your OS and Julia version?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JuliaData/Arrow.jl/issues/95#issuecomment-767309548,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACPQIPYOO7ATGMWJJAGTDUTS3ZIVBANCNFSM4VPQELCQ
.

I'm not sure there's much we can do here unless we get a ZonedDateTime type that has the timezone has a type parameter, which would allow avoiding the slightly costly conversion routine. The problem is we first need to scan the Vector{ZonedDateTime} to ensure each element has the same timezone, since the arrow format encodes the timezone as the arrow equivalent of a type parameter. Someone proposed an idea of providing an Arrow.ToTimestamp(x, timezone) method that would allow a much more efficient encoding. I might try that out real quick and see if it provides a decent work-around.

Ok, Arrow.ToTimestamp was pretty easy, so I've made a PR for that: https://github.com/JuliaData/Arrow.jl/pull/173. I get the same timing encoding ZonedDateTime as DateTime using it:
julia> @btime serialize(df_with_zdt)    # ==> 1.480 s
  245.639 μs (1356 allocations: 170.98 KiB)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=51160, maxsize=Inf, ptr=51161, mark=-1)


When linking two accounts, use the provider the user last added to their account instead of the first one

Since the last provider the user adds to their account is likely to be the one that is most practical for them to use, I think this change would provider better UX.
@samtstern @amandle What are your thoughts on this?

@samtstern What do you think about this one?

@SUPERCILEX I like the idea, but I have to draw the line on 2.0.0 somewhere and I am drawing it at "things we have already done + phone auth" :-)

@samtstern cool beans, that works for me! 😀

@samtstern What are your thoughts on this?
I'm wondering if using our own custom ranking system would simply be better. We know that Google auth is way easier and faster, then I would say Facebook, then Twitter, then email. What do you think?

@SUPERCILEX I think custom ranking gets a little political, I don't want to favor one IDP over another because of implementation details.
I am fine to merge this into 2.1.0 now if you're happy with it as-is.