Bloop: 1.3.4 -> 1.4.1

Motivation for this change
Update bloop to the latest version
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

cc maintainer @Tomahna

There is one thing I'm not sure about.
For the cli, coursier install creates two files: bloop and .bloop.aux.
I link ${client}/.bloop.aux to $out/bin/bloop as I couldn't find a way to make it work otherwise.
I tried to create a link to both bloop and .bloop.aux, so the output would be:
/nix/store/ipbc12sqrg3abyxyyvf6rf3a2dmvxx7w-bloop-1.4.1/bin:
lrwxrwxrwx 1 root root   68 Jan  1  1970 bloop -> /nix/store/w2crq019aq7hz4wgp8h4lbfp6gjpam74-bloop-client-1.4.1/bloop
lrwxrwxrwx 1 root root   73 Jan  1  1970 .bloop.aux -> /nix/store/w2crq019aq7hz4wgp8h4lbfp6gjpam74-bloop-client-1.4.1/.bloop.aux
lrwxrwxrwx 1 root root   73 Jan  1  1970 blp-server -> /nix/store/zg1nzydhffdzwm7yi97kl86c613rhdjb-bloop-server-1.4.1/blp-server

but it doesn't work :
/home/karol/.nix-profile/bin/bloop: line 4: /home/karol/.nix-profile/bin/.bloop.aux: No such file or directory

First few lines of bloop is this:
#!/nix/store/81wybawvkr95c7j8gj5ab3y740mq1fli-bash-4.4-p23/bin/sh
export CS_NATIVE_LAUNCHER="true"
export IS_CS_INSTALLED_LAUNCHER="true"
exec "$(cd "$(dirname "$0")"; pwd)/.bloop.aux" "$@"
[SHORT BINARY]

So it's a wrapper with two additional variables set and some binary code (not sure what it does).
It seems that nixpkgs will link only visible files from $out/bin to .nix-profile, so .bloop.aux is ignored:
ll /home/karol/.nix-profile/bin | grep bloop

lrwxrwxrwx 1 root root    65 Jan  1  1970 bloop -> /nix/store/ipbc12sqrg3abyxyyvf6rf3a2dmvxx7w-bloop-1.4.1/bin/bloop*
lrwxrwxrwx 1 root root    70 Jan  1  1970 blp-server -> /nix/store/ipbc12sqrg3abyxyyvf6rf3a2dmvxx7w-bloop-1.4.1/bin/blp-server*

It works in the end, but maybe there is a better solution....
This may be relevant, how the Arch package is produced

are there any updates on this mr?

So first of all, sorry of letting this go for so long. I've been aiming to review this for more than a week now.
Note that the old way of packaging still work with bloop 1.4.+.
Currently, I'm not able to build this. I end up with an exception.
Downloaded 56 missing file(s) / 56
Exception in thread "main" java.nio.file.AccessDeniedException: /home
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
        at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)
        at java.base/java.nio.file.Files.createDirectory(Files.java:689)
        at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:796)
        at java.base/java.nio.file.Files.createDirectories(Files.java:782)
        at coursier.paths.Util.createDirectories(Util.java:80)
        at coursier.paths.CoursierPaths.computeCacheDirectory(CoursierPaths.java:68)
        at coursier.paths.CoursierPaths.computeJvmCacheDirectory(CoursierPaths.java:41)
        at coursier.paths.CoursierPaths.jvmCacheDirectory(CoursierPaths.java:91)
        at coursier.jvm.JvmCache$.defaultBaseDirectory0$lzycompute(JvmCache.scala:372)
        at coursier.jvm.JvmCache$.defaultBaseDirectory0(JvmCache.scala:371)
        at coursier.jvm.JvmCache$.defaultBaseDirectory(JvmCache.scala:308)
        at coursier.cli.jvm.SharedJavaParams$.$anonfun$apply$5(SharedJavaParams.scala:60)
        at scala.Option.getOrElse(Option.scala:189)
        at coursier.cli.jvm.SharedJavaParams$.apply(SharedJavaParams.scala:60)
        at coursier.cli.install.InstallParams$.apply(InstallParams.scala:38)
        at coursier.cli.install.Install$.run(Install.scala:20)
        at coursier.cli.Coursier$.$anonfun$runA$2(Coursier.scala:121)
        at coursier.cli.Coursier$.$anonfun$runA$2$adapted(Coursier.scala:113)
        at coursier.cli.CommandAppPreA.run(CommandAppPreA.scala:22)
        at caseapp.core.app.CommandAppWithPreCommand.$anonfun$main$5(CommandAppWithPreCommand.scala:99)
        at caseapp.core.app.CommandAppWithPreCommand.$anonfun$main$5$adapted(CommandAppWithPreCommand.scala:99)
        at scala.util.Either.fold(Either.scala:191)
        at caseapp.core.app.CommandAppWithPreCommand.$anonfun$main$3(CommandAppWithPreCommand.scala:99)
        at caseapp.core.app.CommandAppWithPreCommand.$anonfun$main$3$adapted(CommandAppWithPreCommand.scala:85)
        at scala.Option.foreach(Option.scala:407)
        at caseapp.core.app.CommandAppWithPreCommand.main(CommandAppWithPreCommand.scala:85)
        at coursier.cli.Coursier$.main(Coursier.scala:78)
        at coursier.cli.Coursier.main(Coursier.scala)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at coursier.bootstrap.launcher.a.a(Unknown Source)
        at coursier.bootstrap.launcher.Launcher.main(Unknown Source)
builder for '/nix/store/8as2l4znw6zi7gpk9x06637i8998nwm1-bloop-client-1.4.1.drv' failed with exit code 1```

Ok so for the problem of AccessDeniedException: /home, adding export COURSIER_JVM_CACHE=$(pwd) whenever using coursier install is necessary.

I link ${client}/.bloop.aux to $out/bin/bloop as I couldn't find a way to make it work otherwise.

The bloop script use a relative path to find .bloop.aux, it does not follow relative link. The AUR package faces the same problem and replace $(dirname "$0") by the effective path. Something along the line of sed 's|$(dirname "$0")|$out|' -i $out/bloop would do the trick if escaped correctly.
Along the line of following more closely what is done in the AUR package, I have got something along this line. (Note that it does not work yet, it's still a work in progress)
{ stdenv, fetchurl, coursier,
 autoPatchelfHook,
 lib, zlib }:

stdenv.mkDerivation rec {
  version = "1.4.1";
  name = "bloop-${version}";

  bloop-coursier-channel = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bloop-coursier.json";
    sha256 = "2e6a873183e5e22712913bfdab1331d0a7792167c369fee5be0c83e27572fe12";
  };

  bloop-bash = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bash-completions";
    sha256 = "da6b7ecd4109bd0ff98b1c452d9dd9d26eee0d28ff604f6c83fb8d3236a6bdd1";
  };

  bloop-fish = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/fish-completions";
    sha256 = "1pa8h81l2498q8dbd83fzipr99myjwxpy8xdgzhvqzdmfv6aa4m0";
  };

  bloop-zsh = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/zsh-completions";
    sha256 = "1xzg0qfkjdmzm3mvg82mc4iia8cl7b6vbl8ng4ir2xsz00zjrlsq";
  };

  buildCommand = ''
    export COURSIER_CACHE=$(pwd)
    export COURSIER_JVM_CACHE=$(pwd)

    mkdir -p channel
    ln -s ${bloop-coursier-channel} channel/bloop.json
    ${coursier}/bin/coursier install --install-dir $out --default-channels=false --channel channel --only-prebuilt=true bloop

    # patch the bloop launcher so that it works when symlinked
    sed 's|$(dirname "$0")|$out|' -i $out/bloop

    mkdir -p $out/bin
    ln -s $out/bloop $out/bin/bloop

    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/.bloop.aux

    #Install completions
    mkdir -p $out/etc/bash_completion.d
    ln -s ${bloop-bash} $out/etc/bash_completion.d/bloop
    mkdir -p $out/share/zsh/site-functions
    ln -s ${bloop-zsh} $out/share/zsh/site-functions/_bloop
    mkdir -p $out/usr/share/fish/vendor_completions.d/
    ln -s ${bloop-fish} $out/usr/share/fish/vendor_completions.d/bloop.fish
  '';

  outputHashMode = "recursive";
  outputHashAlgo = "sha256";
  outputHash     = "1z12cg44z56jgsv754m1ig4xifawqlxs898r95lqi39zsb7lshgi";

  meta = with stdenv.lib; {
    homepage = "https://scalacenter.github.io/bloop/";
    license = licenses.asl20;
    description = "Bloop is a Scala build server and command-line tool to make the compile and test developer workflows fast and productive in a build-tool-agnostic way.";
    maintainers = with maintainers; [ tomahna ];
  };
}

The original proposal needs at least the export COURSIER_JVM_CACHE=$(pwd) part to work properly. I'll try to look further into it in the next few days.

{ stdenv, fetchurl, coursier,
 autoPatchelfHook,
 lib, zlib }:

stdenv.mkDerivation rec {
  basename = "bloop";
  version = "1.4.1";
  name = "bloop-${version}";

  bloop-coursier-channel = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bloop-coursier.json";
    sha256 = "2e6a873183e5e22712913bfdab1331d0a7792167c369fee5be0c83e27572fe12";
  };

  bloop-bash = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bash-completions";
    sha256 = "da6b7ecd4109bd0ff98b1c452d9dd9d26eee0d28ff604f6c83fb8d3236a6bdd1";
  };

  bloop-fish = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/fish-completions";
    sha256 = "1pa8h81l2498q8dbd83fzipr99myjwxpy8xdgzhvqzdmfv6aa4m0";
  };

  bloop-zsh = fetchurl {
    url = "https://github.com/scalacenter/bloop/releases/download/v${version}/zsh-completions";
    sha256 = "1xzg0qfkjdmzm3mvg82mc4iia8cl7b6vbl8ng4ir2xsz00zjrlsq";
  };

  bloop-coursier = stdenv.mkDerivation {
    name = "${basename}-coursier-${version}";

    nativeBuildInputs = [ autoPatchelfHook ] ;
    phases = [ "installPhase" "fixupPhase" ];
    buildInputs = [ stdenv.cc.cc.lib zlib ] ;

    installPhase = ''
      export COURSIER_CACHE=$(pwd)
      export COURSIER_JVM_CACHE=$(pwd)

      mkdir channel
      ln -s ${bloop-coursier-channel} channel/bloop.json
      ${coursier}/bin/coursier install --install-dir $out --default-channels=false --channel channel --only-prebuilt=true bloop

      # Remove binary part of the coursier launcher script to make derivation output hash stable
      sed -i '5,$ d' $out/bloop
   '';

    outputHashMode = "recursive";
    outputHashAlgo = "sha256";
    outputHash     = "0x74h420yjjyvjk0nhpghp9y9vi9l1dxpqq307wpv9fms1a2ascj";
  };

  buildCommand = ''
    export COURSIER_CACHE=$(pwd)
    export COURSIER_JVM_CACHE=$(pwd)

    mkdir -p $out/bin
    cp ${bloop-coursier}/bloop $out/bloop
    ln -s ${bloop-coursier}/.bloop.aux $out/.bloop.aux
    ln -s $out/bloop $out/bin/bloop

    # patch the bloop launcher so that it works when symlinked
    sed "s|\$(dirname \"\$0\")|$out|" -i $out/bloop

    #Install completions
    mkdir -p $out/etc/bash_completion.d
    ln -s ${bloop-bash} $out/etc/bash_completion.d/bloop
    mkdir -p $out/share/zsh/site-functions
    ln -s ${bloop-zsh} $out/share/zsh/site-functions/_bloop
    mkdir -p $out/usr/share/fish/vendor_completions.d/
    ln -s ${bloop-fish} $out/usr/share/fish/vendor_completions.d/bloop.fish
  '';

  meta = with stdenv.lib; {
    homepage = "https://scalacenter.github.io/bloop/";
    license = licenses.asl20;
    description = "Bloop is a Scala build server and command-line tool to make the compile and test developer workflows fast and productive in a build-tool-agnostic way.";
    maintainers = with maintainers; [ tomahna ];
  };
}

Ok the above seems to works properly.
A few small gotcha's:

It seems that fixed output derivation (outputHash = ...) do not like when you reference their own path inside their files. That's why I'm forced to use the bloop-coursier subderivation and patch the bloop script afterwards.
The coursier install command create a launcher script which change sha256 at every subsequent run. The binary part of the script must include a date. That's why it is removed. It would probably be nice to be able to add the option in coursier to have an idempotent script generation.

How do you prefer to proceed with this MR @karolchmist ? I see 3 way of going forward (if you see any other, feel free to suggest):

You update the PR as is with COURSIER_JVM_CACHE, I'll recheck that it works and open a subsequent PR with my changes
You adapt the PR with these changes, check that it works properly for you too.
I can open a new PR that supersedes this one.

I'm fine with all options but my preference is with 2 as it limits the number of PR (contrary to 1) and don't make disappear the work you've put into this (contrary to 3).

Hello @Tomahna, thank you for your version, it's much nicer now :+1:
Option 2 seems the best to me as well, so I committed your last suggestion (with modified outputHash, as you said it changes every build).
I rebased on latest master.
For me it's good to merge, if you agree.

We have a misunderstanding. The outputHash should not change, it actually has to be constant for the derivation to work otherwise other people will not be able to use it properly. I thought that removing the binary part of the coursier script would be sufficient but it appears it is not.
The problem seems to be that we cannot patch the binary and the shell script in a fixed output derivation. This makes sense as by patching the binary and the script, we make their output hash dependent of the environment (the version of bash, the version of zlib, etc). And each time the environment change, the outputHash will change. It is something we need to avoid.
We can apply the patches in the final derivation, but I guess it would mean we need to copy (instead of just link it) the bloop binary in the final directory. So we would have the binary twice in the nix-store. I don't know if someone more proficient with nix than me sees another way out of it ?

if of any value, I had an alternative implementation : https://github.com/NixOS/nixpkgs/pull/91635/files (closed the pr as found this one :) )

anw, the PR here seems good (though haven't tried) - how can we get it merged? :)

We can apply the patches in the final derivation, but I guess it would mean we need to copy (instead of just link it) the bloop binary in the final directory. So we would have the binary twice in the nix-store. I don't know if someone more proficient with nix than me sees another way out of it ?

I don't see a better approach than this suggestion (yes it's 40MB less on my disk but hey, when I run nix-gc I get 100GB back!), in fact, the final patching I'd say is not build, but install phase, isn't it?

Superseded by https://github.com/NixOS/nixpkgs/pull/91758, closing.


Create Tuesday Meeting 2020-10-29.md

I would have imagined this would update https://github.com/ome/meeting-minutes/blob/master/2020/Tuesday Meeting 2020-09-29.md ?

Ooops - I even got the date wrong!

Try again: https://github.com/ome/meeting-minutes/pull/2


Adds the ability to query features from tile data

This PR adds a Scene.queryFeatures() method for directly querying tile data (separate from the existing Scene.getFeatureAt() method, which returns a single feature at a given pixel location).
Syntax
The query method has the following signature and default parameters:
queryFeatures({ filter = null, visible = null, unique = true, group_by = null, geometry = false })

queryFeatures() will query the features from tiles that currently intersect the map viewport.

The method returns a promise with an array of matching features, e.g. queryFeatures().then(features => console.log(features)); will print the matching features to the console. (An array is the default return type, see group_by below for an alternate format.)
Each returned result will have a properties field for that feature. See the geometry option below to include feature geometry with the results.
Optional parameters described below will further limit the set of features returned.
Because tiles usually include some area outside the viewport, the queryFeatures() method can be thought of as roughly querying the visible area, but results may include some nearby features as well. This effect can also be caused tile over-zooming, for data sources with a max_zoom.

filter

An optional filter object with the same syntax used for selecting features for styling in layers. If no filter is provided, all features will be returned (subject to other parameters defined below).
Example: scene.queryFeatures({ filter: { $layer: 'pois', kind: 'restaurant' } }) will return all restaurants in the pois layer.
Filters used with this method support an additional parameter, $source, which can be used to specify a data source name to filter features by. For example, filter: { $source: 'mapzen' } will only return features from the mapzen data source. (This parameter is not relevant for filters in layers because the data source is already explicitly selected by the data block.)

visible

By default, all features in the tile source data will be returned, regardless of whether they were rendered in the scene or not.
If visible: true, the query will be restricted only to features that were rendered in the scene. Note that this means the feature matched a visible draw group within layers, and was not culled by collision detection (in the case of points or labels). It does not guarantee, however, that the feature is visible from any given view position; it may be drawn but underneath another feature with a higher order value, or it may be behind another 3d object such as a building.

Example: scene.queryFeatures({ filter: { $layer: 'landuse', $geometry: 'polygon' }, visible: true }) will return all visible landuse polygons.

If visible: false, the query will be restricted only to features that were NOT rendered in the scene. This is useful for providing feedback on data that is related to the scene but which you don't want to actually visualize, or for understanding which features were not drawn due to collision (lack of available space on screen).

Example: scene.queryFeatures({ filter: { $layer: 'pois' }, visible: false }) will return all POIs that were not drawn.

unique

The unique parameter indicates whether (and how) duplicate features should be included in the results. Valid values are true (default), false/null, a string providing a single feature property (id), or an array of feature properties (['kind', 'operator'])
The default value, true, will limit features to those that are entirely unique, meaning it will exclude features with identical properties (and if the geometry: true option described below is also set, features with identical geometry will be excluded as well). This is useful for avoiding duplicate features that may be included in multiple tiles, such as building polygons in Mapzen's vector tiles.
A false or null value will return all features, without any regard to their properties or geometry.
A single string, or array of strings, will only return features that are unique with regards to the named feature properties (and geometry if geometry: true). For example, unique: id will avoid features with duplicate ids in the results, and unique: ['kind', 'operator'] will only return a single feature for each unique combination of kind and operator property values.

group_by

The group_by parameter can be used to group results by one or more unique property values. Valid values are false/null (the default), a string providing a single feature property (kind), or an array of feature properties (['kind', 'kind_detail']).
When grouping properties are specified, the queryFeatures() results will be an object (still returned via a promise), where each key is a unique value according to the grouping criteria, and the value of each key is an array of results for that key.
When a single property is provided for grouping, the results key will be the value of that property.

Example: queryFeatures({ filter: { $layer: 'pois' }, group_by: 'kind' }) will return results like:

{ station: Array(8), jewelry: Array(19), bus_stop: Array(5)... }

When multiple properties are provided the grouping, the results key will be a stringified object for each unique combination of values.

Example: queryFeatures({ filter: { $layer: 'pois' }, group_by: ['kind', 'kind_detail'] }) will return results like:{
  '{"kind":"restaurant","kind_detail":"chinese"}': Array(8),
  '{"kind":"restaurant","kind_detail":"french"}': Array(4),
  '{"kind":"restaurant","kind_detail":"indian"}': Array(3),
  ...
}

The caller can optionally use JSON.parse() to parse these stringified grouping keys for additional processing.

geometry

By default, queryFeatures() does not return feature geometry, nor consider geometry when determining if a feature is unique (see unique parameter above). Only type and properties will be returned in the query results.
When geometry: true, an additional geometry property will also be returned, containing the feature's geometry (as a GeoJSON geometry object).
Including feature geometry in the result can be useful for further visualizations outside of Tangram, such as with Leaflet markets or SVG paths, or even direct exports of raw GeoJSON.

Use Cases
Here are a few examples of ways the queryFeatures() parameters can be used.
Get a list of unique subway lines in tile data
scene.queryFeatures({ filter: { $layer: 'transit', kind: 'subway' }, group_by: 'ref' }).then(results => {
  console.log(Object.keys(results));
});

--->
["1", "2", "3", "4", "5", "6", "W", "R", "J", "Z", "PATH", "E", "C", "A", "D", "B", "Q", "N"]

Get a count of visible POIs by kind, each time new tiles are rendered
scene.subscribe({
  view_complete: function() { // when new tiles are rendered
    scene.queryFeatures({ filter: { $layer: 'pois' }, visible: true, group_by: 'kind' }).then(results => {
      for (let key in results) {
        results[key] = results[key].length;
      }
      console.log(results);
    });
  }
});

--->
{
  "station": 6,
  "cafe": 20,
  "bank": 5,
  "restaurant": 34,
  "convenience": 10,
  "place_of_worship": 5,
  "bus_stop": 5,
  "hotel": 10,
  "museum": 1,
  "pub": 3,
  "bar": 2,
  "hospital": 1
}

Add Leaflet markers for visible restaurant POIs
scene.queryFeatures({ filter: { $layer: 'pois', kind: 'restaurant' }, visible: true, geometry: true }).then(results => {
  results.forEach(feature => {
    L.marker([feature.geometry.coordinates[1], feature.geometry.coordinates[0]]).addTo(map);
  });
});

Add Leaflet polylines (SVG) for major roads
scene.queryFeatures({ filter: { $layer: 'roads', kind: 'major_road' }, unique: false, visible: true, geometry: true }).then(results => {
  results.forEach(feature => L.geoJSON(feature, {
    style: function () {
        return { color: 'red' };
    }
  }).addTo(map))
});

That's really cool and will fit my needs for data visualizations where map data interacts with accompanying non map-based visualizations like charts and graphs. For my purposes, I will always include the geometry so that I can exclude features that don't intersect the current map view.

@mbloch I believe this would also be useful for the kinds of additional metadata you added to the election maps, e.g. vote % in visible area.

@jschleuss this may also be of interest for GeoJSON or SVG export from the Map Maker.

Released in v0.13.0


ci: update semantic-release env vars

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


Support pyinstaller locations for dll files

When using pyinstaller, an executable is created containing all of the required binaries/datafiles/source code.  When the executable is run, the contents are extracted into a temporary directory and then executed.
This prevents the current logic in _delvewheel_init_patch_0_0_14() from working because the patch assumes that the files are in a sibling directory of the directory of the file.  This is not the case when using a file generated by pyinstaller.
I propose two solutions.  One is to not add the libs_dir file to the dll directory path if it doesn't exist.  This would allow the dlls that are in the current directory to be loaded (probably not preferred logic).
Or...
pyinstaller sets a variable on the sys module called _MEIPASS that points to the temporary directory.  If that value is defined, then patch method should use that value as the base directory for finding the dll files, and then not add os.pardir to the path.
For example: (using rdkit as an example).
def _delvewheel_init_patch_0_0_14():
    import os
    import sys

    if hasattr(sys, '_MEIPASS'):
        libs_dir = os.path.abspath(os.path.join(sys._MEIPASS, 'rdkit_pypi.libs'))
    else:
        libs_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'rdkit_pypi.libs'))

    if sys.version_info[:2] >= (3, 8):
        if os.path.exists(os.path.join(sys.base_prefix, 'conda-meta')):
            os.environ['CONDA_DLL_SEARCH_MODIFICATION_ENABLE']='1'
        if os.path.exists(libs_dir):
            os.add_dll_directory(libs_dir)
    else:
        from ctypes import WinDLL
        with open(os.path.join(libs_dir, '.load-order-rdkit_pypi-2<IP_ADDRESS>')) as file:
            load_order = file.read().split()
        for lib in load_order:
            WinDLL(os.path.join(libs_dir, lib))

And then the pyinstaller command can be run using:
pyinstaller --onefile --clean --add-binary "env\Lib\site-packages\rdkit_pypi.libs\**;rdkit_pypi.libs" test.py

I can provide an example project using rdkit and pyinstaller if necessary.

It is not clear to me whether this is something that's best handled in delvewheel, pyinstaller, or a collaboration between the two. I found a report of this issue at https://github.com/pyinstaller/pyinstaller-hooks-contrib/issues/388, which was fixed at the pyinstaller side.
I created https://github.com/pyinstaller/pyinstaller-hooks-contrib/issues/421 to ask for some ideas.

Recent changes in PyInstaller have greatly improved the support for delvewheel-repaired wheels. The discussion at https://github.com/pyinstaller/pyinstaller-hooks-contrib/issues/421 indicates that the PyInstaller developers prefer to handle this primarily at the PyInstaller side.


How to make MCP work in AEM as Cloud?

Required Information

AEM Version, including Service Packs, Cumulative Fix Packs, etc: AEM as Cloud, Uber-Jar 6.4.1, OSGi-Core 6.0, OSGi Annotation, Project Java 8, Build Java 11, AEM RELEASE: 2022.4.7138.20220427T075748Z
ACS AEM Commons Version: 5.1.2
Reproducible on Latest? yes

Expected Behavior | Actual Behavior
Guys, I'm trying to create a process with MCP, but when I deploy my code, the option for my process doesn't appear. I took another project ready at my company that has MCP processes created and even deploying it on my instance, it doesn't appear either. '
I would say that the problem is my code, however, this other project of my company works in another instance.
For AEM as Cloud is it necessary to use some other annotation or something?
This is my code
Factory Class
package com.mycompany.mcp.factory;

import com.adobe.acs.commons.mcp.ProcessDefinitionFactory;
import com.mycompany.mcp.ContentInstanceUpdaterProcess;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ServiceScope;

//In the ACS tutorial is using this annotation
//import org.apache.felix.scr.annotations.Service;

//@Component
//@Service(ProcessDefinitionFactory.class)

//This is the other approach that the guys in my company use, I've tried too.
@Component(
        service = ProcessDefinitionFactory.class,
        immediate = true,
        scope = ServiceScope.SINGLETON)
public class ContentInstanceUpdaterFactory extends ProcessDefinitionFactory<ContentInstanceUpdaterProcess> {
    @Override
    public String getName() {
        return "Content Instance Updater";
    }

    @Override
    protected ContentInstanceUpdaterProcess createProcessDefinitionInstance() {
        return new ContentInstanceUpdaterProcess();
    }
}

Process Class
package com.mycompany.mcp;

import com.adobe.acs.commons.mcp.ProcessDefinition;
import com.adobe.acs.commons.mcp.ProcessInstance;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.ResourceResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.jcr.RepositoryException;

public class ContentInstanceUpdaterProcess extends ProcessDefinition {

    private static final Logger LOG = LoggerFactory.getLogger(ContentInstanceUpdaterProcess.class);

    @Override
    public void buildProcess(ProcessInstance processInstance, ResourceResolver resourceResolver) throws LoginException, RepositoryException {
        LOG.error("Worked");
    }

    @Override
    public void storeReport(ProcessInstance processInstance, ResourceResolver resourceResolver) throws RepositoryException, PersistenceException {
        LOG.error("Worked");
    }

    @Override
    public void init() throws RepositoryException {
        LOG.error("Worked");
    }
}

Note: To use the @Service annotation that is in the tutorial, I didn't find any from the OSGi package, only from the Apache Felix package, in the tutorial it doesn't show the imports

I'm not able @davidjgonzalez , I changed my imports that were different from the class that you sent, I also put 1 @FormField and didn't work again.
Just about your suggestion that put @Component(service = { ProcessDefinitionFactory.class } ), my Component annotation doesn't have this attribute, maybe it's my apache felix version, I'm using org.apache.felix.src.annotations-1.9.8.jar


Leave conda dependencies floating instead of pinned.

Closes #399 by reviving #411

Closing as this was included in #929


Cannot set new location

When you execute the command to write to Firestore the application collapses.
Note that firebase works perfectly.
geoFirestore.setLocation("k", new GeoPoint(37.7853889, -122.4056973), new GeoFirestore.CompletionListener() {
      @Override
      public void onComplete(Exception e) {
         Log.v("geo","complete"+e);
         // ...
      }
});

Error
02-17 23:36:48.918 31465-31465/com.2.cvcvbb E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.2.cvcvbb, PID: 31465
    java.lang.NoSuchMethodError: No virtual method set(Ljava/util/Map;Lcom/google/firebase/firestore/SetOptions;)Lcom/google/android/gms/tasks/Task; in class Lcom/google/firebase/firestore/DocumentReference; or its super classes (declaration of 'com.google.firebase.firestore.DocumentReference' appears in /data/app/com.2.cvcvbb-2/base.apk:classes2.dex)
        at org.imperiumlabs.geofirestore.GeoFirestore.setLocation(GeoFirestore.java:128)
        at com.2.cvcvbb.MapsActivity.DisplayLocation(MapsActivity.java:195)
        at com.2.cvcvbb.MapsActivity.onConnected(MapsActivity.java:407)
        at com.google.android.gms.common.internal.GmsClientEventManager.onConnectionSuccess(Unknown Source)
        at com.google.android.gms.common.api.internal.zaaw.zab(Unknown Source)
        at com.google.android.gms.common.api.internal.zaak.zaaq(Unknown Source)

its is the same issue as #13

yes but i am used 18.0.1 and same probem
i search slove my problem

I have the same problem.
zoro238, did you solve this mistake?

I have the same problem.
zoro238, did you solve this mistake?

no

@zoro238 what version of GeoFirestore are you using, try the last 1.5.0 and let us know if it solves the problem

it only works this way
geoFirestore.setLocation("k", new GeoPoint(37.7853889, -122.4056973), new GeoFirestore.CompletionListener());
This will work, but no efficient. It will stop the app from crashing. But it will not set the location directly from your app, you will have to set the collection & document name manually and then run your to setLocation & you will get the co-ordinates  in your database.

I use it this way   CollectionReference mDocRef = FirebaseFirestore.getInstance().collection("mycollection");                     GeoFirestore geofire = new GeoFirestore(mDocRef);                     geofire.setLocation("mystring", new GeoPoint(mLastLocation.getLatitude(), mLastLocation.getLongitude())); am listening to the oncomplete listener but that works well for me.

I use it this way  CollectionReference mDocRef = FirebaseFirestore.getInstance().collection("mycollection"); GeoFirestore geofire = new GeoFirestore(mDocRef); geofire.setLocation("mystring", new GeoPoint(mLastLocation.getLatitude(), mLastLocation.getLongitude())); am listening to the oncomplete listener but that works well for me.

Thanks Egesa its working fine now.


adding mailto links for /sponsors

crossing fingers

@minamarkham this look good! I think what might be happening is that you are not branching from an updated master from the upstream branch.

I think that's what happened. I forget to fetch the upstream when I start working on my changes. Then I couldn't figure out how to undo the changes, so I deleted that branch and started over.

@minamarkham aha! Got it. I am going to merge this in, but then fix up the commit history. Please make sure to run the following commands before branching off of master with your feature branch:

git fetch upstream
git rebase upstream/master

That will rebase all of the current changes on the main repos master onto your forked repo. Please feel free to reach out if you need help in the futures!


[BUG] Hole in machine block models

Description:

There is a small one pixel hole on the edge of some of the machine block models. The only way you can really see it is by using a zoom mod like Ok Zoomer. The reason I found this is it appears there is a bug in Sodium or Indium which causes that hole to be a lot bigger than it is with the vanilla renderer.

Steps to Reproduce:

Place a machine or Lazuli Flux container
Look at the edges between block faces

Technical Information:

Minecraft: 1.16.5
Fabric API: 0.32.5
Industrial Revolution: 1.9.0-BETA
Sodium: e0142381e9bbac0957c17679cb94eca035dd134e

Details:
Vanilla:

Sodium:

This should be fixed as of 1.9.1. Please reopen the issue if the issue persists.


Add Xcode 11.4 beta

Tool information

Tool name:
Add or update?
Desired version: 11.4 beta
Approximate size: ~9GB
If this is an add request:

Brief description of tool: most recent version of Xcode
URL for tool's homepage: https://developer.apple.com

Virtual environments affected

[x] macOS 10.15
[ ] Ubuntu 16.04 LTS
[ ] Ubuntu 18.04 LTS
[ ] Windows Server 2016 R2
[ ] Windows Server 2019

Can this tool be installed during the build?
Sort of—via xcode-install. It takes a while.
Are you willing to submit a PR?
Sure?
Notes
Xcode 11.4 adds Swift 5.2, compiler performance updates, and major updates to SwiftUI and Swift compiler error messages.

Hello, @ydnar
Xcode 11.4 is already present on the macos image. Please check the Xcode section in documentation, macOs 10.15 documentation - https://github.com/actions/virtual-environments/blob/master/images/macos/macos-10.15-Readme.md
11.4 (beta) | 11N111s | /Applications/Xcode_11.4_beta.app
Example:
jobs:
  build:
    runs-on: [macos-latest]
    steps:
      - name: Xcode 11.
        run: |
          sudo xcode-select -s /Applications/Xcode_11.4.app/Contents/Developer
          xcodebuild -version

Thanks. How often do the docs get updated to reflect these changes?

On Feb 15, 2020, at 1:01 AM, Aleksandr Chebotov<EMAIL_ADDRESS>wrote:

Hello, @ydnar
Xcode 11.4 is already present on the macos image. Please check the Xcode section in documentation, macOs 10.15 documentation - https://github.com/actions/virtual-environments/blob/master/images/macos/macos-10.15-Readme.md
11.4 (beta) | 11N111s | /Applications/Xcode_11.4_beta.app
Example:
jobs:
build:
runs-on: [macos-latest]
steps:
- name: Xcode 11.
run: |
sudo xcode-select -s /Applications/Xcode_11.4.app/Contents/Developer
xcodebuild -version
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@ydnar, Image rollout takes a few days to reach all VM machines. Usually, we publish PR to update docs right after deployment starting (https://github.com/actions/virtual-environments/pull/398) and merge them as soon as all VM images are updated.


feat: add repository name formatting

Looks a bit better with formatting :)
Also, I added the search so that it works with the new formatted names.

Thanks @aryanbaburajan! It's indeed better and the search is also nice
I just didn't liked the fact that it showed all the repositories even if the search has nothing to do with a repository so I changed that

@colinlienard understandable. there's a quirk though,
searching "awesome" gives you the following:

and searching "awesome " (with a space) doesn't show anything.

Well spotted @aryanbaburajan
Committed a quick fix, thanks!


adds enableAutoTerminate launchArg, which will close the debug session, if set to true

@georgejecook PR looks great. Just a few small changes:

The default setting should be to stop debugging at the end of a single program run. Almost every debugger I've used in the past works this way (NodeJS, C#, VB, Python, Golang, Java, within netbeans, vscode, visual studio, eclipse, etc...). For developers who want to keep debugging when relaunching the app with the remote...it's easy enough to change this debug config option.
Change the name of enableAutoTerminate to something like stopDebuggerOnAppExit,  endDebugSessionOnAppExit, stopDebuggingOnExit, keepDebuggingAfterAppExit. Open to sugestions here.

k, sounds good - I was specifically asked by Chris to set it to default off; but I prefer it with default on, too.
I'll get these changes in at lunch/or tonight.

Was just thinking that users who have been using the ext but haven't been following the development could be confused by the change. Not a big deal ether way though for me. I'm ok with it being changed to on by default.

@TwitchBronBron blimey! that took some time.. sorry for taking so long to get this done.. got another on the back of this too.


[SignalR] Allow preserveAsyncOrder to be easily configurable

Hi,
I've just been suffering through random, hard to reproduce, deadlocks for a few days. I've finally got to the bottom of the issue which was that mixing async/wait()/Result style code can cause deadlocks with StackExchange.Redis. I was able to fix this by setting the preserveAsyncOrder to false within EnsureRedisServerConnection (inside of RedisHubLifetimeManager.cs). See https://stackoverflow.com/questions/30797716/deadlock-when-accessing-stackexchange-redis
Regardless of my particular usecase, setting preserveAsyncOrder to false will allow for performance increases. I'd imagine the majority of people wouldn't care about this setting, so allowing it to be easily configurable would be beneficial to everyone. Perhaps this can be done as a commented bool when AddRedis is called in ConfigureServices? By nicely commented I mean explaining the benefits and the drawbacks of en/disabling it. I'd also say that it should default to false.
Thanks!

Closing this as we haven't heard from you. Please feel free to comment if you're able to get the information we're looking for and we can reopen the issue if we're able to identify the problem.


updates the case closed_at time when resolved from slack

Maybe it's better to call: case_status_transition_flow_dispatcher here and let it hit the closed conditional?
def case_status_transition_flow_dispatcher(
    case: Case,
    current_status: CaseStatus,
    previous_status: CaseStatus,
    organization_slug: OrganizationSlug,
    db_session: SessionLocal,
):
    """Runs the correct flows based on the current and previous status of the case."""
    # we changed the status of the case to new
    if current_status == CaseStatus.new:
        if previous_status == CaseStatus.triage:
            # Triage -> New
            pass
        elif previous_status == CaseStatus.escalated:
            # Escalated -> New
            pass
        elif previous_status == CaseStatus.closed:
            # Closed -> New
            pass

    # we changed the status of the case to triage
    elif current_status == CaseStatus.triage:
        if previous_status == CaseStatus.new:
            # New -> Triage
            case_triage_status_flow(case=case, db_session=db_session)
        elif previous_status == CaseStatus.escalated:
            # Escalated -> Triage
            pass
        elif previous_status == CaseStatus.closed:
            # Closed -> Triage
            pass

    # we changed the status of the case to escalated
    elif current_status == CaseStatus.escalated:
        if previous_status == CaseStatus.new:
            # New -> Escalated
            case_triage_status_flow(case=case, db_session=db_session)
            case_escalated_status_flow(
                case=case, organization_slug=organization_slug, db_session=db_session
            )
        elif previous_status == CaseStatus.triage:
            # Triage -> Escalated
            case_escalated_status_flow(
                case=case, organization_slug=organization_slug, db_session=db_session
            )
        elif previous_status == CaseStatus.closed:
            # Closed -> Escalated
            pass

    # we changed the status of the case to closed
    elif current_status == CaseStatus.closed:
        if previous_status == CaseStatus.new:
            # New -> Closed
            case_triage_status_flow(case=case, db_session=db_session)
            case_closed_status_flow(case=case, db_session=db_session)
        elif previous_status == CaseStatus.triage:
            # Triage -> Closed
            case_closed_status_flow(case=case, db_session=db_session)
        elif previous_status == CaseStatus.escalated:
            # Escalated -> Closed
            case_closed_status_flow(case=case, db_session=db_session)

I think using the transition_flow_dispatcher is preferred


Create Post “2024-02-06-this-is-another-test”

Automatically generated by Netlify CMS

👷 Deploy Preview for resplendent-selkie-ed7f83 processing.

Name
Link

🔨 Latest commit
5929c99ca867eaeba87ad1b9cb3693d04e987c77

🔍 Latest deploy log
https://app.netlify.com/sites/resplendent-selkie-ed7f83/deploys/65c25b953fd7600008f26cff


Unable to create a Learning Pathways site on Sharepoint Online Tenant..

Issue : Sorry, something went wrong
There was an unexpected issue.
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
I am clicking on a button called "Add to your Tenant" and above message shows up.
I made sure all the prerequisites are met. Double checked them by following instructions.
I tried on different machines, rebooting the machine, different browsers all with the same error. I have been trying since yesterday.
Here is the URL where I am clicking on the button.
https://lookbook.microsoft.com/details/3df8bd55-b872-4c9d-88e3-6b2f05344239

PROVISIONING NOTE: If you are having issues with the SharePoint look book while trying to provision M365 learning pathways please do not post that issue to this repo as we cannot help you here. Please post all questions and issues for the SharePoint look book to SharePoint/sp-provisioning-service GitHub Issues List.

Closing for lack of activity. If you find you are still having issues please feel free to opne a new issue and reference this one. Thanks!


Update slf4j-simple to 1.7.31

Updates org.slf4j:slf4j-simple from 1.7.30 to 1.7.31.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.slf4j", artifactId = "slf4j-simple" } ]

labels: test-library-update, semver-patch

Superseded by #353.


Update English doc

Issue #, if available:
Description of changes:

Update English doc

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Skip code review since it's a doc bug fix.


Fix PARTITION LOCAL syntax

Index Issue: pingcap/tidb#11486
These are bad (incompatible) SQL cases:
ALTER TABLE d_n.t_n ADD PARTITION LOCAL
ALTER TABLE d_n.t_n COALESCE PARTITION LOCAL 11
ALTER TABLE t_n ADD PARTITION LOCAL PARTITIONS 10

Claim this subtask based on the comments below this issue.

@leoppro  LOCAL is alias to NO_WRITE_TO_BINLOG,  so this issue is duplicate to #445


ooba not parsing in .cfg

Whenever ooba is selected as inference engine, there is error Failed to parse line.

Could you paste your config file here?

just try uncommenting myrun5 example:
myrun5, Mistral, mistralai/Mistral-7B-Instruct-v0.2, , None, 1, ooba, --loader transformers --gpu-memory 12, --exclude "*.bin"

The error messages can be a bit opaque, sorry about that.
Can you check if you are getting any errors above the error saying it failed to parse that line?
I just downloaded it fresh and ran it with that line uncommented, and got this trace:
ooba_launch_script not set in config.cfg
Failed to parse line in config:
myrun5, Mistral, mistralai/Mistral-7B-Instruct-v0.2, , None, 1, ooba, --loader transformers --gpu-memory 12, --exclude "*.bin"

So, the first error is the one actually causing the issue.

Yes, that is what I am getting. So ithe Failed to parse line in config error is caused from ooba_launch_script not set in config.cfg  ?

Yeah you just need to set ooba_launch_script to the path where ooba is installed on your machine.
e.g. per the example:
ooba_launch_script = ~/text-generation-webui/start_linux.sh

Thanks!


fix(server): text length is incorrect for Japanese characters

Overview
When creating/updating an item, long descriptions in Japanese give an error
What I've done
check by []rune{})
What I haven't done
How I tested
Screenshot
Which point I want you to review particularly
Memo

Fixed by 2a7456fde45f2c2ace06d86b78b76fa5b5ad61ab


Cannot read property 'loaded' of null When atom window is closed.

Not serious , but when atom window is closed i got this error :
Cannot read property 'loaded' of null
TypeError: Cannot read property 'loaded' of null
    at AtomWindow.module.exports.AtomWindow.getLoadSettings (/opt/atom/resources/app.asar/src/browser/atom-window.js:135:41)
    at AtomApplication.module.exports.AtomApplication.saveState (/opt/atom/resources/app.asar/src/browser/atom-application.js:738:37)
    at EventEmitter.<anonymous> (/opt/atom/resources/app.asar/src/browser/atom-application.js:394:19)
    at emitOne (events.js:77:13)
    at EventEmitter.emit (events.js:166:7)
    at AtomApplication.module.exports.AtomApplication.removeWindow (/opt/atom/resources/app.asar/src/browser/atom-application.js:159:15)
    at BrowserWindow.<anonymous> (/opt/atom/resources/app.asar/src/browser/atom-window.js:193:41)
    at emitOne (events.js:82:20)
    at BrowserWindow.emit (events.js:166:7)

cc @maxbrunsfeld looks like it's coming from the state saving codez

Awesome :+1:


Is it possible to change the default tags?

Hi,
is it possible to change the default tag used for a button?
I am wanting to use <s> or <strike> instead of <del> as the <del> tag is not supported in Excel, so if I copy from this control and paste into Excel it loses the strikethrough formatting.
Thanks

Hi,
Tags that do not conform to the HTML5 standard are converted to tags that conform to it.
Please write down the information of the tag to be converted.
I'll add an option.

Thanks
I would like <del> to be converted to <s>

The 2.35.0 version has been updated.
If this issue has not been resolved, please reopen this issue.
Thank you.

The 2.35.0 version has been updated.
If this issue has not been resolved, please reopen this issue.
Thank you.


Feature Request: Optional specified output path

It would be nice to have settings option to specify output path to somewhere other than the directory of the input file.
For example, if the default is $INPUT_FILE_PATH$/$INPUT_FILE_NAME$.pdf allow alternatives like $INPUT_FILE_PATH$/pdf/$INPUT_FILE_NAME$.pdf or ~/some/other/path/$INPUT_FILE_NAME$.pdf

Useful for all it would be if there was selection window, through which you can select the location. I would be here for a PR!

Hello, sorry, but I will no longer maintain the project.
This project is archived because the owner no longer uses the Atom Editor.
It would be very good to find a new owner for this project, who will take care of updating and expanding the Atom package. A new version based on Chrome Headless has already been prepared in a feature branch.


bump csv to 0.8.0

Signed-off-by: Zhiwei Yin<EMAIL_ADDRESS>

/lgtm
/hold
@zhiweiyin318 please ensure it has been tested using olm, then we can unhold this.

verified using OLM.
/unhold


Changes a parliament house int() function to use numbers instead of words

I hate strongly typed languages so much bros

#define hurts my compile time I'd rather use comments


PostgreSQL: SystemTime does not implement diesel::types::Timestamp

Here is my migration:
CREATE TABLE events (
  time TIMESTAMP PRIMARY KEY
)

The model:
use std::time::SystemTime;

#[derive(Queryable)]
pub struct Event {
    pub time: SystemTime
}

And some basic code:
fn main() {
    use time::schema::events::dsl::*;
    let connection = establish_connection();
    let results = events.select(time)
        .limit(5)
        .load::<Event>(&connection)
        .expect("Error loading events");

    println!("Displaying {} events", results.len());
    for post in results {
        println!("{}", post.time);
    }
}

If I try to compile the code above I get the following error, but in the documentation for diesel::types::Timestamp I see SystemTime should be a correct implementation.
error[E0277]: the trait bound `(std::time::SystemTime,): diesel::types::FromSqlRow<diesel::types::Timestamp, _>` is not satisfied
  --> src/bin/show_events.rs:13:10
   |
13 |         .load::<Event>(&connection)
   |          ^^^^ the trait `diesel::types::FromSqlRow<diesel::types::Timestamp, _>` is not implemented for `(std::time::SystemTime,)`
   |
   = help: the following implementations were found:
             <(A,) as diesel::types::FromSqlRow<(SA,), DB>>
   = note: required because of the requirements on the impl of `diesel::Queryable<diesel::types::Timestamp, _>` for `time::models::Event`

I'm not at all an experienced rust programmer and I'm using diesel for the first time, but I can't find anything wrong with that code, please tell me if I'm wrong. Thanks for all your help.
Environment details:
rust:
  stable-x86_64-apple-darwin (default)
  rustc 1.16.0 (30cf806ef 2017-03-10)
diesel:
  version = "0.12.0", features = ["postgres"]

Here is the table! invocation
table! {
    events (time) {
        time -> Timestamp,
    }
}

I tried you code myself on rust nightly and it didn't compile either.
Removing the .select(time) make the code compile though.
I'm looking at the code right now to find an explanation ^^

This is basically just a slightly confusing case that only applies when you have exactly 1 column. #[derive(Queryable)] wants all the fields as a tuple, since the overwhelmingly common case is to have more than one field. .select(time) creates a query with the type Timestamp, but your struct is expecting a query of type (Timestamp,). You can do .select((time,)) to get the desired result. It's less than ideal in this case, but I don't think there's a ton of value in special casing the single column queryable case as it's so rare.

@sgrif
I'm really sorry for having been that dumb. Thanks for the time you spent helping me.

 It's an unfortunately confusing case and I'm always happy to help.


ConfigMap virtlet-config.download_protocol not respected

I'm trying to deploy a VM on Virtlet by using the imageserver Pod. I've pulled latest Virtlet master and spinned cluster with:
$ ./deploy/demo.sh

Then I upload my VM image to the imageserver Pod and deploy it on Virtlet using following Deployment:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: micro-keyvaluestore
spec:
  replicas: 1
  template:
    metadata:
      name: micro-keyvaluestore
      labels:
        case: micro-keyvaluestore
      annotations:
        kubernetes.io/target-runtime: virtlet
    spec:
      affinity: {"nodeAffinity": {"requiredDuringSchedulingIgnoredDuringExecution": {"nodeSelectorTerms": [{"matchExpressions": [{"key": "extraRuntime", "operator": "In", "values": ["virtlet"]}]}]}}}
      containers:
        - name: micro-keyvaluestore
          image: virtlet/image-service.kube-system/micro-keyvaluestore.qemu
          resources:
            limits:
              memory: 1024Mi
          ports:
          - name: app-port
            containerPort: 9000

But Pod fails to deploy with error:
Failed to pull image "virtlet/image-service.kube-system/micro-keyvaluestore.qemu": rpc error: code = 2
desc = "/run/virtlet.sock": rpc error: code = 2 desc =
Get https://image-service.kube-system/micro-keyvaluestore.qemu:
dial tcp <IP_ADDRESS>:443: getsockopt: no route to host
Error syncing pod

Obviously, Virtlet attempts to use HTTPS protocol and therefore fails. But as far as I understand, my Virtlet is supposed to be using HTTP, because virtlet-config.download_protocol is set to HTTP:

The ConfigMap was set by demo.sh:256. Is it me doing something wrong or is it a bug?

Please verify cmdline of Virtlet process - is there required parameter? If not, you need to look deeper on virtlet daemonset definition, it should contain:
        - name: VIRTLET_DOWNLOAD_PROTOCOL
          valueFrom:
            configMapKeyRef:
              name: virtlet-config
              key: download_protocol
              optional: true

Turns out this is actually an issue with the demo.sh script. If I setup cluster with:
$ INJECT_LOCAL_IMAGE=yes \
  BASE_LOCATION=$GOPATH/src/github.com/Mirantis/virtlet \
  VIRTLET_DEMO_RELEASE=master \
  ./deploy/demo.sh

then the ConfigMap is respected:
$ kubectl describe ds virtlet -n kube-system
...
Environment:
      VIRTLET_DISABLE_KVM:		<set to the key 'disable_kvm' of config map 'virtlet-config'>		Optional: true
      VIRTLET_DOWNLOAD_PROTOCOL:	<set to the key 'download_protocol' of config map 'virtlet-config'>	Optional: true
      VIRTLET_LOGLEVEL:			<set to the key 'loglevel' of config map 'virtlet-config'>		Optional: true
      VIRTLET_VM_LOG_LOCATION:		/var/log/vms

But if I don't use the environment variables:
$ ./deploy/demo.sh

Then the Virtlet gets assigned hard-coded values:
$ kubectl describe ds virtlet -n kube-system
...
Environment:
      VIRTLET_LOGLEVEL:			3
      VIRTLET_DOWNLOAD_PROTOCOL:	https
      VIRTLET_VM_LOG_LOCATION:		/var/log/vms

So this issue is now resolved for me, but I had quite hard time figuring out what all the parameters of the demo.sh script mean. May I ask you guys to document this a little bit? Talking about these arguments here:
NONINTERACTIVE="${NONINTERACTIVE:-}"
NO_VM_CONSOLE="${NO_VM_CONSOLE:-}"
INJECT_LOCAL_IMAGE="${INJECT_LOCAL_IMAGE:-}"
dind_script="dind-cluster-v1.7.sh"
kubectl="${HOME}/.kubeadm-dind-cluster/kubectl"
BASE_LOCATION="${BASE_LOCATION:-https://raw.githubusercontent.com/Mirantis/virtlet/master/}"
RELEASE_LOCATION="${RELEASE_LOCATION:-https://github.com/Mirantis/virtlet/releases/download/}"
VIRTLET_DEMO_RELEASE="${VIRTLET_DEMO_RELEASE:-}"
VIRTLET_ON_MASTER="${VIRTLET_ON_MASTER:-}"

Thanks!

Added an issue for that: #418


9 elemental tips converted to java

07 - use-a-page-object
09 - multiple files
10 - retry test actions
12 - opt out ab tests
16 - screenshot on failure
22 - locator strategy
23 - dynamic pages
25 - tables
40 - disabled elements

Accepted 12, 16, 25, and 40 with edits. 9, 22, and 23 were accepted but without edits since they will likely to be deprecated. Will need to revisit them in the future.


Allow OAuth application client secret reset by PATCH [PLAT-1163]

Purpose
A cleaner way to reset the client secret for an OAuth application via the API would be to PATCH the developer-app resource with the client_secret property set to null. This would be more intuitive that POSTing to a special endpoint and would make the front end simpler.
Note: This uses version 2.13 as the "new version," but there are a bunch of new API versions in currently open PRs and so the version can be adjusted when this PR gets close to being merged.

Changes

Deprecate old ApplicationReset view
allow patching client_secret as null in ApiOAuth2ApplicationDetailSerializer
Tests for deprecated view and new route

QA Notes
This is purely API related, so assuming it'll be tested by spot checking and the front-end team when they use it!

Documentation
It doesn't look like any of the current application API endpoints are currently in the documentation, so no updates needed until we decide to document the applications endpoints.

Side Effects
None anticipated

Ticket
https://openscience.atlassian.net/browse/PLAT-1163

Yeah this honestly looks perfect, I wounldn't change a thing

Yeah this honestly looks perfect, I wounldn't change a thing

replaced by https://github.com/CenterForOpenScience/osf.io/pull/8993


Fix small typo in docs

Thanks! Can you also add that to the latest docs in docs/docs/?

Hey! It seems to have already been fixed there  5 months ago, which is interesting because it doesn't reflect in the official docs yet. lmk if you need me to do anything about releasing this doc bugfix.


TextEditor.setScrollTop is deprecated.

This is now a view method. Call TextEditorElement::setScrollTop instead.
TextEditor.setScrollTop (/opt/atom/resources/app.asar/src/text-editor.js:3523:12)
<unknown> (/home/bootcamp/.atom/packages/atom-beautify/src/beautify.coffee:126:20)

Thanks for the notice. Pull Requests welcome!

@Nelson112 I don't see this deprecation in deprecation cop or elsewhere.  Can you please reply where you're seeing this is deprecated exactly?


Add config file to specify model folder path and description text

Add a config file or something, which the user can modify to change the description text. I was thinking how the deploy would be done, and it would be something like scdefg /path/to/config.json, this config file would at a minimum contain the path to the model file, but also optionally a non default info text for the landing page

done


How to run multiple registration processes on the same images

Hi everyone,
I'm trying to register two images I want to apply affine and mean squares advances first then Bspline and mean squares advances.
I'm using cmd as attached. I read a suggestion on the guideline saying (Running multiple registrations in succession, each possibly of a different type, and with the output of a
previous registration as input to the next, can be done with elastix in several ways. The first one is to run
elastix once with the first registration, and use its output (the TransformParameter.0.txt that can be
found in the output directory) as input for a new run of elastix with the command line argument -t0. So:
elastix -f ... -m ... -out out1 -p param1.txt
elastix -f ... -m ... -out out2 -p param2.txt -t0 out1/TransformParameters.0.txt
elastix -f ... -m ... -out out3 -p param3.txt -t0 out2/TransformParameters.0.txt
and so on. Another possibility is combine the registrations with one run of elastix:
elastix ... -p param1.txt -p param2.txt -p param3.txt)
in CMD i wrote :+1:
C:"Program FIles"\Elastix\elastix ^
-f C:\Users\Wadha\Documents\Elastix_IN\147by149_MRI.nii ^
-m C:\Users\Wadha\Documents\Elastix_IN\copypastehisto147_149.nii ^
-out C:\Users\Wadha\Documents\Elastix_OUT ^
-p C:\Users\Wadha\Documents\Elastix_PARS\parameters_Affine_MSD.txt
-f C:\Users\Wadha\Documents\Elastix_IN\147by149_MRI.nii ^
-m C:\Users\Wadha\Documents\Elastix_IN\copypastehisto147_149.nii ^
-out C:\Users\Wadha\Documents\Elastix_OUT ^
-p C:\Users\Wadha\Documents\Elastix_PARS\parameters_BSplineAMS.txt
-t0 C:\Users\Wadha\Documents\Elastix_OUT\TransformParameters.0.txt
Can Any one help me to figure what I have done wrong ?
Thanks,

What is the error message?
Also this probably belongs at http://github.com/SuperElastix/elastix

I didn't receive error message. When I opened elastix.log, I got these info :
ELASTIX version: 4.900
Command line options from ElastixBase:
-f        C:\Users\Wadha\Documents\Elastix_IN\147by149_MRI.nii
-m        C:\Users\Wadha\Documents\Elastix_IN\copypastehisto147_149.nii
-fMask    unspecified, so no fixed mask used
-mMask    unspecified, so no moving mask used
-out      C:\Users\Wadha\Documents\Elastix_OUT
-p        C:\Users\Wadha\Documents\Elastix_PARS\parameters_Affine_MSD.txt
-priority unspecified, so NORMAL process priority
-threads  unspecified, so all available threads are used
Command line options from TransformBase:
-t0       unspecified, so no initial transform used
So I believe Elastix just activate one parameter file and ignore the another one.
I don't know how to run two parameters files at the same time on the same images. Any suggestion?

What does the registration result show? Do you get the expected output? Or do you get output that confirms that t0 was ignored? Also, to get help from people more familiar with the command line interface, you could consider posting this at http://github.com/SuperElastix/elastix. If this is indeed a bug in elastix this also where it should be reported.


fix(webpack): accept object argument in BuildError (v12.x)

Picking #1380

bors merge

bors merge

bors merge

bors merge

bors merge-


Support year filters

Observed
When a dataset contains xsd:gYear values, the current filtering approach in Sparklis does not work.  When we try to filter for buildings between 1900 and 1910, Sparklis uses the following filter:
FILTER ( (  xsd:double(?thing_38) >= 1900
         && xsd:double(?thing_38) <= 1910 ) )

^ Unfortunately, this filter is not allowed in SPARQL 1.1, because date/time (including year) values are not allowed to be cast to doubles.
Expected
Filters over values with datatype IRI xsd:gYear to work in Sparklis
Possible solutions
Possible solution 1
The following does work in SPARQL 1.1:
FILTER ( (  xsd:double(year(xsd:dateTime(?thing_38))) >= 1900
         && xsd:double(year(xsd:dateTime(?thing_38))) <= 1910 ) )

^ Notice that we need to do the following:

We must case xsd:gYear values to xsd:dateTime.  It is not clear from the SPARQL standard whether this is required, but the endpoints that we use seem to require this.  (The SPARQL standard only explicitly mentions the case for xsd:dateTime.)
From a xsd:dateTime we are allowed to extract the year component as an integer, using the year() function in SPARQL 1.1.
Integers are allowed to be case to doubles.

Possible solution 2
According to the SPARQL 1.1 standard, the following filter should also work.  However, this does not seem to be supported by all endpoint.  I tested this with Virtuoso where this did not work, and tested this with Jena where this did work.
filter(?year >= "1900"^^xsd:gYear && "1910"^^xsd:gYear)

I am surprised that conversion from xsd:gYear to xsd:double is not supported given that a year is an integer, which is a double.
It is supported on Fuseki endpoints for instance.
The implicit conversion is necessary because it is common to have numeric values represented (wrongly) as simple literals.
The simplest solution will probably to offer the lexical comparison operators (after, before, from.. to ..), which corresponds to your Solution 2.

Finally, I found a simpler and more generic version of your Possible solution 1.
xsd:double(str(?thing)) to convert ?thing to a number, whatever the datatype.
Note that the comparison filters are only available when there are literals that can be parsed as numbers.
Here is a query on your endpoint showing the fix : permalink


Annotations

The annotations buttons don't seem to be working. The cursor never changes to +.

thanks for reporting the bug @wagger301 are you using the master?

@jbeezley any chance you could look into it?

It works for me on our latest docker image.  docker run -p 8888:8888 -v $PWD/notebooks:/notebooks geonotebook/geonotebook  What browser are you running?

I've tried firefox and chrome. I pulled last night and built the docker. The buttons don't even show up in Safari.
Thanks

I built a new image just now and the annotations worked correctly in Chrome, Firefox, and Safari.  Are you getting any console error messages?  What happens if you pull our prebuilt image from docker hub (geonotebook/geonotebook)?

The image from docker hub works. Thanks!


clean up example and prepare for valueAs update

@bluebill1049 add me as a reviewer when this PR is fully cooked 😄

will do @pmaier983 🙏

feel free to commit directly to the branch if you find anything need to adjust 🙏

Thank you very much @pmaier983 for the review and fix 👍


AskHN links should open the comments thread

When clicking an article that has no URL and it's a "AskHN" story it should open a web page with the comments thread.

Implemented on 9a49228f97c2aa0ae4e5dedd8e42241d66dce248.


[shiva-sfml[core]:x64-windows] build failure - missing sol/xxxxx include files

Host Environment

OS: [Windows 10 1909 H2 18363.476]
Compiler: revision VS2019 v16.3.10
VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105
VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.23.27820
VCToolsVersion=14.23.28105

To Reproduce
Steps to reproduce the behavior:
SYSTEM@ANDROMEDA 11/27/2019 11:54:13 D:\Git\vs2019
->vcpkg install shiva-sfml
The following packages will be built and installed:
shiva-sfml[core]:x64-windows
Starting package 1/1: shiva-sfml:x64-windows
Building package shiva-sfml[core]:x64-windows...
-- Using cached E:/Git/vcpkg.downloads/Milerius-shiva-1.0.tar.gz
-- Using source at D:/Git/vs2019/buildtrees/shiva-sfml/src/1.0-2860004d47
-- Configuring x64-windows
-- Building x64-windows-dbg
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:136 (message):
Command failed: "C:/Program Files/CMake/bin/cmake.exe" --build . --config Debug --target install -- -v
Working Directory: D:/Git/vs2019/buildtrees/shiva-sfml/x64-windows-dbg
See logs for more information:
D:\Git\vs2019\buildtrees\shiva-sfml\install-x64-windows-dbg-out.log
Call Stack (most recent call first):
scripts/cmake/vcpkg_build_cmake.cmake:91 (vcpkg_execute_build_process)
scripts/cmake/vcpkg_install_cmake.cmake:24 (vcpkg_build_cmake)
ports/shiva-sfml/portfile.cmake:18 (vcpkg_install_cmake)
scripts/ports.cmake:94 (include)
Error: Building package shiva-sfml:x64-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: shiva-sfml:x64-windows
Vcpkg version: 2019.09.12-nohash
Additionally, attach any relevant sections from the log files above.
Failure logs
-Please attach any additional failure logs mentioned in the console output.
install-x64-windows-dbg-out.log
Additional context
Add any other context about the problem here, such as what you have already tried to resolve the issue.
The above mentioned log file has 4 fatal errors - 2 missing sol/xxxx include files and 2 with errors over 100, most likely due to the missing include files.
D:\Git\vs2019\buildtrees\shiva-sfml\src\1.0-2860004d47\modules\lua\shiva/lua/lua_helpers.hpp(12): fatal error C1083: Cannot open include file: 'sol/state.hpp': No such file or directory
D:\Git\vs2019\buildtrees\shiva-sfml\src\1.0-2860004d47\modules\sfml\shiva\sfml\inputs\system-sfml-inputs.cpp(92): fatal error C1003: error count exceeds 100; stopping compilation
D:\Git\vs2019\buildtrees\shiva-sfml\src\1.0-2860004d47\modules\sfml\shiva\sfml\graphics\system-sfml-graphics.cpp(22): fatal error C1003: error count exceeds 100; stopping compilation
D:\Git\vs2019\buildtrees\shiva-sfml\src\1.0-2860004d47\modules\sfml\shiva/sfml/resources/sfml-resources-registry.hpp(17): fatal error C1083: Cannot open include file: 'sol/resolve.hpp': No such file or directory

Hi @timautry thanks for posting this issue.
I try to reproduce this issue on my local. It is blocked by shiva, it failed with this:
Python config failure: Python is 32-bit, chosen compiler is 64-bit
Due to that python currently cannot support 64 bit.  Related PR #7964
So I am unable to process this issue now.

I would elaborate, but vcpkg (I hope you meant vcpkg instead of python as VS has both 32/64 bit versions of python2/3) can support 64 bit versions of most tools, providing you either don't use x86 triplets or create a separate vcpkg instance for each architecture and bitness. It also helps to create a test/dev/prod instance so you can push the boundaries of the software one is using to develop with.

@timautry we  will continue to investigate this issue after python issue is solved.

Please keep this issue open before we resolve it.

I close, I no longer use product.

Is this still an active issue?


fix(api-builder): escape double-quotes in JSON output

This builds on top of #2324 and fixes the problem mentioned at https://github.com/angular/angular.io/pull/2321#issuecomment-246597648
It does this by updating to a newly released version of dgeni-packages that copes with mulitple declarations for a symbol.

merged.


nuke: fixing opening loader with context if shortcut is used

Brief description
Nuke is opening loader with context now.
Description
Expected behaviour was open Loader in context wather it is open form menu or with shortcut. It didn't work.
Testing notes:

Open Nuke in any shot context
press combination CTRL + ALT + L
it should open Loader in context of the shot

The shortcut opens the Loader, but not in the shot context. When launching Loader from OP menu, the works correctly.

I think it's issue in loader.

When Nuke is launched and pressing Ctrl+Alt+L, the Loader is working now (shows subsets in a particular context). However, when you hit the shortcut for the second time, there are no data in Loader (Loader is not opened in the context). But Loader works correctly from OpenPype menu.

This is issue related the QT implementation in loader. A race condition is different when started from Shortcut, then from a menu item.
We are rewriting Loder for V4, so we will check later if the issue is still occurring.


create a set based cat-avatar-generator

https://www.peppercarrot.com/en/article391/cat-avatar-generator

Source code and graphics CC-By [1] David Revoy [2] ( artworks of Cats and open-raster file )

2016_cat-generator.zip

I exported out the cats from his ora file, and integrated them in.
It shouldn't ever give you a car unless you ask for it, to keep existing avatar's static.
If you pass set=set4, then it should now offer you one.
Example:
https://robohash.org/WORDSGOHERE?set=set4

sweet! THANK YOU :smile_cat:

There's also https://davidrevoy.com/article720


Improve migrations

Many data migrations that currently live in run_required_migrations.py should be moved to the alembic migrations.

i did this in #427


Public metrics Support

Does this gem support public metrics ?
https://developer.twitter.com/en/docs/twitter-api/metrics
Thank You

I do not believe that the gem supports v2 of the API, there are other Ruby gems available e.g. tweetkit. YMMV.


feat: choose model

Added the ability to select the hi_res model via the environment variable UNSTRUCTURED_HI_RES_MODEL_NAME. Variable must be a string that matches up with a model name defined in unstructured_inference.
Also removed code related to old unstructured_inference API which has been removed from currently pinned version of unstructured-inference and is no longer running as a service.
Testing:
import os
from unstructured.partition.pdf import partition_pdf
# Default model
out = partition_pdf("example-docs/layout-parser-paper-fast.pdf", strategy="hi_res")
print(len(out))

os.environ["UNSTRUCTURED_HI_RES_MODEL_NAME"] = "yolox"
out_yolox = partition_pdf("example-docs/layout-parser-paper-fast.pdf", strategy="hi_res")
# Length should be different than above, indicating inference was done with a different model
print(len(out_yolox))

@cragwolfe Good catch, updated.


PDC sync feature doesn't support arbitrary types

Hi William! owo
I have a plugin (https://github.com/Ehhthan/MMOBuffs) that stores PDC on the player so I wanted HuskSync to sync the PDC data between servers. But the problem is that HuskSync can't sync the PDC data of MMOBuffs. I guess this is because MMOBuffs uses their own java types for the PDC while HuskSync only supports limited "primitive" types.
Side notes: the author (Ehhthan) suggests we can use his own PDC sync plugin to sync the PDC data, which seems to work with MMOBuffs (as he has claimed it xD). This is the PDC sync plugin: https://github.com/Ehhthan/PersistentDataSync
And I see it use the NBT API (by tr7zw) to serialize/deserialize the PDC data across servers, tho I'm not sure how you think the usage of the API in HuskSync codebase if it can fix the errors.
This issue has already been reported to discord by me but since it's a bug I reported it to github as well so it can be easier to track.

hey! :)
Yeah I’ve gotten a bevelege of complaints about this over while: the bottom line is this requires using nbtapi to do stuff the old fashioned way. MMOItems and Slimefun (some of which use raw nbt access on items themselves similarly have issues as they rely on nbt access)
Which is fine; my main issue with such is trying to avoid maintenance and stability issues as I prefer to use the spigot APIs where available.
I’m working on some refactor work in another branch. I think when that’s done I’ll look at supporting custom nbt / PDC types a bit better
thanks!!

closed in v3.0


Update README.md

Removed development warning on master
Added link to shields.io
Started a list of contributors

badge shows 1M downloads... that's not right :)


Set the NU5 mainnet activation height and network protocol version

Motivation
We need to update the consensus parameters for NU5 mainnet.
Specifications
We need to wait for an update to ZIP-252:
https://zips.z.cash/zip-0252#nu5-deployment
Tasks
Network-upgrade specific tasks:

[ ] Set the NU5 mainnet activation height

see ZIP-252

After all network-upgrade specific tasks are done for mainnet:

[ ] Increment the CURRENT_NETWORK_PROTOCOL_VERSION to 170_100 for NU5 mainnet activation
[ ] Update ZIP-252 so it lists the correct NU5 mainnet Zebra version
[ ] Terminate all Foundation Zebra instances running old versions

I split these tasks out of the epic #1841, so we remember to do them.


Fanfare sound on finishing a session

done in https://github.com/c-bandy/type-kana/commit/e0a5a2c6b87665f476680392f1f4bab016e99675, thank you nancy !! : ))


Added toggle function to custom url action.

[How to use]
open keepingyouawake:///toggle

Simple to understand and very helpful. Thank you for your contribution 👍


fix: replace amount_in -> exact_amount_in

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Command to run 2.0-single with no existing database directory?

The docs only give the command to run 2.0-single and "use your current directory as the CouchDB database directory".  I'm simply trying to spin up a new instance with no data on Digital Ocean, but the following command fails:
docker run -p 5984:5984 klaemo/couchdb:2.0-single
What command should I use to start up a fresh instance with no exiting data?

Tried 2.0-single again on Digital Ocean and got the same error.
Steps to reproduce:
-Digital Ocean - Create Droplet
-Choose an image - One-click Apps - Docker 1.11.2 on 14.04
-ssh root@[Droplet IP Address]
-docker pull klaemo/couchdb:2.0-single
-docker run -p 5984:5984 klaemo/couchdb:2.0-single
Result:
20:15:31.611 [info] Application lager started on node nonode@nohost
20:15:31.611 [info] Application couch_log_lager started on node nonode@nohost
20:15:31.611 [info] Application couch_mrview started on node nonode@nohost
20:15:31.611 [info] Application couch_plugins started on node nonode@nohost
20:15:31.616 [info] open_result error {not_found,no_db_file} for _replicator
20:15:31.622 [notice] creating replicator ddoc
20:15:31.630 [info] Application couch_replicator started on node nonode@nohost
20:15:31.630 [info] Application couch_peruser started on node nonode@nohost
20:15:31.635 [info] Application ddoc_cache started on node nonode@nohost
20:15:31.650 [info] Application global_changes started on node nonode@nohost
20:15:31.650 [info] Application jiffy started on node nonode@nohost
20:15:31.656 [info] Application mango started on node nonode@nohost
20:15:31.662 [info] Application setup started on node nonode@nohost
20:15:31.662 [info] Application snappy started on node nonode@nohost
20:15:36.535 [error] gen_server chttpd_auth_cache terminated with reason: {database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,325}]},{mem3_shards,load_shards_from_disk,1,[{file,"src/mem3_shards.erl"},{line,313}]},{mem3_shards,load_shards_from_disk,2,[{file,"src/mem3_shards.erl"},{line,329}]},{mem3_shards,for_docid,3,[{file,"src/mem3_shards.erl"},{line,86}]},{fabric_doc_open,go,3,[{file,"src/fabric_doc_open.erl"},{line,38}]},{chttpd_auth_cache,ensure_auth_ddoc_exists,2,[{file,"src/chttpd_auth_cache.erl"},{line,184}]},...]}
20:15:36.535 [error] CRASH REPORT Process chttpd_auth_cache with 0 neighbours exited with reason: {database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,325}]},{mem3_shards,load_shards_from_disk,1,[{file,"src/mem3_shards.erl"},{line,313}]},{mem3_shards,load_shards_from_disk,2,[{file,"src/mem3_shards.erl"},{line,329}]},{mem3_shards,for_docid,3,[{file,"src/mem3_shards.erl"},{line,86}]},{fabric_doc_open,go,3,[{file,"src/fabric_doc_open.erl"},{line,38}]},{chttpd_auth_cache,ensure_auth_ddoc_exists,2,[{file,"src/chttpd_auth_cache.erl"},{line,184}]},...]} in gen_server:terminate/6 line 737
20:15:36.536 [error] Supervisor chttpd_sup had child chttpd_auth_cache started with chttpd_auth_cache:start_link() at <0.310.0> exit with reason {database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,325}]},{mem3_shards,load_shards_from_disk,1,[{file,"src/mem3_shards.erl"},{line,313}]},{mem3_shards,load_shards_from_disk,2,[{file,"src/mem3_shards.erl"},{line,329}]},{mem3_shards,for_docid,3,[{file,"src/mem3_shards.erl"},{line,86}]},{fabric_doc_open,go,3,[{file,"src/fabric_doc_open.erl"},{line,38}]},{chttpd_auth_cache,ensure_auth_ddoc_exists,2,[{file,"src/chttpd_auth_cache.erl"},{line,184}]},...]} in context child_terminated
.
.
.

Single Node Setup
When you click “Single-Node-Setup”, you will get asked for an admin username and password. Choose them well and remember them. You can also bind CouchDB to a public port, so it is accessible within your LAN or the public, if you are doing this on a public VM.
When you run 2.0 as a single node, it doesn’t create system databases on startup. You have to do this manually. For example:
curl -X PUT http://<IP_ADDRESS>:5984/_users

from https://docs.google.com/document/d/1BtndYr-0KDQTqBSLVdJoR_8C5ObYjT1RBo_Qyh5ykdQ

@klaemo Thank you for the response.  Do I create the users database before running docker run -p 5984:5984 klaemo/couchdb:2.0-single?
I am getting the above error just trying to run this command, before clicking "Single Node Setup" or anything else.

you can do it whenever. probably before "Single Node Setup" is a good time.


Close Modal Issue - Type Error

Your Readme has a typo error. There should be  <button onClick={closeModal}>Close</button> . Please Resolve

Fixed Now


Allure for JUnit5

Add methods necessary for Allure Framework to work.
Because Allure is working when test are executed probably only screenshot functionality has to be prepared

Released in 1.5.0


TDD: Session expiration

Write a TDD for the session expiration PRD.

https://docs.google.com/document/d/1v3XSXUhz3mIwCDgMSyIc8MHgg9iD1Bx9pEdFteq7DnE/edit?tab=t.0#heading=h.bknox3ib8wpb

From https://docs.google.com/document/d/1c9CPeU2GOpE6Tvh02Rkt-yUFSp6v6uWWruhTGh53Jvk/edit?resourcekey=0-wnG8sgMS8PWlnb66qPYMzg&tab=t.0:
Session timeouts: the TDD is 70% done. The main pending items are details of the UX and frontend behavior, which I was collaborating with Sijia on. The whole doc needs review/approval. As I'm thinking now, it might actually make sense to split it into two separate TDDs/projects for frontend/backend; I think they're pretty independent.


IA-2184 Make Form Attachment works with Enketo

The form attachment feature was added for the mobi84le but didn't work with enketo, this implement it.
Related JIRA tickets : IA-2184
Self proofreading checklist

[x] Did I use eslint and black formatters
[x] Is my code clear enough and well documented
[NA] Are my typescript files well typed
[NA] New translations have been added or updated if new strings have been introduced in the frontend
[NA] My migrations file are included
[no] Are there enough tests
[no] Documentation has been included (for new feature)

Changes

Pass the manifest url via the formDownload endpoint so enketo know to retreive the attachment. (in mobile the app construct it)
Had to make a hack in the manifest endpoint to always have absolute uri, with the enketo domain hack for docker.
Modification in enketo settings so it would download the attachement properly without a security error. This should only be needed in local

How to test

Ask Benjamin for the proper file (the xlsform and the csv)
Launch your docker with Enketo. See the doc in the readme if you don't know how.
Create a new form with the file (Form version + attachment)
Create submissions

I tested with embedding image (Bird example  from https://xlsform.org/en/#media ) but they don't seems to display. Not sure if it's a Enketo bug  or what but it's a bit hard to debug so let's check if we put more time in that.
But at least the WFP Form work


Contributors grid lazy loading

Since https://github.com/opencollective/opencollective-frontend/pull/2577 the number of collectives fetched for the contributor's grid is limited to 150. We need to add lazy loading on this component to be able to show all the contributors.
While loading, show LoadingPlaceholder instead of ContributorCard for the loading entries with the same dimensions as the normal cards.

Should ideally be done by moving to GraphQL V2 (see https://github.com/opencollective/opencollective/issues/3275). We already have a contributors field on account, so this really is about frontend.

This has been asked many times in support channels so would be nice to prioritise.


The modal view messes with the views of other view controllers upon dismissing

My view controller presenting the modal view controller has the top element with a top spacing of 20. After dismissing the modal view using the drag down gesture, the top spacing seems to be gone. And it looks to be gone not only for the base view controller in that tab (I am also using a tab bar controller), but it's also gone for other view controllers in the tab bar controller. Let me know if you want screenshots.

Something similar is happening to me, my tab bar (from my UITabBarController) is getting shifted like 100 pts up the screen from the bottom.


parameterize configuration defaults in haproxy::params

One should be able to over-ride a single value, I think, without having to reproduce the entire default configuration.
https://gist.github.com/anonymous/0d13f92a1b1355596393
The initial pull request was premature.  Youdonotwanttomergeitquiteyet.  I'm sorting out the issues and will update this comment again, once it is ready for your consideration.
OK, I have now successfully manually tested this, and it again builds the default configuration, while now permitting individual options to be over-ridden like so:
  class { 'haproxy':
    global_log => '<IP_ADDRESS> local0',
  }

And another concern: this code breaks backwards compatibility.  Working to fix that next.  You do not want to merge this until that has been handled.

@hesco a little late, but ping?

Hey morgen: pong back at ya.  Preparing now for a presentation at the end of this coming week.  Might have some time to take a look at this after returning from that trip.  -- Hugh

@hesco ok, great. Will ping again in a few weeks :)

An alternative to exposing lots and lots of class parameters that in the end make up the global_options and default_options hash could be to just deep merge these default hashes specified in haproxy::params with the hashes specified as the class parameters. The puppetlabs-stdlib module provides a deep_merge function for such use cases.
This way one can override or add arbitrary keys and values to the global_options and default_options hashes without having to reproduce the whole hash. I think this is also completely backwards compatible.
Example from our own puppet-strongswan module:
# init.pp
class strongswan (
  ...
  $charon_config = $strongswan::params::charon_config,
  ...
) inherits strongswan::params {
  ...
  $charon_config_real = deep_merge($strongswan::params::charon_config, $charon_config)
  ...
}

# params.pp
class strongswan::params {
  ..
  # This reflects the defaults set in strongswan.d/charon.conf by the
  # strongSwan package
  $charon_config = {
    'crypto_test'        => {},
    'host_resolver'      => {},
    'leak_detective'     => {},
    'processor'          => {
      'priority_threads' => {}
    },
    'tls'  => {},
    'x509' => {},
  }
}

And declaring the strongswan class thus:
class { 'strongswan':
  charon_config => {
    'x509' => {
      'enforce_critical' => 'no'
    }
  }
}

Will generate a $charon_config hash that looks like this:
  $charon_config = {
    'crypto_test'        => {},
    'host_resolver'      => {},
    'leak_detective'     => {},
    'processor'          => {
      'priority_threads' => {}
    },
    'tls'  => {},
    'x509' => {
      'enforce_critical' => 'no'
    },
  }

The only potential problem is that without some trickery there is no way to unset or remove keys from the default hash specified in params.pp. One would have to set the key to a special value such as 'UNSET' and skip that key in the ERB template that processes the hash in question.
I'll see what I can do about a PR regarding this.

T

This sounds like a great approach.  Would love to see this.  Let me know if I can help you test that.

you could probably also set a value to undef and then flatten() the hash

@igalic I seem to remember seeing that a Puppet hash like this:
$somehash = {
  'somekey' => undef
}

will, when processed in an ERB template, look like this in Ruby:
{ 'somekey' => 'undef' }

I.e. the undef will become the string 'undef'. Not sure though, will try that out when creating the PR.

The approach I proposed in https://github.com/puppetlabs/puppetlabs-haproxy/pull/121#issuecomment-77285008 requires updating the dependency on puppetlabs-stdlib from 2.4.0 to at least 4.2.0, where the deep_merge function is introduced. Is this acceptable? Would it require a major release of this module? Asking @igalic, @mhaskel and @hunner.

@antaflos we discussed upping that dependency in #157 (in last week's module triage).
if we bump it, we'd at least bump it to 3.5… dunno about 4.2.x…

To make use of deep_merge we need at least puppetlabs-stdlib 4.2.0, otherwise my proposed approach will not work. Of course I could just copy the deep_merge function from stdlib to this module and call it haproxy_deep_merge but that doesn't sound like a good idea.

brrrrrrr… yeah, i'm not a big fan of that practice…

Hi @hesco @antaflos , thanks for the work you have put in to this pull request. However due to inactivity and no progress this pull request is being closed. If you want to re-submit this PR with the necessary changes, we will gladly look at the new pull request.

@DavidS Honestly I am still waiting for a response to my query about bumping the dependency on stdlib from 2.4.0 to at least 4.2.0, where the deep_merge function was first introduced. I have the changes more or less ready to go, but they depend on deep_merge being available.

I checked that internally and to support Puppet Enterprise, we cannot push the stdlib dependency beyond 3 as long as PE versions prior to 3.4 are still supported.

That's too bad. The alternative approach, as I suggested above, is to basically re-implement the deep_merge function in the haproxy module, naming it haproxy_deep_merge or something like that. Should I do that?

As an engineer, I do not like it one bit. But that's reality :-/
You can probably get away by creating a verbatim copy of the deep_merge.rb from stdlib and just renaming the function. Adding a short note where it was copied from, and why is probably a good idea too, so we can get rid of it down the line.
I'll reopen this PR so you can continue the work here.

@antaflos:
While I agree that the approach is not ideal, it does seem to provide our best option given the constraints imposed by puppetlabs and their requirements for PE compatibility.
I would urge you to proceed with that approach and to fully document what you do in the README file and in the code so that we can back things out when its finally time to update the dependency to a stdlib version which supports this function.
I look forward to reviewing your work.
-- Hugh

We have done the haproxy_deep_merge type work in other modules, such as https://github.com/puppetlabs/puppetlabs-mysql/blob/master/lib/puppet/parser/functions/mysql_deepmerge.rb :)

Thanks for the replies and confirmation. I'll try to get these changes into shape over the weekend.

So the weekend came and went and I didn't have enough time to get this done. But I haven't forgotten.

@antaflos ping, are you still looking at this ?

@tphoney It is still on my list, yes! I just can't seem to find the spare cycles necessary, not even when I was on vacation last week. Maybe I can finally power through it tonight (~10 hours from now).

@tphoney @hesco I have finally sat down and created PR #196 which implements deep merging of the default hashes and user-supplied hashes. See the PR for details.
I copied the deep_merge() function from stdlib but extended it so that array values of keys that are present in both hashes are concatenated and duplicate items removed. This seemed reasonable given that the pattern of
{
  'something' => [
    'one',
    'two',
    'three',
  ]
}

resulting in
something  one
something  two
something  three

in haproxy.cfg is very prevalent (and useful) in this module.

@antaflos:  My apologies.  I do not seem up to the task of doing an actual code review at this hour at this point in the week.  But let me express my sincere appreciation for the work you have apparently put into this pull request.  Trusting that your documentation accurately reflects the functionality delivered by that code, this seems to be exactly what I was hoping for when I offered the aborted PR above.  And for that I am most grateful.  I look forward to an opportunity to test this, and to seeing this merged upstream by the folks at Puppetlabs.

Resubmitted as #202

Dang, wrong PR. Need more :coffee: :-1:

This can be closed now that #202 is merged.

Closing now that #202 is merged.


This project needs some fun!

(that's a keyword in F# for lambdas)

I can't believe we forgot the fun. 😖
Thanks @WhiteBlackGoose!


How to deal with CORS issues?

First of all, I know this is a general question of me rather than a real issue. The only reason I post here is I have a hard time finding a clear explanation on this.
I am trying to call the signIn method of this repository from my site by making "get" ajax call. However, I get the following error.
XMLHttpRequest cannot load https://9yh8kzx6b1.execute-api.us-east-
1.amazonaws.com/dev/authentication/signin/facebook. Redirect from 'https://9yh8kzx6b1.execute-
api.us-east-1.amazonaws.com/dev/authentication/signin/facebook' to
'https://www.facebook.com/dialog/oauth?client_id=954130508021993&redirect_ur…
6cbad6184f6e45c5e50fe412d34593e8a896838dae54a4e3a3bc2270a6da647e991ded3539' has
been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://mydomain.com' is therefore not allowed access.

Is there something I did wrong? I am not quite sure which part of the sign in process lacks the 'Access-Control-Allow-Origin' header. Is it my site (hosted on S3)? Is it the API gateway?

Found the usage example in https://github.com/laardee/serverless-authentication-gh-pages


fix: add HTTP genre and sort

Fix https://github.com/argoproj/argo-workflows/issues/6794

Thank you. Were you able to test this? If so, could you share a screenshot?

@alexec I'll set up locally and test when I get a chance.
https://argoproj.github.io/argo-workflows/running-locally/

@rwong2888 Can you fix the DCO and semantics?

Not following. Can you elaborate @sarabala1979 ?

@rwong2888 Can you sign in DCO?

Hi, you have two failing checks:

Click on "Details" to fine out how to fix them. Should only take 5m.

Thank you. Am new to this. Added DCO @sarabala1979 , @alexec , @whynowy
I think @alexec fixed the semantics with the title change to fix:

Semantic Pull Request — PR has only one non-merge commit and it's not semantic; add another commit before squashing

A little after the fact and it took me a while to set up, but here is a screenshot @alexec !


[WIP] test/e2e: check if alertmanager mesh is initialized before sending alerts

Trying to find a solution to flaky AM test discussed in #2534
/cc @mxinden

alertmanager_test.go:531: failed to wait for initialized alertmanager mesh: the server rejected our request for an unknown reason (get pods alertmanager-rolling-deploy-0): <nil>

We need to wait for all Alertmanager pods to become ready before doing any API calls. This should be fixed with the following patch. What do you think @paulfantom?
diff --git a/test/e2e/alertmanager_test.go b/test/e2e/alertmanager_test.go
index 3519fc56..2d7f11f8 100644
--- a/test/e2e/alertmanager_test.go
+++ b/test/e2e/alertmanager_test.go
@@ -520,16 +520,14 @@ inhibit_rules:
 	if _, err := framework.KubeClient.CoreV1().Secrets(ns).Create(amcfg); err != nil {
 		t.Fatal(err)
 	}
+
 	alertmanager, err = framework.MonClientV1.Alertmanagers(ns).Create(alertmanager)
 	if err != nil {
 		t.Fatal(err)
 	}

-	for i := 0; i < int(*alertmanager.Spec.Replicas); i++ {
-		name := "alertmanager-rolling-deploy-" + strconv.Itoa(i)
-		if err := framework.WaitForAlertmanagerInitializedMesh(ns, name, int(*alertmanager.Spec.Replicas)); err != nil {
-			t.Fatal(err)
-		}
+	if err := framework.WaitForAlertmanagerClusterReady(ns, alertmanager.Name, int(*alertmanager.Spec.Replicas)); err != nil {
+		t.Fatal(err)
 	}

 	if _, err := testFramework.CreateServiceAndWaitUntilReady(framework.KubeClient, ns, amsvc); err != nil {
@@ -615,6 +613,10 @@ inhibit_rules:
 		t.Fatal(err)
 	}

+	if err := framework.WaitForAlertmanagerClusterReady(ns, alertmanager.Name, int(*alertmanager.Spec.Replicas)); err != nil {
+		t.Fatal(err)
+	}
+
 	time.Sleep(time.Minute)

 	logs, err = testFramework.GetLogs(framework.KubeClient, ns, podName, "webhook-server")
diff --git a/test/framework/alertmanager.go b/test/framework/alertmanager.go
index 927da6b1..aab91337 100644
--- a/test/framework/alertmanager.go
+++ b/test/framework/alertmanager.go
@@ -18,6 +18,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"os"
+	"strconv"
 	"strings"
 	"time"

@@ -126,19 +127,37 @@ func (f *Framework) CreateAlertmanagerAndWaitUntilReady(ns string, a *monitoring
 		return nil, errors.Wrap(err, fmt.Sprintf("creating alertmanager %v failed", a.Name))
 	}

-	return a, f.WaitForAlertmanagerReady(ns, a.Name, int(*a.Spec.Replicas))
+	return a, f.WaitForAlertmanagerClusterReady(ns, a.Name, int(*a.Spec.Replicas))
 }

-func (f *Framework) WaitForAlertmanagerReady(ns, name string, replicas int) error {
-	err := WaitForPodsReady(
+// WaitForAlertmanagerClusterReady waits for each individual pod as well as the
+// cluster as a whole to be ready.
+func (f *Framework) WaitForAlertmanagerClusterReady(ns, name string, replicas int) error {
+	if err := WaitForPodsReady(
 		f.KubeClient,
 		ns,
 		5*time.Minute,
 		replicas,
 		alertmanager.ListOptions(name),
-	)
+	); err != nil {
+		return errors.Wrap(err,
+			fmt.Sprintf(
+				"failed to wait for an Alertmanager cluster (%s) with %d instances to become ready",
+				name, replicas,
+			))
+	}

-	return errors.Wrap(err, fmt.Sprintf("failed to create an Alertmanager cluster (%s) with %d instances", name, replicas))
+	for i := 0; i < replicas; i++ {
+		name := fmt.Sprintf("alertmanager-%v-%v", name, strconv.Itoa(i))
+		if err := f.WaitForAlertmanagerInitializedMesh(ns, name, replicas); err != nil {
+			fmt.Sprintf(
+				"failed to wait for an Alertmanager cluster (%s) with %d instances to become ready",
+				name, replicas,
+			)
+		}
+	}
+
+	return nil
 }

 func (f *Framework) UpdateAlertmanagerAndWaitUntilReady(ns string, a *monitoringv1.Alertmanager) (*monitoringv1.Alertmanager, error) {

Looks good to me. Applied in latest commit.

lgtm

@mxinden seems like latest patch is making test timeout in travis (or not print anything for 10 minutes, so travis is killing this job). I have run it 4 times and it is a consistent behavior.

@mxinden seems like latest patch is making test timeout in travis (or not print anything for 10 minutes, so travis is killing this job). I have run it 4 times and it is a consistent behavior.

@paulfantom interesting. Looking into that.

Last commit should remove the test timeout in travis.

Imagine the scenario where two alertmanager clusters run in parallel.
Alertmanager cluster A drops instance with IP address 1. Alertmanager
cluster B adds a new instance which gets the recently freed IP adddress 1.
If this happens in a reasonably short time, both clusters will merge.
The end-to-end test suit spins up many Alertmanager clusters in
parallel, scaling them up and down. The above scenario is happening
here.
For now we can run the tests in sequence. Long term Alertmanager should
have a cluster identifier to prevent such cluster merges.

While running all Alertmanager tests in sequence increases the overall runtime of the tests (30 minutes total), it is a temporary solution to the above problem. What do you think @paulfantom? I would suggest squashing the commits and merging.

@mxinden sounds reasonable to me :+1:

This seems to stabilize things. @paulfantom would you mind giving this another review? This is good to go from my side.

looks good :+1:

Thanks both of you for fixing this! It's been a journey! :tada:

@brancz while this is a good step forward, we are still facing issues with mesh initialization on Alertmanager v0.14.0. So far I am unable to reproduce this locally. I will test out different Kubernetes versions next.