Removing unused defintions

I recently updated our ApiController action methods to return a generic type that inherits from HttpResponseMessage (we call it TypedHttpResponseMessage<T>)  and to use the [SwaggerResponse] attribute to document the return types as the <T>.  However when I pasted the generated swagger into http://editor.swagger.io it warned me about unused defintions relating to the TypedHttpResponseMessage.  (Seems that this does not happen if I use a raw HttpResponseMessage)
So I wrote an IDocumentFilter that will remove unused defintions and thought I post it here in case someone else gets the same issue (and if anyone cares to code-review I won't mind either!)
YMMV - we don't use all the features of a swagger file, so this filter may need to be updated if you use other schemas
    public class RemoveUnusedDefinitions : IDocumentFilter
    {
        private readonly Dictionary<string, int> _countByDefinitionRef = new Dictionary<string, int>();

        public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
        {
            bool aDefinitionWasRemoved;

            do
            {
                aDefinitionWasRemoved = RemoveUnused(swaggerDoc, schemaRegistry);
            } while (aDefinitionWasRemoved);
        }

        private bool RemoveUnused(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry)
        {
            foreach (var refWithSchema in schemaRegistry.Definitions)
                _countByDefinitionRef["#/definitions/" + refWithSchema.Key] = 0;

            foreach (var pathItem in swaggerDoc.paths.Values)
            {
                CountParameterRefs(pathItem.parameters);
                CountOperationRefs(pathItem.delete);
                CountOperationRefs(pathItem.get);
                CountOperationRefs(pathItem.head);
                CountOperationRefs(pathItem.options);
                CountOperationRefs(pathItem.patch);
                CountOperationRefs(pathItem.post);
                CountOperationRefs(pathItem.put);
            }

            CountDefinitionsRefs(swaggerDoc.definitions);

            var aDefinitionWasRemoved = false;

            foreach (var countByRef in _countByDefinitionRef)
                if (countByRef.Value == 0)
                {
                    var definitionKey = countByRef.Key.Replace("#/definitions/", "");
                    if (swaggerDoc.definitions.Remove(definitionKey))
                        aDefinitionWasRemoved = true;
                }

            return aDefinitionWasRemoved;
        }

        private void CountDefinitionsRefs(IDictionary<string, Schema> definitions)
        {
            foreach (var definition in definitions.Values)
                CountSchemaRefs(definition);
        }

        private void CountOperationRefs(Operation operation)
        {
            if (operation == null)
                return;

            CountParameterRefs(operation.parameters);
            CountResponseRefs(operation.responses);
        }

        private void CountResponseRefs(IDictionary<string, Response> responsesByHttpStatus)
        {
            if (responsesByHttpStatus == null)
                return;

            foreach (var response in responsesByHttpStatus.Values)
                CountSchemaRefs(response.schema);
        }

        private void CountParameterRefs(IList<Parameter> parameters)
        {
            if (parameters == null)
                return;

            foreach (var param in parameters)
                CountSchemaRefs(param.schema);
        }

        private void CountSchemaRefs(Schema schema)
        {
            if (schema == null)
                return;

            if (!string.IsNullOrEmpty(schema.@ref))
                _countByDefinitionRef[schema.@ref]++;

            if (schema.items != null && !string.IsNullOrEmpty(schema.items.@ref))
                _countByDefinitionRef[schema.items.@ref]++;

            if (schema.properties != null)
                //Recurse into child properties
                foreach (var s in schema.properties.Values)
                    CountSchemaRefs(s);
        }
    }

When you have actions that return a type that doesn't quite correspond to the actual API contract (e.g. HttpResponseMessage, IHttpActionResult or in your case HttpResponseMessage<T>, WebAPI provides the [ResponseType] attribute to inform it's metadata layer (ApiExplorer) of the "acctual" response type. If you use this for the success case and just use [SwaggerResponse] for the error cases, you won't get the redundant definition:
[ResponseType(typeof(Product))]
[SwaggerResponse(400, "Validation Error", typeof(HttpError))]
public HttpResponseMessage<Product> Create(Product product)
{
    ....

Right now, this would be the recommended approach for your case. It does mean you have to mix and match framework attributes with Swashbuckle attributes to cover success and error response codes which isn't ideal. However, in ASP.NET Core (next-gen), the framework introduces a new attribute [ProducesResponseType] for covering the error cases. So, in the next major version of SB (targeting ASP.NET Core) the SwaggerResponse attributes will be removed in favor of the built-in ones.

Interesting - we'll give that a shot.  If I can remove that custom filter, I'll be happy.

There is now a separate project specifically for ASP.NET Core and this allows you to describe all response codes purely with attributes that are native to that framework.
Of course this is only available if you've moved your application to ASP.NET Core. If this isn't on the cards, then you're stuck with the workarounds described above

@pmcevoy
It should be noted that that code will remove all models which don't appear on the "top-level" (as a response or parameter, directly). To avoid this, you have to modify these two lines:
if (schema.items != null && !string.IsNullOrEmpty(schema.items.@ref))
   _countByDefinitionRef[schema.items.@ref]++;

to (you have to pass the global swaggerDoc into the method)
if (schema.items != null && !string.IsNullOrEmpty(schema.items.@ref))
{
   _countByDefinitionRef[schema.items.@ref]++;

   //schema.items.@ref might refer to a Schema in swaggerDoc.definitions which doesn't occur in any method parameter/response on the top-level, so we manually look such Schemas up and count them too.
   if (swaggerDoc.definitions.TryGetValue(schema.items.@ref.Replace("#/definitions/",""), out var itemSchema))
      CountSchemaRefs(itemSchema);
}

@pmcevoy Thanks for posting this. I was wondering if you have similar solution for ASP.NET Core?

Simpler solution (works with ASP.NET Core):
using Microsoft.OpenApi.Interfaces;
using Microsoft.OpenApi.Models;
using Microsoft.OpenApi.Services;
using Swashbuckle.AspNetCore.SwaggerGen;

/// <summary>
/// Removes unreferenced component schemas from the OpenAPI document.
/// </summary>
internal sealed class UnusedComponentSchemaCleaner : IDocumentFilter
{
    public void Apply(OpenApiDocument document, DocumentFilterContext context)
    {
        var visitor = new OpenApiReferenceVisitor();
        var walker = new OpenApiWalker(visitor);
        walker.Walk(document);

        HashSet<string> unusedSchemaNames = [];

        foreach (string schemaId in document.Components.Schemas
            .Select(schema => schema.Key)
            .Where(schemaId => !visitor.UsedSchemaNames.Contains(schemaId)))
        {
            unusedSchemaNames.Add(schemaId);
        }

        foreach (string schemaId in unusedSchemaNames)
        {
            document.Components.Schemas.Remove(schemaId);
        }
    }

    private sealed class OpenApiReferenceVisitor : OpenApiVisitorBase
    {
        private const string ComponentSchemaPrefix = "#/components/schemas/";

        public HashSet<string> UsedSchemaNames { get; } = [];

        public override void Visit(IOpenApiReferenceable referenceable)
        {
            UsedSchemaNames.Add(referenceable.Reference.Id);
        }

        public override void Visit(OpenApiSchema schema)
        {
            if (schema.Discriminator != null)
            {
                foreach (string discriminatorValue in schema.Discriminator.Mapping.Values)
                {
                    if (discriminatorValue.StartsWith(ComponentSchemaPrefix, StringComparison.Ordinal))
                    {
                        string schemaId = discriminatorValue[ComponentSchemaPrefix.Length..];
                        UsedSchemaNames.Add(schemaId);
                    }
                }
            }
        }
    }
}


Lib Multipart Compatibility

It currently have missing texture rendering when build on 1 block with Lib Multipart installed. Also when we press the button, game crash.

Vanilla and other mods button works, but button from LED glitched and crash when pressed.

can you provide crash report or game log?

I edited the title, I just figured it is compatibility problem with Vanilla Parts.
I use Fabric (1.18.2)

Crash Report
Launcher Log

Please release fix also for 1.18.2. Thank you in advance!


[chore] A simpler PR template is needed

Description
Keep it simple.

Issue forms are not supported for pull requests.  link

So keep using .md template.


feat: allow pip drvs to access config from their parent drv

I'm doing custom builds from editable installs in a meta-repo.
To get the dirty editable path of a dependency drv, I'd need this patch, to be able to do something like:
{config, ...}:
let
  inherit (config.mkDerivation.passthru) topConfig;
  fullRelPath = topConfig.lock.content.fetchPipMetadata.sources.${config.name}.path;
in ...

@moduon MT-1075

Why don't you just access the config attribute of the parent directly from your nix expression?

Yeah, I can do that, and that's currently my workaround.
However, my parent nix epression is using pip and the value needed to pass in pip.drvs.* is quite complex, so I refactored it out to different files that define reusable drv-parts.
I can call those parts, but it seemed more ergonomic to just declare a module and be able to access its parent config directly.

Hm, I wonder if there is a cleaner solution to this than passing the full parent config to the child module. Maybe we could support the editable use case directly or alternatively pass the path of the package via meta.relPath or such?
I'm happy to look into this. It would help if you could provide a reproducer of your use case so I can plan around with it.


Depending on the order of the geoms in the environment, brax can crash.

Hello! I am not sure if I am understanding this right, but I have created a mjcf file for the franka emika panda robot, and while debugging various issues during the process, I came across this code snippet from contact.py:
def _geom_pairs(sys: System) -> Iterator[Tuple[Geometry, Geometry]]:
    for i in range(len(sys.geoms)):
        for j in range(i, len(sys.geoms)):
            mask_i, mask_j = sys.geom_masks[i], sys.geom_masks[j]
            if (mask_i & mask_j >> 32) | (mask_i >> 32 & mask_j) == 0:
                continue
            geom_i, geom_j = sys.geoms[i], sys.geoms[j]
            if i == j and geom_i.link_idx is None:
                continue
            if i == j and geom_j.transform.pos.shape[0] == 1:
                continue
            yield (geom_i, geom_j)

From what I understand, this is supposed to iterate through every single possible collision pair. My understanding is that geom_j is supposed to be the only one that can be stationary, and thus have no link_idx.
Because of the structure of my env, not all of my static elements had higher geom ids, so some of these pairs were (i, j) where i is stationary and has no link_idx. This crashes the later code.
A relatively easy fix which seems to work on my local machine is to replace the yield at the end with this:
            if geom_i.link_idx is None and geom_j.link_idx is not None:
                yield (geom_j, geom_i)
            else:
                yield (geom_i, geom_j)

Not sure if this was a known issue or if this solution would mess with the jax compile or anything, but I couldn't find it in existing issues

Hi @mishmish66 , could you provide an XML to reproduce the issue? FWIU both geom_i or geom_j can be a world geometry, but if link_idx is None, it indeed could crash later code (which we should fix if that's the case)


Format on save doesn't work

Issue Type: Bug
Probably since the last update the vscode doesn't reformat my ts code.

Yes it is set in workspace config (and user config too).

VS Code version: Code 1.28.2 (7f3ce96ff4729c91352ae6def877e59c561f4850, 2018-10-17T00:18:43.347Z)
OS version: Darwin x64 18.0.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz (4 x 2600)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledrasterization: enabledvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 2

Memory (System)
8.00GB (0.14GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (12)

Extension
Author (truncated)
Version

gitlens
eam
8.5.6

vsc-material-theme
Equ
2.4.2

vscode-npm
fkn
3.3.0

todo-tree
Gru
0.0.92

vscode-test-explorer
hbe
2.0.9

python
ms-
2018.9.0

cpptools
ms-
0.19.0

vscode-gn
npc
1.0.0

python
tht
0.2.3

cmake
twx
0.0.17

vscode-lldb
vad
1.0.0

clang-format
xav
1.6.2

Actually it seems it only has a problem with one of my files. I will try to create an example later.

Closing as needs more info. Please follow this guide on what to include in issue reports


Windows str.replace not implemented properly

You often have a line such as this to fix windows file paths:
# Fix windows path if needed
file_path_on_target_machine.replace('\\', '/')

This does not actually edit the variable but instead returns a new variable as described here (https://docs.python.org/2/library/string.html#string.replace)
I suggest your code should be updated to file_path_on_target_machine = file_path_on_target_machine.replace('\\', '/')
This will remove the need for users to do this themselves before the saleae methods a file_path if using Windows

Although, for some of the methods it does not appear to be an issue whether the file path has \\ or / so it may be a null issue. If this is the case then I think the code should be removed since it is not needed or doing anything

Hah! Nice catch.. I don't actually have any Windows machines, so all of the windows code in this library is from other folks. Given that it's not actually doing anything and no one is complaining about that, probably best to just drop them. Happy to take a PR -- thanks!

I'm doing a project with the saleae currently so should have a good chance to confirm whether this is actually an issue or not. Either way I can certainly make a PR once I know


The measurement scalar/vector check should only check the states and times

It doesn't make sense to pass in vectors of the constants (if it does that).
It's also hard to get the scalar and vector working nicely. Maybe we should just use vectorize.
Here is what a ramp input function has to look like:
def eval_ramp(Ft, time):
    if np.isscalar(time):
        if time < 3.0:
            return 0.0
        else:
            return Ft*time - Ft*3.0
    else:
        return (time >= 3.0) * (Ft*time - Ft*3.0)

sys.add_measurement('F', eval_ramp)

np.vectorize() doesn't work because it renames the function arguments and we rely on know the names of the function arguments.

np.vectorize() also does not return a scalar if passed scalars, it always returns an array.


[Hold][Feature] Remove v1 SHARE code

Resolves https://github.com/CenterForOpenScience/SHARE/issues/367
Purpose
Remove SHARE v1 code
Changes

Removed all SHARE related code except for the registration form
Use share v2 on search page
Open new tab when going to SHARE search results

Side effects
Will need to map these routes with nginx:
Rule(
    '/share/',
    'get',
    {},
    OsfWebRenderer('share_search.mako', trust=False)
),
Rule(
    '/share/help/',
    'get',
    {'help': settings.SHARE_API_DOCS_URL},
    OsfWebRenderer('share_api_docs.mako', trust=False)
),
Rule(  # FIXME: Dead route; possible that template never existed; confirm deletion candidate with ErinB
    '/share_dashboard/',
    'get',
    {},
    OsfWebRenderer('share_dashboard.mako', trust=False)
),
Rule(
    '/share/atom/',
    'get',
    search_views.search_share_atom,
    xml_renderer
),

process_rules(app, [

    Rule('/share/search/', ['get', 'post'], search_views.search_share, json_renderer),
    Rule('/share/stats/', 'get', search_views.search_share_stats, json_renderer),
    Rule('/share/providers/', 'get', search_views.search_share_providers, json_renderer),

], prefix='/api/v1')

Ticket
https://github.com/CenterForOpenScience/SHARE/issues/367

@chrisseto, what should happen with the OSF search page?

@leb2dg Point it to SHARE V2's search API, .../search/_count. The SHARE url can just be a setting that gets dropped in by mako.

Grepping through the code for about 10 minutes looking for remnants of forgotten code didn't reveal anything SHARE-related that doesn't still need to be there. 🌟
One issue with how the new SHARE url is being acquired by the front-end, otherwise LGTM.


Update gRPC template package sample to follow convention

Addresses https://github.com/grpc/grpc-dotnet/issues/580
This is targeting 3.1. Reasoning: not urgent enough for a servicing release but it shouldn't wait until 5.0 to be fixed.
@Pilchie

Approved.


build failed on OSX library not found for -lgomp

Build failed on Mac OSX version 10.10.5
Anyone can help?
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [lib/libmxnet.so] Error 1
make: *** Waiting for unfinished jobs....
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: lib/libmxnet.a(mxrtc.o) has no symbols
In file included from tools/im2rec.cc:21:
In file included from /usr/local/Cellar/opencv/2.4.12/include/opencv2/opencv.hpp:56:
/usr/local/Cellar/opencv/2.4.12/include/opencv2/ml/ml.hpp:961:18: warning: 'CvForestTree::train'
hides overloaded virtual functions [-Woverloaded-virtual]
virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx, CvRTrees...
^
/usr/local/Cellar/opencv/2.4.12/include/opencv2/ml/ml.hpp:867:18: note: hidden overloaded virtual
function 'CvDTree::train' declared here: different number of parameters (2 vs 3)
virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() );
^
/usr/local/Cellar/opencv/2.4.12/include/opencv2/ml/ml.hpp:877:26: note: hidden overloaded virtual
function 'CvDTree::train' declared here: different number of parameters (8 vs 3)
CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
^
/usr/local/Cellar/opencv/2.4.12/include/opencv2/ml/ml.hpp:1149:18: warning: 'CvBoostTree::train'
hides overloaded virtual functions [-Woverloaded-virtual]
virtual bool train( CvDTreeTrainData* trainData,
^
/usr/local/Cellar/opencv/2.4.12/include/opencv2/ml/ml.hpp:867:18: note: hidden overloaded virtual
function 'CvDTree::train' declared here: different number of parameters (2 vs 3)
virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() );
^
/usr/local/Cellar/opencv/2.4.12/include/opencv2/ml/ml.hpp:877:26: note: hidden overloaded virtual
function 'CvDTree::train' declared here: different number of parameters (8 vs 3)
CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag,
^
2 warnings generated.
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [bin/im2rec] Error 1

https://github.com/dmlc/mxnet/issues/749

Thanks.
solved from the suggestion from #749:
brew install clang-omp
make CXX=clang-omp++

appletekiMacBook-Air-3:bin apple$ brew install clang-omp
Warning: clang-omp-2015-04-01 already installed
appletekiMacBook-Air-3:bin apple$ make CXX=clang-omp++
make: *** No targets specified and no makefile found.  Stop.
why？


Make ignite optional

Codecov Report
Attention: Patch coverage is 87.50000% with 1 line in your changes missing coverage. Please review.

Project coverage is 99.93%. Comparing base (da225e2) to head (336ef42).

Files
Patch %
Lines

src/karbonn/distributed/ddp.py
83.33%
0 Missing and 1 partial :warning:

Additional details and impacted files
@@             Coverage Diff             @@
##              main     #179      +/-   ##
===========================================
- Coverage   100.00%   99.93%   -0.07%
===========================================
  Files           68       68
  Lines         1451     1455       +4
  Branches       156      157       +1
===========================================
+ Hits          1451     1454       +3
- Partials         0        1       +1

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


Make main instantiate all submachines and pass them as arguments

fixed tests

I'm not sure I follow. Are you talking about the assembly part or the Rust part?

Both, the whole concept of passing a machine to another machine because we know that it needs it, but in the end, it should be that machine's concern what internal machines it needs.

it should be that machine's concern what internal machines it needs.

It still is, as expressed in the machine's arguments. The point here is that this actually is an optimization that can be done in the language: before this PR, multiple machines that require the same submachine were instantiating them multiple times. With this PR only the top-level machine instantiates the shared ones and passes them around for the ones that need them. I'd say that's the opposite of ugly, and turned out quite nice.

The part that I do think is ugly is the way we create the RISCV machine powdr code in Rust with a bunch of string concatenations as opposite to files containing templates and rendering. If the whole thing was already expressed in terms of powdr-asm, it would be much clearer which machines are being instantiated by the top-level RISCV main machine and what's passed to what machine.

Both, the whole concept of passing a machine to another machine because we know that it needs it, but in the end, it should be that machine's concern what internal machines it needs.

I have a plan for this. I think this is fine for now because we currently don't instantiate machines explicitly, so declaring and instantiating is the same. Eventually, I think we should have something like:
// declaration
machine Main {
   arith: Arith,
}

machine Arith {
}

// instantiation, where we pass instances
let arith = Arith {};
let main = Main { arith };


[feature request] API to work with video in form of numpy arrays

It would be cool if you add some kind of API to stabilize video, which is being stored in form of an numpy array (4d for a colored video or 3d for a halftone video).
Thank you.

I would also love this feature.
Something like where you pass a np array and you need to pass a certain amount of initial frames to get a stabilized output.
import cv2 as cv   cap = cv.VideoCapture('vtest.avi')   success, frame = cap.read()   stabilizer = VidStab()   output_array = stabilizer.stabilize_frame(input_frame=frame)
OpenCV to BackgroundSubtractorMOG does something similar -
import numpy as np   import cv2 as cv   cap = cv.VideoCapture('vtest.avi')   fgbg = cv.bgsegm.createBackgroundSubtractorMOG()   while(1):       ret, frame = cap.read()       fgmask = fgbg.apply(frame)       cv.imshow('frame',fgmask)       k = cv.waitKey(30) & 0xff       if k == 27:           break   cap.release()   cv.destroyAllWindows()

I am happy to help with testing, or anything else you need.

@mountainhound I finally got around to working on this, and I just pushed a VidStab.stabilize_frame() method attempting to follow the pattern you proposed to the nparray#50 branch.
Below is an example script using the method.  There are still definitely kinks I need to work out on the backend, but I wanted to get your feedback on the proposed frontend of the implementation.  Please let me know any feedback you have.
Notes on implementation

The output of stabilize_frame() is on an N frame delay where N is equal to the smoothing_window used.
Like createBackgroundSubtractorMOG, stabilize_frame() returns an all 0 array while the process is warming up.
stabilize_frame() can accept None as an input frame.  This is so the delayed frames can still be processed/returned.  When there are no frames left to process then stabilize_frame() returns None.

import tempfile
import cv2
from vidstab import VidStab, layer_overlay, download_ostrich_video

# Download test video to stabilize
tmp_dir = tempfile.TemporaryDirectory()
ostrich_video_path = f'{tmp_dir.name}/vid.avi'
download_ostrich_video(ostrich_video_path)

# Init stabilizer and video reader
stabilizer = VidStab()
vidcap = cv2.VideoCapture(ostrich_video_path)

while True:
    grabbed_frame, frame = vidcap.read()

    if grabbed_frame:
        # Do frame pre-processing
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Pass frame to stabilizer even if frame is None
    stabilized_frame = stabilizer.stabilize_frame(input_frame=frame,
                                                  layer_func=layer_overlay,
                                                  border_size=100)

    # If stabilized_frame is None then there are no frames left to process
    if stabilized_frame is None:
        break

    # Display stabilized output
    cv2.imshow('Stabilized Frame', stabilized_frame)

    key = cv2.waitKey(5)
    if key == 27:
        break

vidcap.release()
cv2.destroyAllWindows()

[ ] Finalize design/implementation of VidStab.stabilize_frame().
[ ] Write tests for VidStab.stabilize_frame().
[ ] Possibly, re-write main stabilization process to use VidStab.stabilize_frame() to simplify codebase.

I've merged #69 which addresses this issue.  See docsite for method documentation and example usage.


adding new ca.gov logo

replaced with
https://github.com/Office-of-Digital-Services/California-State-Web-Template-Development/pull/140


ansible module for adm service

do you have a module that communicate with ADM service instead of ADM on-prem?
i believe most of the API calls are very similar.
ADM service uses https:///nitro/v1/ URL
ADM service is also expecting parameter 'isCloud: true' in the header.
ADM service also uses ClientID and Secret (which is the API key) instead of the standard username and password.
daniel

It is possible to modify the modules to work with adm service.
We will schedule the implementation of this feature for some time in the future.
@hardjopranoto thanks for bringing this to our attention.

Fixed with #180


[WIP] Enable acs-engine e2e tests during azure ci jobs

@kargakis @jim-minter

Hi @pschiffe, as usual, it's more complex than we thought :)  This is a good start but several key pieces are missing - please ping me if not clear, update, and will review again.  Thanks!

I have troubles running the acs-engine e2e test itself, it seems always to timeout:
$ az group deployment create --name openshift-eastus-72986 --resource-group openshift-eastus-72986 --template-file /go/src/github.com/Azure/acs-engine/_output/openshift-eastus-72986/azuredeploy.json --parameters /go/src/github.com/Azure/acs-engine/_output/openshift-eastus-72986/azuredeploy.parameters.json

....................................................................................................................................2018/06/11 13:36:14
Error from deployment for openshift-eastus-72986 in resource group openshift-eastus-72986:exit status 1
2018/06/11 13:36:14 Command Output: ERROR: Deployment failed. Correlation ID: d24aaa36-9319-449a-91b7-9fc00398a4a3. {
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource provision operation did not complete within the allowed timeout period. Please see https://aka.ms/arm-deploy for usage details."
  }
}

@jim-minter should be ready now

@pschiffe great - can you point me to some successful test runs in jenkins before we merge?

https://ci.openshift.redhat.com/jenkins/view/All/job/azure_build_node_image_centos_peter/7/
https://ci.openshift.redhat.com/jenkins/view/All/job/azure_build_node_image_centos_39_peter/12/

cool - have you seen successes with test_branch_origin_extended_conformance_azure and test_branch_origin_extended_conformance_azure_39 as well?

Unfortunately that two jobs are failing for some other reason - during the launch.yml:
https://ci.openshift.redhat.com/jenkins/view/All/job/test_branch_origin_extended_conformance_azure_peter/1/
https://ci.openshift.redhat.com/jenkins/view/All/job/test_branch_origin_extended_conformance_azure_39_peter/16/
(I've removed the email now, sorry)

On a quick look, seems like we miss gathering artifacts. I can add it in a follow-up if @jim-minter is fine with merging this as is.

have rebased this to include the 3.10 jobs


Not working in Obsidian search box & note title

Hi, thanks for this cool plugin!
One thing I noticed is that it does not work when I try to add an emoji in the search field or in note title (the filename). I can click in the search field (Obsidian), open the emoji selector, select an emoji, but it will be added in the note itself, not in the search field. Most of my tags are emojis, so this hurts. 😃
Not sure if this is a problem of the plugin or of Obsidian, though. 🤔

Hi @marcbusch - If you update Emoji Toolbar you should now see this behaviour. Thanks for raising the issue.


Build out matrix for cuda (ffmpeg7)

I've noticed that nvcodec doesn't work for 535
I don't have a good way of detecting the nvidia driver version, so i'm using __cuda as a proxy.
Closes https://github.com/conda-forge/ffmpeg-feedstock/issues/205
Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

I think this is having the desired effect.
We can tweak as needed.

I used build locally to upload the same packages to my channel. I also needed to upload opencv to my own channel too
My testing procedure was as follows
NVIDIA_BASE=nvidia-headless
DESIRED_NVIDIA_VERSION=550
sudo apt remove *nvidia*
sudo apt install --yes \
        ${NVIDIA_BASE}-${DESIRED_NVIDIA_VERSION} \
        nvidia-utils-${DESIRED_NVIDIA_VERSION} \
        libnvidia-common-${DESIRED_NVIDIA_VERSION} \
        libnvidia-gl-${DESIRED_NVIDIA_VERSION} \
        libnvidia-encode-${DESIRED_NVIDIA_VERSION} \
        libnvidia-decode-${DESIRED_NVIDIA_VERSION}
sudo reboot

mamba info | grep __cuda
# validate that it is 12.4
conda uninstall --force --offline --yes ffmpeg
mamba install --yes ffmpeg=7
# then check that your ffmpeg works as expected with nvenc

# Now downgrade.....

NVIDIA_BASE=nvidia-headless
DESIRED_NVIDIA_VERSION=535
sudo apt remove *nvidia*
sudo apt install --yes \
        ${NVIDIA_BASE}-${DESIRED_NVIDIA_VERSION} \
        nvidia-utils-${DESIRED_NVIDIA_VERSION} \
        libnvidia-common-${DESIRED_NVIDIA_VERSION} \
        libnvidia-gl-${DESIRED_NVIDIA_VERSION} \
        libnvidia-encode-${DESIRED_NVIDIA_VERSION} \
        libnvidia-decode-${DESIRED_NVIDIA_VERSION}
sudo reboot

# Try ffmpeg, confirm that it fails to use nvenc

mamba info | grep __cuda
# validate that it is 12.2
conda uninstall --force --offline --yes ffmpeg
mamba install --yes ffmpeg=7
# build 400 should be installed..


API Review Scoping label not added when updating an issue

Although not a common scenario, if someone deleted the label of the issue, and there is an update to the meeting invite, which will create an update on the GH issue, the label is not added.
The label should always be present

See example: https://github.com/azure-sdk/TestingForEngagementExperience/issues/35

Fixed, I added the label properties and GitHub API call into the CalendarEvent - Update cloud flow.
Nos this scneario is covered.


Use aria2 or other command over curl for snapshots

Currently, snapshot sync will use curl in order to download large files. It should be possible to use something different like aria2 (which has failed locally -x >4) in order to cut down download (potentially by a large amount).

Snapshot data will be stored and obtained from IPFS, so curl and aria2 don't apply.


Modified main interface

Added config.yml file.
Modified ERA5_retrieve_postproc.py accordingly.

Very nice idea, I was thinking of something like this, see #4. Perhaps we can port the parsers too?
https://github.com/oloapinivad/CDS-retriever/blob/parsing/ERA5_retrieve_postproc.py

Sure thing!
There is a small correction to be made in my config file, then I can simply use your parser,
In this way, an user only has to modify the config file, without touching the scripts.

Parser complete with your options!
I’ve created a new config.py file and moved the configuration code for the main script there.

What's the status of this one? I assume I can close #4 now

What's up? Change of plan?

Yes, just for order...
This was my main dev branch, I'm setting up a new thematic branch with only the stuff related to this pull request


[Question] Split Magic into multiple plugins?

Hello Nathan, I'm sorry to hear that you are currently facing huge challenges on porting Magic to newer versions because of large API change.I do really appreciate your fantastic work, and love Magic so much.
I've been using your plugin since mc 1.12, but only the combat spell part. Since the only way to use spells in original Magic is obtaining a wand, I made my adapter plugin to allow my players to use spells without a wand, to achieve a similar feature like another spell plugin MagicSpells.
Maintaining such a large plugin can be complex I know, and I wonder if this plugin is able to been splitted. I know this maybe innocent but I do really not want to see such an excellent work fades.
And here's an other question, probably I'll try to make a plugin that only include Magic's spell part since I have accumulated enough development experience(maybe?) when I port my server to versions above 1.20.5, though it can't be soon and is currently just my imagination, how to you think of it?

Well funnily enough that is how the plugin started. It was 2 separate plugins originally: Spells and Wands.
Then I made Magic which was supposed to tie the two together and add classes, leveling and that sort of thing.
Anyway, I do hope to make Magic compatible with newer MC eventually. I'm not sure what that will mean yet or when it will happen, though.
Pulling the plugin apart in the way you're suggesting would probably be more work than that though :)
It's unfortunately not a clean separation anymore, at all. Every spell has the potential to change depending on the wand used to cast it, for instance. I guess you could leave all that stubbed in and just try to get rid of the parts where wands interact with item data and such, but it would definitely be a mess.
It's also the case that some spells use NBT or other problematic NMS/Craftbukkit calls (like for loading schematics). This could probably be stripped away but it's worth mentioning anyway.

This really makes sense, modules are somehow associated with each other too deep to be seperated.
NBT for item may be easy to handle for both of NBT and components are nested maps, while CraftBukkit/NMS API function changes are indeed fatal for migrating tasks.
Maybe not everyone are updating to 1.21 in a hurry, so pls don't be so worry about it, and happy children's day for you XD.


Uncaught exception 'PDOException'

hi iam follow your tutorial, i am developing on hosting server...
but get problem on  Uncaught exception 'PDOException'
here is the error response of server.
: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1 no such table: contacts' in /home/test/public_html/Telegram-Bot-API-master/examples/quoteBot.php:61 Stack trace: #0 /home/test/public_html/Telegram-Bot-API-master/examples/quoteBot.php(61): PDO->prepare('SELECT chat_id ...') #1 /home/test/public_html/Telegram-Bot-API-master/examples/quoteBot.php(25): addContact(115906090) #2 {main} thrown in /home/test/public_html/Telegram-Bot-API-master/examples/quoteBot.php on line 61
how can i fix it? thanks

@adrianf29 General error: 1 no such table: contacts.
Just create table contacts
Regards

done, but i got this error again.
Warning: file_get_contents(https://api.telegram.org/bot161837874:AAFsNnOw006DpCxvq4Ee0lkQS5gf_rFkIM4/sendMessage?chat_id=115906090&disable_web_page_preview=0): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/u784149400/public_html/Telegram-Bot-API-master/src/Telegram.php on line 420
the line error is " return json_decode(file_get_contents($this->baseURL . $method . '?' . http_build_query($params)), true); " ??

@adrianf29 look at your url:
https://api.telegram.org/bot161837874:*****Ow006DpCxvq4Ee0lkQS5gf_rF***/sendMessage?chat_id=1159*****&disable_web_page_preview=0
it should be:
https://api.telegram.org/bot/161837874:*****Ow006DpCxvq4Ee0lkQS5gf_rF***/sendMessage?chat_id=1159*****&disable_web_page_preview=0)
Notice the / just after bot
Regards

@adrianf29 weird, you are having an issue when trying to send the information via GET. Try retrying, im not sure whats happening there. I recommend you if possible to test it first locally (in your computer)
Regards

@mgp25 hemh sou you means i should run it first from my local computer? i used xampp.. is it works?

@mgp25 got many errors on localhost , :( why bot cant running on my host server

@adrianf29 i saw the error, look: https://github.com/mgp25/Telegram-Bot-API/blob/master/src/Telegram.php#L69
Change your script and use this instead:
$tg->sendMessage($chat_id, $text);

Where $text contains the message you want to send.
Regards

@mgp25 nice it works, thanks!
there's one thing, i run the webhook with setwebhook and response is {"ok":true,"result":true,"description":"Webhook was set"}
but its not working, why?

@adrianf29 check this for more information in webhooks: https://core.telegram.org/bots/api
Regards

@mgp25 nice thank you very much


Command Side Authenticator (identity providers)

As a ZITADEL Administrator I want to be able to create add/manage/remove all different kind of authenticators to my users in regards of having user schemas.
Acceptance Criteria

[ ] AddAuthenticator: Adds an authenticator

[ ] Identity Providers
[ ] Google
[ ] Microsoft
[ ] Github
[ ] GithubEnterprise
[ ] GitLab
[ ] GitLab Self hosted
[ ] Apple
[ ] Generic OidC
[ ] Generic OAuth
[ ] Generic JWT
[ ] AD/LDAP
[ ] SAML
[ ] When adding a new authenticator it is checked if that authentication method is allowed on the user schema

[ ] RemoveAuthenticator: Removes an existing authenticator

[ ] Identity Providers
[ ] Google
[ ] Microsoft
[ ] Github
[ ] GithubEnterprise
[ ] GitLab
[ ] GitLab Self hosted
[ ] Apple
[ ] Generic OidC
[ ] Generic OAuth
[ ] Generic JWT
[ ] AD/LDAP
[ ] SAML

Questions to answer
Do we need to check if authentication method is allowed on the user schema or not?
Additional Information
Authenticators

username: human readable identifier of the user

username

password
webAuthNKey
one time password

email
phone

time based one time password
jwt profile key
identity provider
PAT
FUTURE: recovery code

@eliobischof @stebenz As discussed I split the issue into 3 parts (username/secret, factors, identity providers), can you please estimate them?
https://github.com/zitadel/zitadel/issues/7896
https://github.com/zitadel/zitadel/issues/7314


Please release the code and checkpoints of Beit-3

Hello, I wonder when you will be able to release the code and checkpoints of Beit-3, thanks very much!

Is there a time node for code release

The code and pre-trained models have been merged.
You can access models and code via aka.ms/beit3.

The code and pre-trained models of BEiT-3 can be found at aka.ms/beit3.

Found it. Thank you so much for the update! This is prompt and helpful


Can we render 3D objects from Google Poly in an AR in real-time ?

Can we fetch .obj and .mtl files from Google Poly API and convert them to  .sfa and .sfb files programmatically in real-time?

Unfortunately you cannot due to the conversion tools not being available on Android.

How will i get the necessary .sfa and .sfb files for the 3D objects?

Use this: https://github.com/necrostylery/google-ar-asset-converter
with Linux script for Linux shell and you can convert to .sfa and .sfb

@agselling  Awesome .Thanks a ton!!


refactor clients/horizon to use protocols/horizon

This is work in progress. It will break any application that currently depends on the horizon go client.
This also modifies friendbot and the compliance server to work with the new resources.
Remaining work:

[ ] Figure out dependency versioning
[ ] Replace various Page structs (OffersPage, TradesPage, etc.) with  hal.Page
[ ] Get rid of Payment struct
[ ] Extract Error struct (?)

Closing this as I feel https://github.com/stellar/go/pull/491 is a more gradual, backward-compatible way to move forward.


Coordinated fix on Feb 12 broke Windows path handling between node-glob and minimatch

When using allowWindowsEscape=true in minimatch options, glob is forcing minimatch to treat the path as though it contained escapes rather than Windows path separators (backslashes). Notice the negation in the following statement, which would entirely fix the issue if it were allowed to run.
  if (!options.allowWindowsEscape && path.sep !== '/') {
    pattern = pattern.split(path.sep).join('/')
  }

Therefore<EMAIL_ADDRESS>combined with<EMAIL_ADDRESS>cannot locate files using patterns like:
E:\\Src\\repo\\packages\\test\\.storybook\\main{'.js','.jsx'}

Unfortunately, this is causing the latest version of Storybook to fail to locate configuration files in its default state in Windows. Error: No configuration files have been found in your configDir.
Please coordinate another fix.

similar issue after npm update
WARNING in svg-spritemap-webpack-plugin
No source files match the patterns: 'source\img\svg-sprite\*.svg'

For right now, the only solution I can think of is to pin glob at 7.2.1.

@jsuddsjr Is this not an issue on 7.2.1? If so, how about 7.2.0?

The issue seems to be at 73feafd17f1c04633349652605e12fbbaef9b3cf. It will not show up on non-windows systems.
allowWindowsEscape is documented here, which indicates that the translation from \ to / will not occur. That is an undocumented breaking change for windows users. I will open a PR to revert the setting of allowWindowsEscape. For right now, pin glob to 7.2.0 with npm overrides, like this:
package.json
  "overrides": {
    "glob": "7.2.0"
  }

@jsuddsjr Is this not an issue on 7.2.1? If so, how about 7.2.0?

7.2.0 is work.

Could you try overriding glob to my PR and checking if it works?
package.json
  "overrides": {
    "glob": "github:nicolas377/node-glob#revert-allowWindowsEscape"
  }

Could you try overriding glob to my PR and checking if it works?
package.json
  "overrides": {
    "glob": "github:nicolas377/node-glob#revert-allowWindowsEscape"
  }

Could you try overriding glob to my PR and checking if it works?
package.json
  "overrides": {
    "glob": "github:nicolas377/node-glob#revert-allowWindowsEscape"
  }

It is work.
  # yarn
  "overrides": {
    "glob": "github:nicolas377/node-glob#revert-allowWindowsEscape"
  }

https://github.com/stylus/stylus/issues/2680

@jsuddsjr Is this not an issue on 7.2.1? If so, how about 7.2.0?

7.2.1 introduced the flag, 7.2.0 works as expected.

Can you try using glob 7.2.3?
If that doesn't work, idk, might just have to roll back that change entirely, or do a different thing.

The only problem was setting that config option to true, the upgrade didn't break anything. 7.2.3 should be working. If it is, I'll go ahead and close my PR.

Great, 7.2.3 is work.


Footnotes fon't refer to any footnotes

The Footnotes on this page https://docs.microsoft.com/en-us/windows/client-management/mdm/policy-csp-appruntime and (I think) many other Policy CSP pages seem to have been copied from another page, as there are not footnotes in the body text, just the references at the bottom.

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

ID: e3d74533-84c9-2610-88f5-13342a0073e1
Version Independent ID: f3538e4a-2986-b46a-e03c-de84143a45d6
Content: Policy CSP - AppRuntime
Content Source: windows/client-management/mdm/policy-csp-appruntime.md
Product: w10
Technology: windows
GitHub Login: @ManikaDhiman
Microsoft Alias: dansimp

@tr5tn  - Thank you for submitting feedback.
I will get this issue over to the Win10 ITPro writing team for investigation.
Thank you for reporting and making the docs better. Much appreciated.
I made a note to request the team to update this when the work is complete.

PR #5680 has been created to resolve this issue ticket.

@tr5tn  - From our understanding, the issue has been resolved based on this merged commit https://github.com/MicrosoftDocs/windows-itpro-docs/commit/4c21ab4 but it may take a few days for the merged content to appear in the article.
Thank you for your contribution to make the docs better! Much appreciated!


Cryptolake cannot automate roll backs

The cryptolake branch cannot revert to a previous version if that version has a different (breaking) schema version than the current HEAD. It is possible to automatically upgrade to a newer version by pushing to the branch.
Running lakefs migrate down currently destroys the data within the postgres database (#2270). If we want to downgrade the schema to the version used in an older lakeFS image, we would have to run something like lakefs migrate goto --version <schema-version> from the current image (which has the down scripts) and then change the image running. How to get the schema-version of the older lakeFS image programmatically before it is actually running is unclear.
This is different from upwards migration, which must be done directly from the new image.

You can use
aws ecr batch-get-image --repository-name lakefs --image-ids=imageTag=<image tag> --accepted-media-types "application/vnd.docker.distribution.manifest.v1+json" --output json |jq -r '.images[].imageManifest' |jq -r '.history[0].v1Compatibility' |jq -r '.config.Labels'

to obtain the db-schema-version label from the docker image, which should be passed to the Cryptolake workflow and used in the terraform configuration to determine whether to run lakefs migrate goto <db-schema-version> from the currently running lakeFS image (in the case of a downgrade) or from the new lakeFS image (in the case of an upgrade)


don't show profile init form when connection failed

Or in case of any other profile load error (like fromMap crash) other than a clean 404


Rename/move node

Is your feature request related to a problem? Please describe.
Currently, it's not possible to rename the file system node in app.
Describe the solution you'd like
Provide rename command that will show a dialog with a path/name to be specified.

Fixed


ModelBackend as base class for EmailBackend

Why is this not using ModelBackend as the base class - https://github.com/matthiask/django-authlib/blob/master/authlib/backends.py#L5
I encountered permission issues with this when the user is not a superuser. Particularly because EmailBackend does not implement has_module_perms. None of the permissions would work.
On extending ModelBackend, it worked fine for me

This is an excellent question. I'm not sure why, to be honest.
Do you want to submit a pull request? We can let the testsuite decide whether there's a reason for this.


Fix Android Performance

Support: Tilemap, Bitmap, drawTriangles, drawQuads
BunnyMark
Snapdragon 625 1920x1080
before 60fps ~9500 bunnies
after 60fps ~23000 bunnies
Asus ME173X 1280x800
before ~15fps 2000 bunnies
after ~60fps 2000 bunnies

Are there any performance improvements in HTML5 and Windows targets?

On PC cpp / html5 target, there is no difference.
Emphasis on the CPU and not the GPU. 100% load of one core and the FPS begins to fall.
before fix: ~ 230k bunnies cpp / html5
after fix: ~ 230k bunnies cpp / html5

There may be a difference in computers with low processor capacity on html5/cpp platform.

I think to see the difference need a powerful CPU and a weak video card.

CPU: i3-5005u, GPU: Intel(R) HD Graphics 5500
cpp
before: 60fps, ~13000 bunnies, CPU: 12%, GPU: 100%
after: 60fps, ~13000 bunnies, CPU: 12%, GPU: 100%
html5
before: 60fps, ~12000 bunnies, CPU: 13%, GPU: 100%
after: 60fps, ~12000 bunnies, CPU: 13%, GPU: 100%
Apparently the original version of the shaders does not present any problems for the PC, only for mobile devices.

Returned compatibility with inheritance.
Added support for drawRect.
Added accuracy for android (mediump).
Support: Tilemap, Bitmap, drawTriangles, drawQuads, drawRect
BunnyMark
Snapdragon 625 1920x1080
before: 60fps ~9500 bunnies
after: 60fps ~23000 bunnies
after: + ( precision mediump float ) 60fps ~26000 bunnies
Asus ME173X 1280x800
before ~15fps 2000 bunnies
after ~60fps 2000 bunnies

Have you tested colorTransform and filters with your shader? Is it working the same as before?

I use colorTransform all the time in my application and it looks 100% the same. Of the filters I've only used BlurFilter and it works just as well as before.

I just looked over the code quickly to see if i could understand what makes this faster, I am understanding it correctly if what you've done is to move the colorTransform calculations from the fragment shader to the  vertex shader, and then just multiply with the colorMatrix in the fragment shader ? @Vortelio
I can see how this could make some performance improvements on devices with limited GPU power, and I don’t see any immediate drawbacks.

move the colorTransform calculations from the fragment shader to the vertex shader, and then just multiply with the colorMatrix in the fragment shader ?

Yes exactly. I think that nothing should break.

tempColorTransform.redMultiplier = color.r / 0xFF;
tempColorTransform.greenMultiplier = color.g / 0xFF;
tempColorTransform.blueMultiplier = color.b / 0xFF;

It will definitely not work correctly. I will do a visual test to accurately control the changes. But now it is already clear that colorOffset will work correctly only through a fragment shader, and the whole point of fixing is lost. ColorMultiplier will work correctly through the vertex shader.

A little test shows that drawRect worked correctly in openFL 3.6.1.

In openFL 8.9.7, with the current implementation drawRect will fail to render correctly. It is difficult to get the correct color from the black texture. And colorMultiplier doesn't work at all.

For the colorOffset support, the pixel color is used, which means that you cannot leave the fragment shader.
colorMultipliers works great through the vertex shader.
There are many options further:

Separate shader for drawRect.
Different shaders with fast / slow if colorOffset is active.
Shaders with colorMultipliers only for Tilemap, drawQuad, etc.

The current patch only works correctly with colorMultiplier, even a drawRect created from a white texture.

Support: Tilemap, Bitmap, drawTriangles, drawQuads, +bitmapFill
drawRect is the correct color.

Full colorTransform support:
If colorOffset is used then the standard shader is used, if colorOffset is zero then the fast shader is used.


update status to pool.Message

Codecov Report

Merging #377 (eabe01e) into v3 (09c37fc) will decrease coverage by 0.01%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##               v3     #377      +/-   ##
==========================================
- Coverage   70.78%   70.76%   -0.02%
==========================================
  Files          68       68
  Lines        5094     5094
==========================================
- Hits         3606     3605       -1
+ Misses       1116     1115       -1
- Partials      372      374       +2

Impacted Files
Coverage Δ

message/status/status.go
0.00% <0.00%> (ø)

tcp/coder/coder.go
71.42% <0.00%> (-1.43%)
:arrow_down:

tcp/client/session.go
73.82% <0.00%> (-1.05%)
:arrow_down:

dtls/server/server.go
81.29% <0.00%> (+2.15%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Damage types are not always matched to the correct amounts in weapon tooltips

From what I can tell, the icons/text for damage types are put in a fixed order, but the amounts are usually in the order they're written in the config. This doesn't always apply though so I'm not sure what the real cause is. The actual damage distributions do match the config, so it's just a visual bug. The mismatch occurs with icons or with just text.
Noticed this messing with my modpack, then tried it with just DDD and it persisted. I set these up for testing:
S:"Weapon Base Damage" <
   minecraft:golden_sword;[(s, 0.85),(p, 0.15)]
   minecraft:golden_axe;[(ddd_force, 0.50),(ddd_cold, 0.07),(ddd_fire, 0.18),(ddd_necrotic, 0.25)]
   minecraft:golden_pickaxe;[(b, 0.25),(s, 0.4),(p, 0.35)]
   minecraft:golden_shovel;[(p,0.25),(ddd_poison,0.75)]
   minecraft:golden_hoe;[(p,0.75),(ddd_poison,0.25)]
>

Results in-game:

Most of them are fine, but the axe and pickaxe are wrong. The pickaxe amounts doesn't match the config or the icons, so I have no idea what's happening there.
This does not apply to armor (which uses a fixed order with the correct amounts) or mobs (which uses an increasing order based on the amount). As a small feature request while I'm here, the ability to order damage types yourself based on the config would be nice.

I must've overlooked something with the way the damage types are sorted (which is a little odd as I remember looking this over extensively. Must've missed something small). I believe I had a valid reason for sorting them, one of which is just consistency. I could see if I can sort by value instead of by type, but definitely not a major concern at the moment.

Cool, I'm terrible at closing keywords, but this should be fixed. Damage distributions did their tooltip formatting weirdly and there was no connection between the sorted types and their damage. As for not ordering the types at all, open a separate feature request for it - it just makes it easier to track independently of this bug.


feat(next): auto load dotenv for dev and preview

related https://github.com/hi-ogawa/vite-plugins/pull/609

todo

[x] test
[ ] workaround loadEnv reloading issue (later)
[ ] inject process.env on cloudflare (later)
[ ] what to do during pre-render?

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#637  👈
#636
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @hi-ogawa and the rest of your teammates on  Graphite

Merge activity

Sep 9, 4:40 AM EDT: @hi-ogawa started a stack merge that includes this pull request via Graphite.


Adding a tip for windows users

depending on where you put your hound data it could be competing with windows search indexer, which doesnt need to index this stuff.
Also (for windows) its common for developers to have IDE and repo folders excluded form realtime virus scanning. That also competes with this indexer

@StingyJack With regards to the realtime scanner: I haven't been a windows dev in some time, so if you think that bit about antivirus exclusion rules would be valuable, we can totally put it back in. I'll merge this commit in for the time being.


Update helm-deployment-check.sh

Print more extensive logs for non-ready pods

We should use https://github.com/qlik-oss/ci-tools/pull/222 instead, to get the log from both the current instance and the previous instance (if there is one).


copy generated variable not recognized

Reproduction:
...
"variables": {
    "preparedVariables": {
        "someProperty": "someValue",
        "copy": [{
            "name": "copiedArray",
            "count": 3,
            "input": {
                "value": "[copyIndex('copiedArray')]"
            }
        }]
    },
    "test1": "[variables('preparedVariables').someProperty]",
    "test2": "[variables('preparedVariables').copiedArray]"
}
...

Actual result: test2 contains error message that copiedArray does not exist
Expected result: test2 does not contain error message that copiedArray does not exist

Thanks for reporting. This is one we are hoping to fix soon, it's tracked in #30.


Bahrain holidays

Adding support for Bahrain holidays bahrain.py.
This is my first contribution, and since I'm not a programmer or coder, I based some of the code with Saudi Arabia and UAE to get a head start

@KJhellico, yeah, this PR's code is somewhat incomplete but that's fine. It's a draft so I believe no review was required. I'm going to take over @taljishi's work from here as we agreed in https://github.com/dr-prodigy/python-holidays/discussions/813


tutorial/demo for 2D slice analysis based on 3D inputs

Is your feature request related to a problem? Please describe.
would be great to demonstrate the available options for both training and inference
there were quite a few requests, see also:

https://github.com/Project-MONAI/MONAI/discussions/1641
https://github.com/Project-MONAI/MONAI/issues/719
https://github.com/Project-MONAI/MONAI/issues/995
https://github.com/Project-MONAI/MONAI/issues/808

Feel free to use this if it's of use to you.
For the inverse transformation / test time augmentation notebook, I created a 2D dataset from the 3D brain tumour dataset. I use the slice in the 3D that had the largest segmented volume.
I then saved to file, which obviously isn't necessary, but I found it to be faster. Output is then a list of dictionaries with filenames to the 2D slices: {"image": im_2d_fname, "label": label_2d_fname}. Filenames are preserved from the original images' metadata.
class SliceWithMaxNumLabelsd(MapTransform):
    def __init__(self, keys, label_key):
        self.keys = keys
        self.label_key = label_key

    def __call__(self, data):
        d = dict(data)
        im = d[self.label_key]
        q = np.sum((im > 0).reshape(-1, im.shape[-1]), axis=0)
        _slice = np.where(q == np.max(q))[0][0]
        for key in self.keys:
            d[key] = d[key][..., _slice]
        return d

class SaveSliced(MapTransform):
    def __init__(self, keys, path):
        self.keys = keys
        self.path = path

    def __call__(self, data):
        d = {}
        for key in self.keys:
            fname = os.path.basename(
                data[key + "_meta_dict"]["filename_or_obj"])
            path = os.path.join(self.path, key, fname)
            nib.save(nib.Nifti1Image(data[key], np.eye(4)), path)
            d[key] = path
        return d

keys = ["image", "label"]
data_dir = os.path.join(root_dir, task + "_single_slice")
for key in keys:
    os.makedirs(os.path.join(data_dir, key), exist_ok=True)
transform_2d_slice = Compose([
    LoadImaged(keys),
    AsChannelFirstd("image"),
    AddChanneld("label"),
    SliceWithMaxNumLabelsd(keys, "label"),
    SaveSliced(keys, data_dir),
])
ds_2d = Dataset(data_dicts, transform_2d_slice)
dl_2d = DataLoader(ds_2d, batch_size=1, num_workers=10)
data_dicts_single_slice = list(tqdm(dl_2d))

SliceWithMaxNumLabelsd could be generalised and added to MONAI if you'd like. By generalised I mean the user could choose along which spatial axis they want to slice.

thanks, I think recently we have a SaveImage transform implemented, might be useful here as well

Certainly could, I'll look into updating my PR!
I just noticed that when you refer to a Discussion (e.g., your first link), that discussion doesn't get a link pointing to the issue/PR discussing it. This is a shame, since the people who posted those questions won't necessarily know we're discussing it here.

Hello, I am just wondering if there is a new transform implemented in Monai to get 2D samples from 3D volumes. I use RandWeightedCropd during the training to feed random slices into my 2D network. My question is if there is any function to sequentially get all test all of the slices of a 3D volume during the inference stage so I can save the output as a 3D volume?
Thanks in advance!


Unable to include twig component

When I try to include twig component I receive the following error:
Unable to find template file @molecules/inline/inline.twig. TypeError: fs.statSync is not a function
    "@babel/cli": "^7.12.13",
    "@babel/core": "^7.12.13",
    "webpack": "^4",
    "webpack-cli": "^4.7.2",
    "@storybook/react": "^6.3.0-rc.11",

web pack config :
use: [
          {
            loader: 'twig-loader',
            options: {
              twigOptions: {
                allowInlineIncludes: true,
                namespaces: {
                  icons: path.resolve(__dirname, 'images/icons'),
                  base: path.resolve(__dirname, 'components/00-base'),
                  atoms: path.resolve(__dirname, 'components/01-atoms'),
                  molecules: path.resolve(__dirname, 'components/02-molecules'),
                  organisms: path.resolve(__dirname, 'components/03-organisms'),
                  templates: path.resolve(__dirname, 'components/04-templates'),
                },
              },
            },
          },
        ],

I have the same issue, did someone found out how to configure a namespace correctly?

Hi @pjoulot @YanaLushch , I am rookie in webpack; I come from twig-html-loader and I was trying to use namespaces here too.
I found that there is no code for handle a twigOPtions.namespaces, and here is the reason in the comments: https://github.com/zimmo-be/twig-loader/pull/47.
I don't understand too much to explain you, but hope I've helped you to close this issue.


Enhancements to Documentation Structure and Theme Upgrade

The main modifications to the documentation include:

Improved the document structure by dividing it into functional modules, enhancing searchability and readability.
Changed the document theme from sphinx_rtd_theme to pydata_sphinx_theme, resulting in a more visually appealing and elegant documentation.

Two themes are available for selection: black and white.
Utilized both the left and right spaces (Section toc and Page toc), facilitating users in finding desired content.
keep in line with the matplotlib documentation.

Hey, thank you very much for your contribution to EOmaps!  Highly appreciated!
I've already been thinking about moving to the PyData theme as well for quite some time now but never managed to find the time to actually give it a try... really curious to see how the docs look with this theme!
Screenshots already look really nice!
Some initial comments from my side before I can review your changes:
I see that you have commited all the files from the API docs (e.g. files in the "generated" folder) which is why there are now 647 changed files... Those files are auto-generated by sphinx-autodoc on each build and should not be part of the source-code (they would be overwritten during the build-process anyways).
Could you please remove those files from your PR? It would make it a lot easier to review your actual changes.
(The top-level .gitighore file  should actually avoid that files in the generated folder are commited... )
Also... what is the purpose of this GitButtler Integration Commit?

Tests are currently failing due to code-style issues reported by pre-commit.
Can you please run pre-commit to auto-format your changes so that they comply with the used code-style?
You can find instructions on how to use pre-commit in the docs: contribute - style-cecking. Thanks!

OK, I'll revise it again soon.

It should be fine now. The documentation can be previewed at: https://eomaps--249.org.readthedocs.build/en/249/index.html

Awesome! It looks amazing 🤩
However, the "docs/generated" folder is still part of the PR so there are still 649 changed files... can you please remove it so that the auto-generated API docs are not part of the repo? Thanks!
Once this is done I'll try to find some time as soon as possible to do a proper review of the changes to see if all looks (and works) as expected.
Again, thanks a lot for your efforts here!

I added a commit that deleted the generated folder. The compilation of the document itself shouldn't be a major issue, but there are two problems that may need further resolution:

I've only done an initial restructuring of the document, and it may need further additions/modifications to some content. For example, some newly added items in the header don't have emojis, and some section index.rst files may need additional content to guide users into specific subsections.

Because the structure of the document has changed, the content in the test section may need to be updated accordingly.

Hi @raphaelquast
I've modified the pytest code related to the docs section, and it's now running properly. There should be no issues now. This is my first pull request, so the number of iterations might be a bit high. If there are any other problems, please let me know.

I've only done an initial restructuring of the document, and it may need further additions/modifications to some content. For example, some newly added items in the header don't have emojis, and some section index.rst files may need additional content to guide users into specific subsections.

Yes, I agree... since this is quite a major change to the appearance of the docs, there are certainly a few additional changes required to make everything look and work as expected.
However, I believe that this is a good way forward and the docs will be much easier to navigate if this is done properly (... and the dark-theme switch is nice!)

I've modified the pytest code related to the docs section, and it's now running properly. There should be no issues now.

Great, thanks!

This is my first pull request, so the number of iterations might be a bit high. If there are any other problems, please let me know.

No worries on the iterations! Good thing takes time and we're all working in our free-time here.
If we go forward with switching to the pydata-theme I definitely want to do it properly!
I am happy to assist with this PR as much as I can until it's ready to be merged!

I did a first quick review and so far most of the chapters look OK and the overall appearance and usabilty is very nice!
Thanks again for pushing this forward!

Please remove the docs/source/api/autodoc_additional_props.rst file as well (it is also automatically created during the build-process and should not be part of the repo). After that the tests should finally succeed.

And here's a list of suggstions I think would be nice to have... let me know what you think!

[ ] The logo on the titlepage somehow has a white background in the dark-theme... can you make that transparent?

[ ] There seems to be a mixup with the sectioin header levels in the sidebar

[ ] Is it possible to remove the gray background color for the shapes-grid on the titlepage ?

[ ] The User Guide already works really nice.
However, the sections "Installation", "Examples", "API Reference" and "FAQ" somehow act like "standalone files" with an empty "Section Navigation"...   Is it possible that they are part of the section hirachy?

... and one general question:
I see that you allow changes by maintainers for this PR. Is it OK for you if i push changes directly to this PR (e.g. the associated branch of your fork) or would you prefer if i suggest edits as separate PRs to your fork?

I'm comfortable with both. This is my first pull request, and I'm still getting familiar with the workflow of pull requests. Currently, I'm in the process of refactoring the example section, taking inspiration from matplotlib. Once I'm done with the modifications, I'll push all the changes together.

Ok, perfect! Dont hesitate to get in touch if you have any questions or need help!

Hi @raphaelquast
In this version, I modified the Examples section to follow the Matplotlib style. As a result, I added the nbsphinx library. However, this library conflicts with myst-nb, so the previous Jupyter notebook can no longer be rendered proper. I changed two of them to .rst format, but for the 'Jupyter Widgets' section, I couldn't find a suitable solution, so I haven't modified it yet. I looked at Matplotlib's Widgets section https://matplotlib.org/stable/gallery/index.html#widgets and found that their display is still in image form, without interactive features. May change it to a gif display like the other sections in the future?
Here are the answers to your questions:

The logo is now constantly displayed in the top left corner of the documentation, so I removed the logo from the homepage. Most PyData libraries' documentation follows this manner.

"There seems to be a mixup with the section header levels in the sidebar." This displays the page TOC, and was caused by mixed usage of section levels in the rst files. I have corrected this.

"Is it possible to remove the gray background color for the shapes-grid on the titlepage?" This was due to an extra space before shapes-grid. I've removed it, and now it displays correctly.

The "empty Section Navigation" is normal when there's only one file; only the right side shows the page TOC. Matplotlib's documentation is the same way (https://matplotlib.org/stable/users/release_notes.html). Section TOC only have constants when more files are added.

Hi @raphaelquast
The pull request failed to upload coverage to Codecov. Do you have any suggestions on this issue? I only made changes to the docs, and both documentation tests have passed. Theoretically, these changes shouldn't result in any test failures.

Hey, again thanks for your work!!
I am a bit short on time right now, i'll try to review your new changes in the next few days!
2 quick comments:
Codecov servers can be a bit picky sometimes... A re-run usually does the job...
From your comment i see that you implemented a switch from myst_nb to nbsphinx...
The use of myst_nb was quite intentional as it provides (in my opinion) nicer outputs and it allows for more extensive controls (hidden input/output cells, caching, myst markdown syntax in md-cells etc.)
Is there any particular feature that you require from nbsphinx that is not provided bymyst_nb?
If not, i'd very much like to keep using myst_nb for rendering notebooks...

Hi @raphaelquast
I have discovered two libraries that can be used for creating thumbnail galleries: Sphinx-Gallery and nbsphinx.

The Sphinx-Gallery library relies on provided Python scripts.
The nbsphinx library relies on provided Jupyter notebooks.

I attempted to use Sphinx-Gallery, but encountered errorrd when running the EOmaps example script during the make html command. I have created a new branch at https://github.com/Fanchengyan/EOmaps/tree/pydata_docs_gallery, where you can investigate the cause of the error.
nbsphinx successfully generates the gallery page. During my local testing, I discovered that the test_set_extent_to_location function throws an error due to the unavailability of nominatim.openstreetmap.org. I have set it to mask.skip. May this push could pass the CI.

Hey, sorry for the delay!
I had a look at the pydata_docs_galery branch and the error is ineed quite strange and i'm not sure its related to myst_nb at all...
I was able to circuumvent it by changing the way how Maps.BM is instantiated, but I still got a lot of warnings and finally ran into another error: Handler <function update_and_remove_templates at 0x000001EAD82AA320> for event 'html-page-context' threw an exception (exception: navbar-logo.html) which I'm not yet sure where it is coming from...
At this stage I took a step back and started to think that we have to avoid that this PR is getting out of hand...
We shouldn't try to do all at once here in a single PR (this way it'll never finish...)
Let's keep it simple and do one thing at a time?
My suggestion would be the following:

I do like the switch to the pydata theme and I welcome a bit of restructuring of the docs to make it more accessible.
I'd like to keep using myst_nb and I'd also avoid using sphinx_galery for now.

So for this PR, I'd suggest to only focus on switching the theme (and maybe a bit of the structure) without any major changes in the content of the docs.
Does this sound OK for you?
... and just to be clear:
In general I really appreciate your work here and I do support any efforts in making the docs even better!
We can implement a proper galery at a later stage as a separate PR once the new theme is properly implemented.

This sounds ok to me. I'll take a look later to see if there's a better option that is compatible with myst-nb and can also display a gallery. Now, what do I need to do? Should I roll back to a certain commit or submit a new PR?

Hi @raphaelquast
This commit removes nbsphinx; I wrote a simple script to automatically generate the gallery, so it now can continue using myst-nb. Currently, this script only supports ipynb files; it can be expanded to support md files in the future.

Hey @Fanchengyan
Really nice work! Looks like we can get the best of both worlds after all!
A quick questions before I try to find some time for an in-depth look at your changes:

Is there a reason why you have updated some of the baseline-images of the unittests?

Hi @raphaelquast
This is just an attempt to pass the CI. You can ignore it. The CI was failing consistently before. I saw the documentation mentioned updating the baseline, so I tried to update it, but there was no actual difference. The only difference between the two was in the font outlines.

Tests faols are unrelated...  I have to fix the upload token for codecov then all should be fine!
I give my best to have a thorough look at your changes as soon as possibe!

Hey, just a quick follow-up on the codecov-fails (haven't found the time to do a proper review yet) .
The problems occur due to the fact that actions triggered from forks do not have access to repository-secrets (e.g. in this case the codecov upload token).... (more info here)
In general, codecov uploads from forks should automatically use a tokenless upload, but it seems this is no longer working as expected. I've now updated the config to use the latest codecov-upload action (v4).
Can you please rebase to the latest "dev" branch to see if this fixes the upload problems?

OK, I'll have a try.

Hi @raphaelquast
I've merged the latest development code and created a separate library for gallery generation: available at https://myst-sphinx-gallery.readthedocs.io/en/latest/index.html

Hey @Fanchengyan
I looked at your canges and in general the docs look really nice.
However, I'm a bit worried on the galery still.
Again, don't get me wrong here... its a marvellous idea in general, but I think there are some things that need to be considered:
Specifically, I have 2 concerns with the current approach:

Having a completely fresh package (that is not yet available on conda-forge)
as a required dependency for EOmaps docs generation might create problems in the long run once updates are required etc.
You might be motivated to create the package right now, but are you commited to maintaining it for years to come?
While it is of course the way to go in general to make the functionality available for others as well,
I'm still a bit reluctant to have it as a mandatory dependency to build the docs right away.

My second concern is the fact that the galery is now effectively re-built with every attempt to create the docs.
While this is nice to make sure all figures are up to date, it also requires a lot of computational resources
which can be problematic, especially when relying on free services provided for open-source packages.
(e.g. creation runtime on readthedocs is limited...).
Also adding several dependencies as requirements to build the docs complicates the build process.
(version conflicts, longer creation time of the environment etc.)
And finally, the generation of figures that rely on the availability of webmap services might fail randomly due to server issues etc.
(as you already encountered with the nominatim issue)

All of this was the reason why I initially opted for a "manually created static galery" approach that is only re-created locally if necessary.
Now, putting my concerns together, I think that a dynamic galery will create too many issues in the long run, but a doable approach could be that we use your myst-sphinx-galery package to create a static galery locally and then add the created files etc. to the repository (and update if necessary)? What's your opinion on this approach?
We would have to include a short paragrph on how to re-create the galery in the "contribution-guide" but it would
save a lot of resources and maintain a fast build time for the docs with as little dependencies as possible.

Hi @raphaelquast
I personally believe there is no issue with using MyST Sphinx Gallery to generate a gallery:

I am planning to maintain this library long-term. The examples gallery of my other projects has already started using this library for generation. In fact, this library is very simple; it just utilizes sphinx-design to display the grid and PIL to generate small-sized thumbnails (to speed up webpage loading). I have basically implemented the functionality, and it should not require much maintenance in the future. However, I will continue to pay attention to this library, and if anyone proposes new requirements, I will consider incorporating them. Moreover, I have considered forward compatibility with each update, so this library should be quite stable.
Unlike Sphinx Gallery, this library does not execute any code. It merely reads the images referenced in the files for thumbnail generation, providing a top-image for the grid-item-card in the gallery, which is essentially static. In fact, the current gallery files have all been converted to rst files, and the images are ready-made; the code within them is not executed. Even for Jupyter notebooks, the image from the code cell output can be directly extracted, as long as it has been run locally once. Therefore, there is no need to worry about occasional failures in execution. You can refer to Thumbnail Strategies for more information.
The runtime of this library normally does not need to be considered, as the main time consumption in generating the gallery is in creating the thumbnails for given images.

According to a local testing (platform: Mac mini 2), generating the gallery of EOmaps takes about 13 seconds. This is the time it takes when the EOmaps gallery mostly consists of animated images (each frame requires generating a thumbnail, and most eomaps animations have a frame rate of over 100), without animations, the time is almost negligible.
Read the Docs for Community provides a 15-minute build time. Therefore, it is unlikely that generating the gallery will reach this limit.
If the build does hit this limit, you could consider setting the thumbnail to a static image, as the time to generate static images is negligible.

Hi @raphaelquast
In this version, I switched myst-sphinx-gallery from pip to conda and pinned the version to 0.2.2. This way, even if there are issues with subsequent updates, it won't affect this library. Besides, I have added two new feature to myst-sphinx-gallery in version 0.2.2:

It now will print the time taken in the generation of the gallery and thumbnails. This helps to identify any performance bottlenecks in the gallery generation process.
I have added a new configuration to limit the maximum number of frames for the thumbnails. This helps to reduce the total time taken to generate the gallery to about 7.5 seconds in my computer.

Additionally, I made some adjustments to the documentation style of EOmaps to make it more visually appealing:

Changed the default font size to 17px, since the default font size of pydata-sphinx-theme is a bit small.
Adjusted the gallery style for better aesthetics:

Added margins to thumbnails so that they don't stick to the card border.
Reduced the font size of the image descriptions and changed the color to black.

Finally, I still recommend using myst-sphinx-gallery because I've added many new critical features based on the previous code. For instance, previously, I just simply referenced the example images directly, which had two issues:

Inconsistent image proportions: some images are very long while others are quite wide, making the page look unappealing.
Large image sizes: original images are very large, which could slow down the loading speed of the gallery page quite a bit. This will be more significant when adding more examples to the gallery in the future.

myst-sphinx-gallery, however, can automatically generate thumbnails to a consistent small size (Default: (320, 224)), enhancing visual appeal and ensuring optimal page load speed. Besides, it can easily customize the appearance of the gallery and thumbnails using a variety of configuration options.

Hey @Fanchengyan
sorry for my late response!
I'm really grateful and amazed by your work here! Nice to see that you already managed to put  myst_sphinx_galery on conda-forge!
After consideration of your comments I agree that using myst_sphinx_galery provides a lot of benefits compared to the current approach and I'm happy to use it in EOmaps!
I checked your changes and added some minor comments in the code.
In addition, I noticed the following issue:

[ ] Your change to make the image-descriptions black does not work well with the dark-theme...
Can you set the color to white in case the dark-theme is active?

And finally, since none of your code should affect the baseline images for the unittests, can you please remove the updates to the tests/baseline folder  from the PR?
Thanks again for all your work here! The new docs look amazing!

Oh and a design question/suggestion...
I think the emojis in the header are not particularly nice... I'd suggest to remove them. What's your opinion on this?

Perfect! The landing-page looks much cleaner now!
From a first quick look this seems to be ready to be merged! 🥳
Any pending changes from your side still?

This PR looks fine to me now. However, I have a broader suggestion:
Consider duplicating some key examples from the User Guide in the Example Gallery in the future. This would make it easier for users to find relevant examples quickly. In my experience with matplotlib, I often directly search in the examples rather than in the User Guide. User Guide can be linked to each example for users who need more detailed information.

This PR looks fine to me now.

OK nice! Then I'll try my best to merge this as soon as possible and then release a new version including some other pending changes/fixes!

Consider duplicating some key examples from the User Guide in the Example Gallery in the future. This would make it easier for users to find relevant examples quickly. In my experience with matplotlib, I often directly search in the examples rather than in the User Guide. User Guide can be linked to each example for users who need more detailed information.

Yes, I fully agree on that part...  I hope to find some time in the future to also extend the galery to include both more simple examples that just show a specific feature as well as extensive examples showing how far you can go with EOmaps.
The new galery is definitely a big step forward to make this a reality since the thumbnails now allow having a lot of images in the galery without slowing down the browser too much!

Hey, I made some minor adjustments to fix remaining issues:

Updated dependencies to latest versions

Fixed remaining sphinx-build warnings

Fixed decrease in code-coverage due to no longer tested examples and doc-codeblocks

All code-blocks found in the documentation that have a tag ":id: test_...." are automatically parsed and run as unittests.
The re-structuring of the docs broke this since previously it was assumed all source files are in the same folder.
The same is true for the examples (.py files have previously been used to auto-generate unittests for each example)
Now a recursive glob-pattern is used to ensure all files are properly checked for codeblocks.

I did some more re-structuring and fine-tuning of the docs:

Removed left/right sidebar on pages where they are not needed
Removed intermediate pages from the User guide in favor of a richer landing-page
Shortened all titles as much as possible so that most of them fit properly in the sidebars
Fixed some issues with the auto-generated pages for the "reader" methods
Re-structured the API docs landing-page a bit to make it less crowded

I think with those final changes the new docs are ready to be released!
Thanks again for all your work here! It really helped to make the docs a lot better!

Its done! 🥳
Big thanks for all your efforts here! Hope we can collaborate again in the future!


Resetting dropped connection

Hi,
I am frequently getting Resetting dropped connection from my UUT, are we reusing the same HTTP session?
Any other methods to avoid this this error?
A snapshot from robot test log

Thanks
Malli

Which version of robotframework-requests are you using ?

VERSION = '0.3.9'

Thanks. Thats the latest release.
We dont reuse sessions.
Not sure why you are getting that error. Try with a bigger request timeout ?

It came from urllib https://github.com/shazow/urllib3/blob/master/urllib3/connectionpool.py#L240
Not to do any with this package because it's uses internally

robot requests -> requests -> urllib3

urllib3 snippet
# If this is a persistent connection, check if it got disconnected
        if conn and is_connection_dropped(conn):
            log.info("Resetting dropped connection: %s" % self.host)
            conn.close()
            if getattr(conn, 'auto_open', 1) == 0:
                # This is a proxied connection that has been mutated by
                # httplib._tunnel() and cannot be reused (since it would
                # attempt to bypass the proxy)
                conn = None


Update README.md

Dear Airflow maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[ n/a ] My PR addresses the following Airflow JIRA issues and references them in the PR title. For example, "[AIRFLOW-XXX] My Airflow PR"

https://issues.apache.org/jira/browse/AIRFLOW-XXX

Description

[ ✅ ] Here are some details about my PR, including screenshots of any UI changes:

Added myself to the Grand Rounds list of Airflow users.

Tests

[ n/a ] My PR adds the following unit tests OR does not need testing for this extremely good reason:

Commits

[ n/a ] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Codecov Report

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

@@           Coverage Diff           @@
##           master    #2780   +/-   ##
=======================================
  Coverage   73.37%   73.37%
=======================================
  Files         157      157
  Lines       11935    11935
=======================================
  Hits         8757     8757
  Misses       3178     3178

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update faa9a52...7bb29e4. Read the comment docs.


DataContext bindings in ControlTemplate leak memory

Describe the bug
Having a datacontext binding in a ControlTemplate, like:
<TabStrip.Styles>
  <Style Selector="TabStripItem">
    <Setter Property="Template">
      <ControlTemplate>
        <DockPanel>
          <TextBlock x:DataType="avaloniaBugs:BigFileViewModel" Text="{CompiledBinding Title}" />
        </DockPanel>
      </ControlTemplate>
    </Setter>
  </Style>

leads to memory leaks. This can be workaround with an ItemTemplate, I think this use case should either work as expected or it should be be completely disallowed with a xaml compiler error.
To Reproduce

git clone https://github.com/BAndysc/avalonia-bugs-repro
git checkout bug_template_binding_leak
Run the app with a memory profiler, i.e. dotMemory
Press "New Tab"
Close the tabs
Observe the memory is not freed

Without bindings in Template:
Open MainWindow.axaml, comment lines https://github.com/BAndysc/avalonia-bugs-repro/blob/bug_template_binding_leak/AvaloniaBugs/MainWindow.axaml#L25-L26
Do the same steps - memory will be freed now.
Expected behavior
No response
Avalonia version
0.10, 11.0.x and latest nightly
OS
No response
Additional context
No response

There are two leaks here:

The first one and main one leaking all items is from the binding to #Root in https://github.com/BAndysc/avalonia-bugs-repro/blob/bug_template_binding_leak/AvaloniaBugs/MainWindow.axaml#L25 and is fixed in #15485

The second one is leaking only the last selected item and is fixed in #15446

The remaining problem here is that SelectionChanged isn't raised when the items collection is cleared (despite SelectedItem being changed). Because of that issue, the handler setting SelectedValue isn't being called.

@MrJul  another unhandled scenario from this example is this https://github.com/AvaloniaUI/Avalonia/discussions/15455. Do I create a new issue?


Can we reduce polyline smears on steep slopes?

Polylines on terrain smear on steep slopes, since it's similar to a shadow volume:

var viewer = new Cesium.Viewer('cesiumContainer');

var positions = Cesium.Cartesian3.fromDegreesArray([
    -122.17580380403314, 46.19984918190237,
    -122.17671567204553, 46.196577275143326,
    -122.17190167749244, 46.19583668275485
]);

viewer.entities.add({
    polyline : {
        positions : positions,
        width : 32,
        material : new Cesium.PolylineGlowMaterialProperty({
            glowPower : 0.2,
            color : Cesium.Color.BLUE
        }),
        clampToGround : true
    }
});

viewer.camera.lookAt(positions[0], new Cesium.Cartesian3(0.0, 0.0, 5000.0));
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);

(Note that this won't work until https://github.com/AnalyticalGraphicsInc/cesium/pull/6689 is merged)
We compute local terrain slopes for materials on ground primitives using the globe depth texture (this is something like screen-space partial derivatives), so I wonder if we could use these to help reduce smear.
Currently the algorithm for determining if a fragment is part of the polyline checks the distance between the fragment's position (derived from globe depth texture) and a plane, but if we had a local terrain slope we could do a ray-plane check instead of point-plane distance.
In addition to effectiveness we'd also want to evaluate the performance hit for this. Since it's much less noticeable for narrower lines, maybe it can be a toggleable option if it's too slow.
See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/Source/Shaders/ShadowVolumeAppearanceFS.glsl#L28

Hm. On a second reading, turns out "Deferred Vector Map Visualization" does this already. Yay! Not such unknown waters after all.