Supporting datetime indices

Is your feature request related to a problem? Please describe.
When we load a pandas series as input data, Python datetime indices are not supported by sktime, only simple numerical indices are supported.
Describe the solution you'd like
The datetime index provides much more clarity while plotting and analyzing the data. Sktime must support series that have a datetime index and add appropriate computations in the datetime context.
Describe alternatives you've considered
I have tried using the numerical index, but it does not clearly indicate the unit of the time, whether it represents seconds, minutes, days, weeks, or months.
Additional context
More details about this are posted in this Bug : https://github.com/alan-turing-institute/sktime/issues/346

Thanks for creating the issue and volunteering to work on this!
I think you already identified the main parts of the code where changes would have to be implemented: the handling of observation (oh) and forecasting horizons (fh).
Adding support for date time indices will also require a lot more extensive unit testing. Some package that we interface may not support date time indexing (e.g. pmdarima as far as I remember).

As far as I've seen, the arima class of the pmdarima package wraps the statsmodel's ARIMA. And it appears that statsmodels supports date time indexing. Source : https://alkaline-ml.com/pmdarima/1.0.0/_modules/pmdarima/arima/arima.html
I will do elaborate Unit testing anyway after making appropriate code changes. Can you please assign this to me?

@mloning, would it perhaps also be a good time to think about the API and use of indices? Currently, the API is integer index (iloc) based, and time indices are ignored both in application of algorithms, and in the horizon interface, if I'm not mistaken. Shall we think about specs?

Alright @mloning, @shruthibalaji2307, I made a proposal on how support for datetime indices could look here, please have a look at this wiki page.
There are two versions, and the "luxurious" version relies on a bit o a re-work of input/output checks that allow for multiple input/output types, I've also added a design for that to the wiki.
Comments and criticism very much appreciated.
I'd prefer the luxurious version, but it might be a bit of work to implement.

Hello @fkiraly , I took a look at your design document. As I was going through the sktime repository, I was also inclining toward something along the lines of the luxurious implementation you have mentioned.
However, I was wondering how the input types like dataframes (univariate/multivariate) will be passed on to the statsmodel/pmdarima forecasters during fit and predict. I know that pmdarima accepts a pandas series with a datetime index as input. But how will dataframes be handled?

However, I was wondering how the input types like dataframes (univariate/multivariate) will be passed on to the statsmodel/pmdarima forecasters during fit and predict. I know that pmdarima accepts a pandas series with a datetime index as input. But how will dataframes be handled?

Well, if a given model can't handle it, it will throw an error, e.g., a ValueError "this model cannot handle multivariate series :-(" or similar. Perhaps we want to have some estimator tags on what inputs an implemented methods can handle, similar to the experimental sklearn estimator tags.

Closed by #392


[MacOS] Shiny surfaces showing skybox texture when lights are off

Currently trying to see if I can see this in any other stages, but in dataDyne Extraction, if you turn Night Vision off and look at the silvery trim pieces, you can see the skybox texture.

Using the latest build as of posting.

This is not OSX specific. nor 64-bit specific. Known issue (#404, #101). I'll close this as a dupe.


Remove unnecessary null pointer checks

An extra null pointer check is not needed in functions like the following.

Engine::Shutdown
MeshRenderer::Release
VulkanApp::CleanupSwapChainResources

https://github.com/flingengine/FlingEngine/pull/176


stubConstructor does not stub base class methods

Steps to reproduce:

Have a base class with a method named "foo"
Extend the base class and add a method named "bar"
Use stubConstructor to stub methods of the latter class

Code sample:
class A {
  foo() {
    return 'a';
  }
}

class B extends A {
  bar() {
    return 'b';
  }
}

const stubbedB = stubConstructor(B);

console.log(stubbedB.bar) // [Function: functionStub]
console.log(stubbedB.foo) // undefined

Is there some kind of work around for this? I guess an interface that defines all methods?
Would this be a difficult thing to fix? I may be able to help.

I'm having a similar problem.
I haven't been able to find a way to stub parent methods in a child class.
A sample code to demonstrate:
import express from 'express';
class BaseController {
  error(res: express.Response, errorMessage: string, statusCode: number) {
    res.status(statusCode).json(errorMessage)
  }
}

class AuthController extends BaseController {
  constructor() { super() }
  verifyAuthToken(req, res, next) { // normal express.js style for controllers
    const token = getToken() // imagine this was a function that returns some auth token
    if (token === undefined) {
      super.error(res, 'Auth token not provided', 400);
    }
  }
}

I had some code similar to what's above and I wanted to write a test to make sure when the token is undefined, the error method on the parent class will be called. But I could not test that the error method was called:
import { stubObject, stubInterface, stubConstructor } from "ts-sinon";
import { expect } from "chai";

const authServiceStub = stubObject<AuthService>(authService);

describe('AuthService', () => {
  describe('verifyAuthToken method', () => {
      it('should call super.error when no getToken returns undefined', () => {

        ....

        authServiceStub.verifyAuthToken(req, res, next)
        expect(authServiceStub.error.callCount).to.be.equal(1)
        expect(authServiceStub.error.calledWith('Auth token not provided')).to.be.true
      })
  })

When I run the test, I get the following error: TypeError: Cannot read property 'callCount' of undefined
Please I really need help on this! Is there a specific way to create stubs for parent methods of a class?

Is there some kind of work around for this? I guess an interface that defines all methods?
Would this be a difficult thing to fix? I may be able to help.

I'm having a similar problem.
I haven't been able to find a way to stub parent methods in a child class.
A sample code to demonstrate:
import express from 'express';
class BaseController {
  error(res: express.Response, errorMessage: string, statusCode: number) {
    res.status(statusCode).json(errorMessage)
  }
}

class AuthController extends BaseController {
  constructor() { super() }
  verifyAuthToken(req, res, next) { // normal express.js style for controllers
    const token = getToken() // imagine this was a function that returns some auth token
    if (token === undefined) {
      super.error(res, 'Auth token not provided', 400);
    }
  }
}

I had some code similar to what's above and I wanted to write a test to make sure when the token is undefined, the error method on the parent class will be called. But I could not test that the error method was called:
import { stubObject, stubInterface, stubConstructor } from "ts-sinon";
import { expect } from "chai";

const authServiceStub = stubObject<AuthService>(authService);

describe('AuthService', () => {
  describe('verifyAuthToken method', () => {
      it('should call super.error when no getToken returns undefined', () => {

        ....

        authServiceStub.verifyAuthToken(req, res, next)
        expect(authServiceStub.error.callCount).to.be.equal(1)
        expect(authServiceStub.error.calledWith('Auth token not provided')).to.be.true
      })
  })

When I run the test, I get the following error: TypeError: Cannot read property 'callCount' of undefined
Please I really need help on this! Is there a specific way to create stubs for parent methods of a class?

I guess the workaround might be to use stubInterface and manually stub all the methods you need for a specific test, however, this is not ideal.

Have the same issue. Any ideas?

@laleksiunas @Emmytobs @joshystuart
I've dug into it a little, and found out that it works when I transform my typescript code to ES5. Everything above that doesn't work. It's connected with Object.getPrototypeOf() and classes in >ES5. Check your tsconfig.json settings, and please confirm if it works for you as well with ES5.

I've created a pull request which should resolve this issue. Please check it.


pyarrow 3.0 - fetcharrow causes kernel to die when using table.schema or table.to_pandas

Interestingly enough, table.num_rows prints out the correct number of rows, but when I try to do anything with the table my kernel will crash for no reason.
I tried:
table.to_pandas()
table.schema
ds.write_dataset(table)

I also tried fetching batches and iterating over them, but it crashed my kernel no matter what.
pyarrow 3.0.0
fsspec 0.8.4
adlfs v0.5.9
pandas 1.2.1
numpy 1.19.5
turbodbc 4.1.1

Hi,
as we currenlty working on a release where the limit of pyarrow<2.0.0 is removed I was looking into this issue.
So far I can not reproduce it with the current information.
I guessed that ds is import pyarrow.dataset as ds.
With this I can not reproduce it as the ds.write_dataset requires more arguments. As this is a pyarrow function I would assume that if this crashes it is an arrow issue.
But if you can share more details and maybe a reproducing example we can have a look.

My guess is that the segmentation fault comes from the fact that turbodbc was compiled against a different pyarrow version as you are currently using.

pyarrow is only ABI-compatible in patch releases.

Hi yes - I was able to install turbodbc a bit after this with pyarrow 3.0 and everything is working. It is possible that my image had a cached version of pyarrow installed with pip instead of conda-forge or something silly.


Tab SvgIcon with label is not centred

Problem Description
SvgIcons are not centred on tabs with labels:

Versions

Material-UI: v0.15.0-alpha1
React: 0.14.7
Browser: Chrome 48.0.2564.116 m (Windows 7)

I can see a fix for this so I'm forking; PR to come.


29 swagger documentation

Description
Add Swagger Documentation for API using swagger-ui-react and SCSS.
Overview
This pull request introduces Swagger documentation for our API, utilizing the swagger-ui-react library for seamless integration and SCSS for custom styling. The implementation aims to enhance our API's accessibility and usability by providing an interactive interface for exploring the available endpoints, request/response schemas, and other relevant details.
Changes
Swagger UI Integration:

Installed swagger-ui-react to embed the Swagger UI component within our application.
Configured Swagger UI to load the API specification from the designated YAML or JSON file.

Styling with SCSS:

Applied custom styles using SCSS to ensure the Swagger UI aligns with our application's look and feel.
Created a dedicated SCSS file for styling the Swagger documentation page.

Documentation Page:

Added a new route/page in the application to display the Swagger UI.
Ensured the page is responsive and user-friendly, providing a clear overview of the API capabilities.

Summary by CodeRabbit

New Features

Introduced a new AuthButtons component for authentication actions.
Added a CustomDrawer component for responsive navigation.
Implemented ApiDocumentation component for displaying API documentation using Swagger UI.
Enhanced localization support with new language entries for navigation.

Styling Enhancements

New SCSS files for various components to improve styling and responsiveness, including buttons, modals, and API documentation sections.
Added responsive design mixins for better adaptability across screen sizes.

Documentation

Updated localization files for English and Ukrainian languages, enhancing user experience through improved accessibility.

Dependencies

Updated and added new dependencies in package.json for improved functionality.

@coderabbitai full review

@coderabbitai review

@coderabbitai full review

@coderabbitai full review

@coderabbitai full review

@coderabbitai full review

@coderabbitai full review

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days
To keep it active, please make a new commit to trigger a redeployment

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days
To keep it active, please make a new commit to trigger a redeployment

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days
To keep it active, please make a new commit to trigger a redeployment

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days
To keep it active, please make a new commit to trigger a redeployment

Deployment has started for version: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days
To keep it active, please make a new commit to trigger a redeployment

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days
To keep it active, please make a new commit to trigger a redeployment

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.

The deployment process for the sandbox has started.
Please wait until the latest version is ready

The deployment process for the sandbox has started.
Please wait until the latest version is ready

Latest Version is ready: http://sandbox-test-29-swagger-documentation.s3-website.eu-central-1.amazonaws.com
This deployed website will be automatically deleted after 7 days.
To keep it active, please make a new commit to trigger a redeployment.


upadate hello_watchdog for picostdlib 0.2.7 (+ bug )

A little at a time I update the sample files.
To avoid problems I do one at a time, even if this maybe is more expensive.

https://github.com/beef331/picostdlib/issues/25 Do not worry about this @casey-SK has promised to make new examples.

goood !!!!!!


Requirements could not be resolved to an installable set of packages

"require": {
"laravel/framework": "4.1.*",
"codesleeve/asset-pipeline": "dev-master"
},
cmd
c:\project-name>composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for codesleeve/asset-pipeline dev-master@dev -> satis
fiable by codesleeve/asset-pipeline[dev-master].
- codesleeve/asset-pipeline dev-master requires ext-fileinfo * -> the reques
ted PHP extension fileinfo is missing from your system.
I dont know what is going on?
help!

I also have fileinfo module enabled and my composer install is still throwing this error:
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for codesleeve/asset-pipeline dev-master -> satisfiable by codesleeve/asset-pipeline[dev-master].
- codesleeve/asset-pipeline dev-master requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
To enable extensions, verify that they are enabled in those .ini files:
- /usr/local/lib/php.ini
You can also run php --ini inside terminal to see which files are used by PHP in CLI mode.


memory on Ubuntu

We have been running a server command line program that uses about 80GB of memory (scraping and data processing) with lots of concurrent threads.
The programs run on both Ubuntu and Windows server under Netcore 3.0 preview (same size of VM on Azure with 120GB of memory). Until preview 3 everything worked flawlessly with similar resource consumption on both Windows and Ubuntu.
But with Preview 4 the Ubuntu version regularly runs out of memory while the Windows version seems to work as before.
We now reverted back to Preview 3 and the program now runs fine again.
The program runs with server garbage collection:
 <PropertyGroup>     <ServerGarbageCollection>true</ServerGarbageCollection>     <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>   </PropertyGroup>
Were there any changes in memory management from Preview 3 to 4 that could cause these problems and any way to mitigate them?
PS: I might have answered my own question. When running with ConcurrentGarbageCollection=false the memory consumption on Preview 3 decreases a lot. I'll try Preview 4 with that setting next.
Update: Yes memory consumption is much reduced with ConcurrentGarbageCollection=false. It would be great to have this information more easily available (I don't really know what this settings does either  way).

@Maoni0 @brianrob @billwert @adamsitnik anything we should do here?
Looks like some change in P3->P4 changed (maybe) GC behavior ... is it interesting for us to track it down?

we know on Linux there's a problem with the BGC thread affinity which would make memory usage go up because it would make BGC last a lot longer but that problem has been there. @janvorli recently fixed it: https://github.com/dotnet/coreclr/pull/24801. @janvorli do you think there could be some intermediate change from preview 3 or 4 that would make this problem not exist in preview 3 (eg, maybe server GC threads were not affinitized on linux in p3)?


🌱 Only return PRs associated with recent commits

Please check if the PR fulfills these requirements

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] PR title follows the guidelines defined in  https://github.com/ossf/scorecard/blob/main/CONTRIBUTING.md#pr-process

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Only returns PRs used to merge recent commits if any. None otherwise.

Fixes #1524. Part of #575.

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
No.

Codecov Report

Merging #1562 (2863b41) into main (6962fb4) will decrease coverage by 0.11%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main    #1562      +/-   ##
==========================================
- Coverage   53.04%   52.93%   -0.12%
==========================================
  Files          70       70
  Lines        6155     6168      +13
==========================================
  Hits         3265     3265
- Misses       2683     2696      +13
  Partials      207      207

Ok I need some inputs here @laurentsimon @naveensrinivasan @justaugustus - if we get the PRs from commit.associatedPR instead of the repository, the behavior is different on some repos like forks. Basically, forks do not have any PRs, so GitHub APIs return no PRs on forks. But with commit.associatedPR, GitHub recognizes that the commit has a PR on the original repo so it returns that PR as part of commit.associatedPR. Now, the question is, is this a behavior we want?
I personally think this is the right behavior, since we want to analyze "commits" not PRs. Commits might come from Gerrit, Prow or a GitHub PR of a different repo and we should be able to recognize that. What do you folks think?

Ok I need some inputs here @laurentsimon @naveensrinivasan @justaugustus - if we get the PRs from commit.associatedPR instead of the repository, the behavior is different on some repos like forks. Basically, forks do not have any PRs, so GitHub APIs return no PRs on forks. But with commit.associatedPR, GitHub recognizes that the commit has a PR on the original repo so it returns that PR as part of commit.associatedPR. Now, the question is, is this a behavior we want?
I personally think this is the right behavior, since we want to analyze "commits" not PRs. Commits might come from Gerrit, Prow or a GitHub PR of a different repo and we should be able to recognize that. What do you folks think?

Let's discuss further on #575. I was able to figure out how to keep the current behavior unchanged, but this is something we should consider.

Ok I need some inputs here @laurentsimon @naveensrinivasan @justaugustus - if we get the PRs from commit.associatedPR instead of the repository, the behavior is different on some repos like forks. Basically, forks do not have any PRs, so GitHub APIs return no PRs on forks. But with commit.associatedPR, GitHub recognizes that the commit has a PR on the original repo so it returns that PR as part of commit.associatedPR. Now, the question is, is this a behavior we want?
I personally think this is the right behavior, since we want to analyze "commits" not PRs. Commits might come from Gerrit, Prow or a GitHub PR of a different repo and we should be able to recognize that. What do you folks think?

LGTM at first sight.


Backslashes not handled properly

Splunk 6.4.0
App Version 5.2.0
Path - /en-US/app/SplunkforPaloAltoNetworks/threat_detail
No data is shown when clicking through on the drill down for a user with the domain "". This appears to be from the backslash not being escaped. The first pic shows no data when using a single slash and the second shows an escaped backslash.

Thanks again for submitting issues.  Looking into this one.

Relates to pull request #27


fix(mac): suppress duplicated media permission prompt

Issue: https://github.com/tauri-apps/tauri/issues/8979
Original fix: #1101

#1101 fixed the issue that the prompt does not show up on macOS 14.0 hence the request always being denied.
In https://github.com/tauri-apps/tauri/issues/8979, the behavior seems to have changed back on macOS 14.2; we should also revert the fix.

I've tested it on my macOS 14.2.1. It would be better to have a second check.
A minimal testing repo: https://github.com/pewsheen/tauri-media-permission/

Is there a chance that this broke getDisplayMedia? I am unable to get the getDisplayMedia permissions prompt and when adding a
        const stream = await navigator.mediaDevices.getDisplayMedia({
          video: true, // Screen capture
          audio: false, // No audio capture
        });

to your test repo for tauri-media-permissions, it once again gives the same
"Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission."
error without a permissions prompt.

What's your OS version and did you run the repo by tauri dev or the bundled .app application?

Wil. I've tried both bundled and tauri dev both result in the same perms error. Here is my info.
[✔] Environment
    - OS: Mac OS 14.4.0 X64
    ✔ Xcode Command Line Tools: installed
    ✔ rustc: 1.76.0 (07dca489a 2024-02-04)
    ✔ cargo: 1.76.0 (c84b36747 2024-01-18)
    ✔ rustup: 1.27.0 (bbb9276d2 2024-03-08)
    ✔ Rust toolchain: stable-aarch64-apple-darwin (default)
    - node: 20.10.0
    - pnpm: 8.14.1
    - npm: 10.2.3
    - bun: 1.0.25

[-] Packages
    - tauri [RUST]: 2.0.0-beta.11
    - tauri-build [RUST]: 2.0.0-beta.9
    - wry [RUST]: 0.37.0
    - tao [RUST]: 0.26.1
    - @tauri-apps/api [NPM]: 2.0.0-beta.5
    - @tauri-apps/cli [NPM]: 2.0.0-beta.9

[-] App
    - build-type: bundle
    - CSP: unset
    - frontendDist: ../dist
    - devUrl: http://localhost:1420/
    - framework: Svelte
    - bundler: Vite

Happens even in a brand new project. I'd be interested in seeing what's different in a working example on your end from what's going on with me.


Fix typo on a word on french documentation

This pull request corrects a typo on french documentation.

/lgtm
/approve

@maximeancellin ,thank you for your contribution.
You must sign the CLA for teams of kubernetes/website to do code reiview.
Please click on the red button NOT COVERED line in the first comment.
If you don't know how to do it, here isthe CLA tutorial.

Hi,
The easyCLA certificate has signed.

/retest

@maximeancellin Can you push another commit? The deploy preview did not build.


docs: update PixelCopter action space notes

Update unit 4 notes on PixelCopter action space from [up, down] to [up, nothing] to match PixelCopter single active action (pressing accelerator).
closes #315

Thanks LGTM I'm checking the results and merge it 🤗

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Save extra info about each list item

So i´ll first describe my use case: Im using awesomeplete with google places API, so basically, im populating the _list collection for the awesomplete on the location input with an async call to google´s API, for each item i have plenty of information such as geometry and a google_place_id which identifies the given place.

I't would be nice if i would be able to retrieve that data from the autocomplete selection, so whenever the awesomplete-selectcomplete event is fired, the data attached to the given item is available.
I will mostly sure add this and use a customized version of the library but i can add this to a PR if anybody likes the idea.

LoL i never saw this #16938 my bad

Currently we support a separate label and value for each suggestion (the original array of strings, objects or arrays). See docs http://leaverou.github.io/awesomplete/#basic-usage
Additional properties are not directly possible due to API backward compatibility shim we use right now https://github.com/LeaVerou/awesomplete/blob/b757022a728a9f825c545f2235b99c5e98a85874/awesomplete.js#L302-L315. See explanation here  https://github.com/LeaVerou/awesomplete/issues/16888#issuecomment-218536654
But this would be a really nice feature to have.

@jandramila so did you work out a customized solution? I'm facing the same problem right now so I'd love to hear your solution (I can't work it out :( )

Yea, i achieved it, but it only works when you programmatically set list items, i just added extraData to these lines:
...
// Private functions

function Suggestion(data) {
	var o = Array.isArray(data)
	  ? { label: data[0], value: data[1] , extraData: data[2]}
	  : typeof data === "object" && "label" in data && "value" in data ? data : { label: data, value: data };

	this.label = o.label || o.value;
	this.value = o.value;
	this.extraData = o.extraData;
}
Object.defineProperty(Suggestion.prototype = Object.create(String.prototype), "length", {
	get: function() { return this.label.length; }
});
Suggestion.prototype.toString = Suggestion.prototype.valueOf = function () {
	return "" + this.label;
};
...

I´m using my own awesomplete customized version on a react app, you can refer the list via jQuery selector or whatever, in my case, i use a component ref:
autocompletesReference.location._list = predictions.map( (prediction) => {
    return {
        label: prediction.description,
        value: prediction.description,
        extraData: {
            googlePlaceId: prediction.place_id
        }
    }
});

So by doing this, you wont be able to set items list on html or with inline data via attributes, but is also easy to handle the _list property via JS, so it should not be much of a problem.
If you have any question just ask.

Hi!
Here is my workaround without changing the awesomeplete itself.

In the item we'll store the entire object with all needed data, not just string value  (see data() function). And to show the string value, we'll use replace() function:

this.autocompleter = new Awesomplete(this.searchInput,{
            list: [],
            autoFirst: true,
            data: function (item, input) {
                return {value: item, label: item.description};
            },
            replace: function(suggestion){
                this.input.value = suggestion.value.description;
            }
});

Then I use 'awesomeplete-selectcomplete' event to work with selected element data:

$(this.searchInput).on('awesomplete-selectcomplete', function(ev){
         console.log(ev.originalEvent.text.value); //here you'll have the entire object with all data you need.
});

Well I think I found a way to make this work. At least in my case.
A typical response from my backend looks like follows:
[
    {id: 1, name: "New York", about: "The great city of New York"},
    {id: 2, name: "Chicago", about: "Famous Chicago"},
    …
]

First of all, I save entire response after fetching the response. I use item index as the value. I set the label as well so Awesomplete filtering can work, but it doesn't matter as I do server-side filtering.
let results = [];

$.getJSON(url, {term: inputText}, response => {
    results = response;
    awesomplete.list = response.map((item, idx) => ({value: idx, label: item.name}));
    awesomplete.evaluate();
});

I build list items by myself. Notice the idx property passed by Awesomplete. I use it to render the item from the response.
item: (suggestion, item, idx) => {
    // get current result
    const result = results[idx];

    const span = document.createElement('span');
    span.innerText = result.about;

    const node = document.createElement('li');
    node.innerText = result.name;
    node.appendChild(span);

    return node;
},

I attach to the awesomplete-select event so I can override the value which will appear in my input. I store selected response item:
let result = null;

input.addEventListener('awesomplete-select', event => {
    result = results[event.text.value];
    event.text.value = event.text.label;
});

Et voilà:
input.addEventListener('awesomplete-select', () => {
    console.log(result);
});


Local JSON file upload using PUT method modifies file.

Summary

I have to upload a local JSON file to the s3 using the s3 public URL. I am using the PUT method with formData to upload the file. The file is being successfully uploaded but the contents of the file are modified. To be more precise, the contents are appended by the headers of the request.
Simplest Example to Reproduce

I am using the following code to upload the file.
// Let the name of the file be **test.json**. The contents are as following:
{
    "a": "1",
    "b": "2"
}

// code starts here
const url= 'some s3 path url';
const options = {
    method: 'PUT',
    uri: url,
    headers: {
        'x-amz-acl': 'bucket-owner-full-control'
    },
    formData: {
        file: fs.createReadStream(path.join('./test.json'))
    }
};
request(options, function (error, response, body) {
    if (error) throw new Error(chalk.bold.red(error));
    if (response.statusCode != 200) {
        console.error(JSON.stringify(response.body));
        return;
    }
    console.log(chalk.green.bold(response.statusCode));
})

Expected Behavior

The file should get uploaded to S3.
Current Behavior

The file gets uploaded to the S3 bucket but the contents inside the file are modified.
The new contents of the file are:
----------------------------054810111042388555675130
Content-Disposition: form-data; name="file"; filename="test.json"
Content-Type: application/json

{
    "a": "1",
    "b": "2"
}
----------------------------054810111042388555675130--

Possible Solution

I guess the problem is that when I open the stream the headers for the request are written first then the contents?
Context

Your Environment

software
version

request
^2.88.0

node
11.4.0

npm
6.9.0

Operating System

I had a similar problem in the context of S3 with pre-signed URL's.
This issue provides a partial answer;
https://stackoverflow.com/questions/55675275/uploading-file-through-node-request-using-aws-s3-pre-signed-url
The partial solution is to replace the formData portion with just body:  fs.readFileSync(path.join('./test.json')) and include a content length header, and it worked in my case (PUT to an S3 pre-signed url), but the problem is that the body is presented as a buffer in memory not as a stream, which is undesirable for large files.
Request docs indicate that body may also be a stream, but in my case setting body to fs.createReadStream(..) produces a Forbidden response, so still looking for a solution to that.


Add e2e tests for recurring runs

Description
Add e2e tests for recurring runs
How Has This Been Tested?
No need for tests. Just check if e2e test will run successfully in this PR
Merge criteria:

[X] The commits are squashed in a cohesive manner and have meaningful messages.
[X] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[ ] The developer has manually tested the changes and verified that the changes work

/retest

/retest

/test precommit

/test all

/retest

/approve


Error on initializing the Platform.Bible app

Below error is logged when PlatForm.Bible is initializing .
[2024-04-02 13:27:24.448] [info]
[dotnet data provider]
Request type "object:platform.paratextFolders-ParatextStandard-psi-data.get" successfully registered with the server
Registering handler for request type object:platform.paratextFolders-ParatextStandard-psi-data.function...
[/dotnet data provider]
[2024-04-02 13:27:24.449] [info]  [dotnet data provider] Request type "object:platform.paratextFolders-ParatextStandard-psi-data.function" successfully registered with the server
[2024-04-02 13:27:24.456] [info]  [dotnet data provider] Adding Paratext project in map: 32664DC3288A28DF2E2BB75DED887FC8F17A15FB = C:\Users\rupa_.platform.bible\projects\WEB_32664dc3288a28df2e2bb75ded887fc8f17a15fb\project\paratext
[2024-04-02 13:27:24.644] [info]
[dotnet data provider]
Failed to load project for [C:\Users\rupa_.platform.bible\projects\WEB_32664dc3288a28df2e2bb75ded887fc8f17a15fb] = [WEB (32664DC3288A28DF2E2BB75DED887FC8F17A15FB): paratextFolders, ParatextStandard]: System.ArgumentException: WEB - World English Bible USA without Strong's numbers has the same ID as WEB - World English Bible USA without Strong's numbers and was not loaded.
at Paratext.Data.ScrTextCollection.AddProjectToIndex(ScrText scrText, Boolean checkAlreadyExists)
at Paratext.Data.ScrTextCollection.AddInternal(ScrText scrText, Boolean skipChangeNotify, Boolean checkAlreadyExists)
at Paratext.Data.ScrTextCollection.Add(ScrText scrText, Boolean skipChangeNotify, Boolean checkAlreadyExists)
at Paranext.DataProvider.Projects.LocalParatextProjects.AddProjectToMaps(ProjectDetails projectDetails) in C:\Repos\paranext-core\c-sharp\Projects\LocalParatextProjects.cs:line 163
at Paranext.DataProvider.Projects.LocalParatextProjects.Initialize() in C:\Repos\paranext-core\c-sharp\Projects\LocalParatextProjects.cs:line 62
[/dotnet data provider]

This issue was resolved after the restructuring of the project folder. I do not see this error anymore.


Not improvement of  the draft genome assembly after running Nanopolish

Hi Jared,
I complete all the steps for Nanopolish (first with the E. coli example and then with  my Nanopore reads). When I evaluated the assembly, I got the same number of contigs as the draft assembly and also the draft dnadiff and polished dnadiff report  [Alignments ] 1-to-1 both gave the same values.
I supposed that after polishing, I got an improvement in position and direction of the contigs.
Waiting for your answer.
Thanks
Laura

Hi,
I need more information to help you. Can you send me the output that was printed to the screen when you ran nanopolish?
Jared

Hi Jared,
I attached here the output file, hope it will help.
Thanks
Laura
On 6 March 2018 at 16:21, Jared Simpson<EMAIL_ADDRESS>wrote:

Hi,
I need more information to help you. Can you send me the output that was
printed to the screen when you ran nanopolish?
Jared
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jts/nanopolish/issues/353#issuecomment-370796081, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AhjxWaqgsLB5xPoFK37iHzuVjTzS-E93ks5tbptPgaJpZM4Seddq
.

Hi,
Sorry but I don't see the attachment.
Jared

Hi Jared, Here I uploaded again the output file.
Thanks
Laura
nanopolish_log (1).log

A few observations from that output file:
-The number of reads that nanopolish is using is very lower (typically only 12-14). This is too low of depth to have good polishing results. 50-100 is recommended.
-It appears that only 5kb of the draft assembly was polished (positions 95,000-99,900). Is this the complete output file?
Jared


Consider testing against Django versions 1.4, 1.4.1, 1.4.2, 1.4.3

In current test suite there are 2 places with conditions related to these versions.
Here and here
Also in travis config there are only latest versions of 1.4, 1.7, 1.8 and master branches.
My question is - Should we drop these conditions or add old Django version to config?
Personally, I prefer to drop.

I agree. Drop. We'll support the latest version of Django 1.4 until it's end of life. But we're not doing more than that.


Direct sequence of events

Hi,
first of all, thank you for developing and maintaining this great project. What I will explain next is probably no technical issue. I'm using the TypeScript API and want to detect three subsequent "error" events in a stream of events.
Each event has a type property and I tried to define a rule that is similar to the rule defined for https://github.com/jruizgit/rules/blob/master/docs/js/reference.md#correlated-sequence
This rule should trigger the action if three events of type error are posted right after each other, e.g. "info ok error error error", but not if there are other events in between, e.g. "info error ok error error".
This is my code:
import * as d from 'durable';
const { m, s, c } = d;
let counter = 0;

function createId(): string {
    counter += 1;
    return Date.now() + ' ' + counter;
}

const set: any = d.ruleset('test',
    {
        whenAll: [
            c['id0'] = m['type'].eq('error'),
            c['id1'] = m['type'].eq('error'),
            c['id2'] = m['type'].eq('error'),
        ],
        run: (c) => {
            console.log('TRIGGERED: 3 error events in a row');
            Object.keys(c).forEach(key => {
                if (key.match(/^id/)) {
                    console.log(c[key]);
                }
            });
        }
    }
);

set.whenStart((host) => {
    console.log('inserting events');
    const sid: number = 2;
    for (let i = 0; i < 25; i++) {
        setTimeout(() => {
            const type: string = ['ok', 'info', 'error'][Math.floor(Math.random() * 3)];
            const id: string = createId();
            console.log(id, type);
            host.post('test', {
                id,
                sid,
                type,
            });
        }, Math.random() * 5000);
    }
});

console.log('run...');
d.runAll([{ host: '<IP_ADDRESS>', port: 6379 }]);

Unfortunately, the action is triggered whenever an error event is observed. For example, the program produced the following output:
run...
inserting events
Listening on 5000
1469713486428 1 ok
1469713486724 2 ok
1469713487548 3 ok
1469713487624 4 info
1469713487763 5 ok
1469713488117 6 ok
1469713488208 7 ok
1469713488401 8 ok
1469713488415 9 ok
1469713488732 10 ok
1469713488860 11 ok
1469713488883 12 info
1469713488985 13 error
TRIGGERED: 3 error events in a row
{ id: '1469713488985 13', type: 'error', sid: 2 }
{ id: '1469713488985 13', type: 'error', sid: 2 }
{ id: '1469713488985 13', type: 'error', sid: 2 }
1469713489349 14 info
1469713489415 15 info
1469713489647 16 error
1469713489798 17 ok
1469713489851 18 ok
TRIGGERED: 3 error events in a row
{ id: '1469713489647 16', type: 'error', sid: 2 }
{ id: '1469713489647 16', type: 'error', sid: 2 }
{ id: '1469713489647 16', type: 'error', sid: 2 }
1469713489990 19 info
1469713490027 20 info
1469713490261 21 ok
1469713490309 22 error
TRIGGERED: 3 error events in a row
{ id: '1469713490309 22', type: 'error', sid: 2 }
{ id: '1469713490309 22', type: 'error', sid: 2 }
{ id: '1469713490309 22', type: 'error', sid: 2 }
1469713490483 23 ok
1469713490678 24 ok
1469713490907 25 error
TRIGGERED: 3 error events in a row
{ id: '1469713490907 25', type: 'error', sid: 2 }
{ id: '1469713490907 25', type: 'error', sid: 2 }
{ id: '1469713490907 25', type: 'error', sid: 2 }

Hi, thanks for posting the question. The reason why each event triggers the rule is because an error event alway satisfies the three clauses. You can use the count rule decorator, however it will not guarantee consecutiveness.
const set: any = d.ruleset('test',
    {
        count: 3,
        whenAll: [
            m['type'].eq('error'),
        ],
        run: (c) => {
            console.log('TRIGGERED: 3 error events in a row' + JSON.stringify(c.m));
            console.log(c.m.length);
            c.m.forEach(row => {
                console.log('Error -> ' + row['id']);
            });
        }
    }
);

If you can guarantee a strict auto-increment sequence when generating events you can compare ids.

Hi, thank you for your response. I've already tried the count rule decorator, but as you mentioned it does not guarantee consecutiveness. Thus, I will opt for comparing ids.

Hi, I have been playing with this scenario a little more.
First, you might have noticed there is a bug when writing a rule (in typescript or js) that compares ids. I just fixed the bug and published a new build.
Guaranteeing auto-increment ids or accurate timestamps when originating events in a distributed system is a difficult problem to solve. Trying to reason about consecutive messages comparing consecutive Ids or timestamps is not advisable. The good news is: there is a better way.
From a purely declarative (no side-effects) perspective, it is possible to write a set of rules to decide what to do with three consecutive messages. It is important to define the outcome of each combination.
const set: any = d.ruleset('test',
    {
        whenAll: [
            c['id0'] = m['type'].eq('error'),
            c['id1'] = m['type'].eq('error').and(m['id'].neq(c['id0']['id'])),
            c['id2'] = m['type'].eq('error').and(m['id'].neq(c['id0']['id'])).and(m['id'].neq(c['id1']['id'])),
        ],
        run: (c) => {
            console.log('TRIGGERED: 3 error events in a row');
        },
    },
    {
        whenAll: [
            c['id0'] = m['type'].neq('error'),
            c['id1'] = m['type'].eq('error').and(m['id'].neq(c['id0']['id'])),
            c['id2'] = m['type'].eq('error').and(m['id'].neq(c['id0']['id'])).and(m['id'].neq(c['id1']['id'])),
        ],
        run: (c) => {
            console.log('TRIGGERED: 1 success and 2 error events in a row');
        },
    },
    {
        whenAll: [
            c['id0'] = m['type'].neq('error'),
            c['id1'] = m['type'].neq('error').and(m['id'].neq(c['id0']['id'])),
            c['id2'] = m['type'].eq('error').and(m['id'].neq(c['id0']['id'])).and(m['id'].neq(c['id1']['id'])),
        ],
        run: (c) => {
            console.log('TRIGGERED: 2 success and 1 error event in a row');
        },
    },
    {
        whenAll: [
            c['id0'] = m['type'].neq('error'),
            c['id1'] = m['type'].neq('error').and(m['id'].neq(c['id0']['id'])),
            c['id2'] = m['type'].neq('error').and(m['id'].neq(c['id0']['id'])).and(m['id'].neq(c['id1']['id'])),
        ],
        run: (c) => {
            console.log('TRIGGERED: 3 success events in a row');
        },
    }
);

While the ruleset above will detect three consecutive error messages in a tumbling window, you might want to detect three consecutive error messages in a sliding window.
Being practical, it is possible to use the ruleset state (or context):
const set: any = d.ruleset('test',
    {
        whenAll: [
            s['errors'].gte(3),
        ],
        run: (c) => {
            console.log('3 consecutive errors detected');
            c['s']['errors'] = 0;
        },
    },
    {
        whenAll: [
            m['type'].ex(),
        ],
        run: (c) => {
            if (c['m']['type'] == 'error') {
                c['s']['errors'] = isNaN(c['s']['errors']) ? 0: c['s']['errors'] + 1;
            } else {
                c['s']['errors'] = 0;
            }
        },
    }
);

The ruleset above will detect three consecutive errors in a sliding window. There is a performance penalty: an action is triggered for every event, while in the first example an action is triggered for every 3 events.

Wow! Thank you for investigating this for me and providing the solutions. These solutions are definitely easier to scale than the ID approach.

How would you incorporate time component to this? Correlate a sequence of events E1 and E2 within an interval of 't' seconds starting from the arrival of E1. Any events before E1 should be discarded.
I tried to do this via the following statechart with a manual reset timer. It fires even if E2 comes before E1.
var d = require('durable');

d.statechart('risk', function() {

    start: {
        to: 'waitTrigger'
        // will start a manual reset timer
        run: {
            console.log('Start ' + new Date());
            // startTimer('VelocityTimer', 15, true);
        }
    }

    waitTrigger: {
        to: 'meter'
        whenAll: {
          m.event == 'Trigger'
        }
        run: {
            console.log('Got trigger, reset and start timer ' + new Date());
            // s.trigger = 'Trigger'
            resetTimer('VelocityTimer');
            startTimer('VelocityTimer', 15, true);
        }
    }

    meter: {
        to: 'waitTrigger'
        whenAll: {
            m.amount > 100 /*&& s.trigger == 'Trigger'*/
            timeout('VelocityTimer')
        }
        cap: 100
        run: {
            console.log('Velocity: ' + m.length + ' events in 15 seconds with context ' +  new Date()  + ' ' /*+ s.trigger*/);
            deleteState();
            // s.trigger = 'Reset'
        }

        to: 'waitTrigger'
        whenAll: {
            timeout('VelocityTimer')
        }
        run: {
            console.log('Timeout ' + s.trigger + ' ' + new Date());
            deleteState();
            // s.trigger = 'Reset'
        }
    }

    whenStart: {
/*
        post('risk', { event: 'Trigger' });
        post('risk', { amount: 200 });
        post('risk', { amount: 150 });
        post('risk', { amount: 50 });
        post('risk', { amount: 500 });
        post('risk', { amount: 600 });
*/
    }
});
d.runAll();

The following event should not be allowed if there is no preceding {"event":"Trigger"} but the outcome is 0 and a subsequent Trigger event satisfies the rule, which is strange.
curl -H "content-type: application/json" -X POST http://localhost:5000/risk/events -d '{"amount":150}'
{
  "outcome": 0
}


Bridge profile identifier to Objective-C

Global variables defined in Swift doesn't bridge to Objective-C.

Rebased onto the swift3 branch.

Actually, for consistency, it'd be better to rebase atop master and merge into swift3, as we've done for all the other changes.

Temporarily enabled carthage build step solved the bitrise issues for tvOS, macOS & iOS.
OHHTTPStubs and Polyline doesn't have a scheme for watchOS so we have to upstream a fix or figure out another solution.

OHHTTPStubs and Polyline don't have a watchOS target

Polyline does have a watchOS target, but it looks like a watchOS scheme was omitted – probably an oversight.


Download CSV feature not working with customBodyRender

Expected Behavior

When downloadcsv with column array it renders [Object,object] instead of a plain text
I found an existing issue,
https://github.com/gregnb/mui-datatables/issues/275
Current Behavior

Steps to Reproduce (for bugs)

Click Download CSV
open excel file
Array coumn should be plain text but I'm having [object, object]

Your Environment

Tech
Version

Material-UI
"@material-ui/core": "4.6.1",

MUI-datatables
"@types/mui-datatables": "^2.12.2",  "mui-datatables": "^2.10.2",

React
"react": "^16.12.0",

browser
Chrome Version 79.0.3945.79 (Build officiel) (64 bits)

TypeScript
"typescript": "^3.3.3",

Just ran into this issue myself and can confirm it. Without a render function for CSV downloads, the only way to make more complex data CSV-friendly is by updating values by index which sounds incredibly rickety.
I don't know if customBodyRender is the best solution however, because it can be used by the table to render table data as small components, which aren't going to serialize for CSV nicely. There might need to be a customCsvRender option instead.

Thank you for your reply, I really appreciate it
Have a great day
On Mon., Dec. 30, 2019, 12:55 p.m. sli<EMAIL_ADDRESS>wrote:

Just ran into this issue myself and can confirm it. Without a render
function for CSV downloads, the only way to make more complex data
CSV-friendly is by updating values by index which sounds incredibly rickety.
I don't know if customBodyRender is the best solution however, because it
can be used by the table to render table data as small components, which
aren't going to serialize for CSV nicely. There might need to be a
customCsvRender option instead.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/gregnb/mui-datatables/issues/1129?email_source=notifications&email_token=AKZ5FOQUVTRALIKYNJ26MNDQ3IYZRA5CNFSM4J6DCI6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH22YLI#issuecomment-569748525,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKZ5FORQEKDRB6UM5ABCKLDQ3IYZRANCNFSM4J6DCI6A
.

Hey @maquintal. I need more steps to reproduce the issue. Not sure what you mean by "array column." Can you provide a (simple and small) sample data set that I can use to create the breakage?

@sli onDownload already allows you to customize the entire output of the csv.

sure, here my json data, note that the issue is on the controlmJobRequest, which is my array-column
{
"requestId": "CTRM001377",
"id": "1377",
"requesterDetails": {
"fullName": "Full Name",
"department": "Department"
},
"doerDetails": null,
"approverDetails": null,
"priority": "standard",
"effectiveDate": "2019-12-31 -05",
"requestStatus": {
"status": "Submitted"
},
"controlmJobRequest": [
{
"jobName": "POOOD898989",
"jobType": "script",
"actionType": "create"
}
]
},
and here's the download result, note that hided columns do not have issues, only the controlmJobRequest

Hey @maquintal, as you might have noticed, you have an array of objects, which is not supported. Only arrays of strings and numbers are supported.

I want to confirm the expected behavior of the CSV download with customBodyRender to make sure I'm not missing something. My expectation is that if I use customBodyRender on a column that takes in an array but outputs a string (e.g. customBodyRender: (arrVal) => value.join(', ')) I would expect that the CSV would also contain the string output and not [object Object]. Is that what I should expect or will I need to use onDownload() in that case?

@tjatwood See the documentation for downloadOptions and the csv-export example. You have to set options to use displayed values, otherwise the table does not know which set of data you intended.

Thanks! I was able to use onDownload() to write a data interceptor that transforms the data based on customBodyRender() again before passing it to the CSV output.

@tjatwood @gabrielliwerant could you please tell me where can I found a code example..

Hi @tjatwood do you mind showing us an example of how you used onDownload to resolve this issue? I'm in the same boat that you were in. It would be greatly appreciated!

@nilupulheshan1995 @wjonesLACity here's a fix i just did for this:
your column definition should define a new option key called (in my example) toStringOverride:
const columns = [{
    name: 'allUserNames',
    label: 'Names',
    options: {
        toStringOverride: (rawDataValue: Users[]) => {
             rawDataValue.map(user => user.name).join(', ') // or whatever else you need that flattens your data
        }
    },
}

Which you can then use in the onDownload callback:
  onDownload: (buildHead, buildBody, columns, data) => {
    const alteredData = data?.map((row, index) => ({
      index,
      data: row?.data?.map((field, index) => {
        // look for the existence of a toStringOverride on the matching column for this field:
        const mapper = columns?.[index]?.toStringOverride
        // And apply it, if it exists:
        return mapper ? mapper(field) : field
      }),
    }))

    // Taken from sourcecode:
    return `${buildHead(columns)}${buildBody(alteredData)}`.trim()
  },

This assumes that you are okay with adding that custom toStringOverride. If not, you can always try to piggyback off of the customBodyRender function in exactly the same way, but then you will need to go check if all of them serialize properly (which is pobably not the case for a react app).

Simply we can use same function as datatable using to render custom body.
onDownload: (buildHead, buildBody, columns, data) => {
const alteredData = data?.map((row, index) => ({
index,
data: row?.data?.map((field, index) => {
if (columns[index].customBodyRender) {
return columns[index].customBodyRender(field)
}
return field
}),
}))
// Taken from sourcecode:
return `${buildHead(columns)}${buildBody(alteredData)}`.trim()

},

@parassanghani6 sorry for the necro reply, but that will only work when your customBodyRender returns a serializable result which, when you render icons or something in that location, won't be the case. It will output [object Object] again, like described above.


Possible mistake in example

I am not very experienced in using actions. but when I used your PR Labels Checker per the example:
    steps:
      - uses: danielchabr/pr-labels-checker@v3

I got errors:
Unable to resolve action danielchabr/pr-labels-checker@v3, unable to find version v3
When I changed to this:
    steps:
      - uses: danielchabr/pr-labels-checker@master

It started to work like a charm.

P.S.
Would I be sure, what's wrong with v3 I would even have created the PR for the master. But it has consequences...

It should be<EMAIL_ADDRESS>the tag is v3.0


A11Y: Accessible Video/Audio files

https://www.w3.org/2008/06/video-notes
https://tech.blog.jyu.fi/2020/06/plone-rpa-feature-destructured/

@tisto Can you check if this still needs our attention, please?


UpdateProjectIfDirty is slow on large projects

🔎 Search Terms
UpdateProjectIfDirty language server slow
🕗 Version & Regression Information

tested the version that ships with VS Code

⏯ Playground Link
No response
💻 Code
Steps to reproduce:

clone VS Code (https://github.com/microsoft/vscode.git)
npm install
open VS Code on the vscode repository
open file task.constribution.ts
open the TS server log
add a new line to _ignoreEventForUpdateRunningTasksCount

Observe: updateGraphWorker takes roughly 300ms on my machine
I took a performance trace and a lot of time is spent in GC and getNormalizedAbsolutePath. I added a simply unbound cache to the method like
const pathCache = new Map();
function getNormalizedAbsolutePath(fileName, currentDirectory) {
  let cache = pathCache.get(currentDirectory);
  if (cache === undefined) {
    cache = new Map();
    pathCache.set(currentDirectory, cache);
  }
  let normalized = cache.get(fileName);
  if (normalized === undefined) {
    normalized = getPathFromPathComponents(getNormalizedPathComponents(fileName, currentDirectory));
    cache.set(fileName, normalized);
  }
  return normalized;
}

which cuts the time for updateGraphWorker in half. However there are still some GCs going on and a lot of time is now spent in verifyCompilerOptions / getNormalizedPathComponents.
🙁 Actual behavior
Takes 300ms to update on key stroke
🙂 Expected behavior
Adding a new line should be even in large project only cost a couple of ms :-)
Additional information about the issue
No response

Doing a comparable cache in getNormalizedPathComponents brings the time down to 75ms.
vscode-profile-2024-11-28-09-36-24.cpuprofile
vscode-profile-2024-11-28-12-42-42.cpuprofile
vscode-profile-2024-11-28-15-29-10.cpuprofile
Here are also some of the CPU profiles I captured.

This might make things a bit easier to iterate on.
git clone https://github.com/microsoft/vscode
cd vscode

npm ci --ignore-scripts
npm install @typescript/server-replay --no-save --ignore-scripts

cat > replay-script.txt << EOF
{"seq": 1, "type": "request", "command": "updateOpen", "arguments": { "changedFiles": [],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/src/vs/workbench/contrib/tasks/browser/task.contribution.ts","projectRootPath":"@PROJECT_ROOT@"}]} }
{"seq": 2, "type": "request", "command": "updateOpen", "arguments": { "changedFiles": [{ "fileName": "<EMAIL_ADDRESS>"textChanges": [{ "newText": "\n\t\t", "start": { "line": 146, "offset": 78 }, "end": { "line": 146, "offset": 78 } }] }], "closedFiles": [], "openFiles": [] } }
EOF

npx tsreplay ./ replay-script.txt ./node_modules/typescript/lib/tsserver.js --logDir ./

@DanielRosenwasser I was hitting this on WSL on my laptop. But even 80ms is a lot for a space in a file. When I looked at the code I was under the impression that most of the things that are done around path computations are 'unnecessary'.

Just to keep you updated, @andrewbranch will be looking into this.

I get 95ms on WSL on a dev box. Should the difference between a dev box and your laptop be 3x+? @dbaeumer can you send a TS Server log?

I can produce a server log. But even 95 ms is IMO a lot considering that most of the work is around normalizing paths that are already normalized.

Here is a tsserver.log from my laptop running on a power adapter. I see times between 170 and 300 ms.
tsserver.zip

Thanks, we'll take a look!
Just to test things out, https://github.com/microsoft/TypeScript/pull/60754#issuecomment-2542555758 and https://github.com/microsoft/TypeScript/pull/60755#issuecomment-2542555453 each have a build you can try out. Can you give us a sense of if either of these fix the issue on your side? If you can profile while running to give us a sense of where the remaining major work is, that would be helpful.

Times for build 60754 were between 78 - 150 ms with server plugins enabled.
Times for build 60755 were between 66 - 109 ms with server plugins enabled.

@dbaeumer great! Can you let us know how the two fixes combine? I've readied a build over at https://github.com/microsoft/TypeScript/pull/60800#issuecomment-2549708717

It would also be helpful to see if the latest changes at https://github.com/microsoft/TypeScript/pull/60755#issuecomment-2550110765 still get the same wins overall. Thanks for your patience on this.

@DanielRosenwasser was busy the whole day with a recovery build. Will look into it first thing tomorrow.

Build from #60800 results in times between 65 and 110 ms

For 60755 times were between 172ms and 87ms
Would there be any way for me to automate this so that I can run something in a loop. I am wondering because JIT might have some impact on this as well.

When I debugged  / traced this I was wondering if it is necessary to create a new program at all in most cases. I know reusing stuff can be tricky  but a lot of changes happen inside code which don't change the structure of a program.

Would there be any way for me to automate this so that I can run something in a loop. I am wondering because JIT might have some impact on this as well.

You can use https://www.npmjs.com/package/@typescript/server-harness which is what https://github.com/microsoft/TypeScript/issues/60633#issuecomment-2512767231 is using under the hood.

When I debugged / traced this I was wondering if it is necessary to create a new program at all in most cases. I know reusing stuff can be tricky but a lot of changes happen inside code which don't change the structure of a program.

That is what Program is doing; it's a snapshot and we carry state between them (Andrew's PR is affecting the perf of that process)


Armors out of [3d_armor] mod problem

Armors out of [3d_armor] mob still have the preview problem :

Need to fix it ! :)

Fixed https://github.com/MinetestForFun/server-minetestforfun/commit/0e2df1e5d5c05d6fb4e9f071a6f64a49c311eead


Feature design proposal/prototype: pixi build

As https://github.com/prefix-dev/pixi/discussions/793 didn't give us enough discussion to finalize a design that fit our ideas, so we've started an ultra simple prototype. This issue is to share the status and hopefully fetch more input from our contributors.
The goal:

Allow pixi to call build tools to build packages for distribution.
Allow pixi projects to depend on pixi project, which invokes build to build the dependency on the spot.

Out of scope

We're not looking at mixed conda and pypi projects.

The build section in the manifest file
# Users can define multiple build backend
[build.conda]
# These requirements are installed in a pixi specific build environment.
# This tool is going to do the actual build.
requires = { pixi-build-python = "3.12" }
# A pixi task to run the build. Uses the normal `pixi task` workflow.
# Including depends-on, inputs, outputs, etc.
task = { cmd = "pixi-build-conda", ..., inputs = ["*.py"] }

# We allow extra metadata in a `tool` section.
# This enables build-tool specific configuration to be stored.
[tool.pixi-build-python]
build = "noarch"

The build command
pixi build conda

Pixi will create an build environment where it installs the required tool.
Pixi will run the build.conda.task in that environment.
The build tool will do its thing, and notify pixi with the result.

The build tool.
We want users to not get locked in by our build backend for which tools they can use to build packages.
Building a backend should be simple and straight forward, with a small communication layer between pixi and the tool.
But most logic should happen in the build tool.

The build tool reads directly from the pixi manifest. (e.g. [tool.pixi-build-python])
The build tool invokes the actual build. e.g. using or other backend tools e.g. rattler-build.

Related work

Refactor pixi into crates:

#1656: Extract manifest into a crate for possible reuse
#1661
#1662
#1678
#1700
#1684
#1699
#1712
#1717
#1718
#1722
#1723
#1725
#1736

#1653: Add [build] section to pixi manifest.
#1728

How do you see the build tasks interact with regular pixi tasks? I wonder if having a build task may confuse users, given the existence of more generic pixi tasks.
I assume we could also infer automatically a pixi build --name pypi build command when using a pyproject.toml manifest ? Would we also be able to infer automatically a conda build command (as a wrapper around a pypi package) ?

As a user, I would get confused if the package building task were named anything other than build. It follows the same convention as conda and poetry CLIs and cannot be more explicit than that.

Hi @olivier-lacroix,
I've updated the description with the latest discussed idea. If hopefully getting your worries out of the way.
We renamed the dependencies to requires and removed the name field and make it a part of the toml table.
Automatically infer what build to run is of course an interesting idea, which shouldn't be to complex. The wheel building is an interesting part as we can already do that with the uv integration in pixi itself. So this story doesn't talk about that yet.

Following up on this, I wanted to understand what you mean exactly by We're not looking at mixed conda and pypi projects.
Does this mean that if you have a project that has both conda and pypi deps, this initial version of pixi build won't work, but it should still allow potentially building a wheel for pypi (along with being able to create condage packages)?

Allow pixi projects to depend on pixi project, which invokes build to build the dependency on the spot.

I think this will do pretty much exactly what I'd like to do, especially if it includes the last bullet point from gh-793 ("Have a workflow like cargo or pip to depend on local versions").
What I have in mind is working on a stack of related packages (e.g., meson, meson-python, cython, numpy, scipy) where each of those have their own pixi.toml and recipe.yaml, and having the ability to make changes in one project (or several) and test them with the downstream projects that depend on them. This is usually pretty tedious and fragile to set up - my current workflow is mostly to have one conda dev env per project, and pip install . and overwrite the conda package with a local build (e.g. mamba env create -f environment.yaml to create scipy-dev and then pip install path/to/local/numpy --no-build-isolation to install the numpy changes I want to test with scipy into scipy-dev).

One question I have is whether you are planning to make a distinction between building a package that's relocatable locally vs. one that is portable to other machines. Or will pixi build do only one (and if so, which one)?
To clarify, say I'm linking to a system library like Apple Accelerate (the new one, in macOS >=13.3) or I'm using -march=native to build. Those kinds of things are fine for relocation to other envs on the same machine, but not for uploading to a channel for other users on the same platform. To draw an analogy to wheels:

python -m build --wheel will build a non-relocatable wheel
running delocate over the wheel from step 1 will make it relocatable to other envs (assuming it doesn't choke on something too non-portable)
doing step 1 with MACOSX_DEPLOYMENT_TARGET=11.0 and dropping non-portable compiler flags and then step (2) will yield something suitable for uploading to PyPI for all macOS arm64 users. Or running cibuildwheel of course  (either way, there are a lot more constraints here for "relocatable to other machines").

For conda packages there's no analogy to (1), but there is for (2) and (3). I'd mostly use (2) I think, because (3) is usually happening in CI for the things I work on - but I can see (3) being useful as well for team-based projects and private conda channels (perhaps avoiding the work to set up separate CI).

Following up on this, I wanted to understand what you mean exactly by We're not looking at mixed conda and pypi projects.
Does this mean that if you have a project that has both conda and pypi deps, this initial version of pixi build won't work, but it should still allow potentially building a wheel for pypi (along with being able to create condage packages)?

Yes! And Ideally, if at some point, we have a way to tell pixi to interpret your project.depencies as conda-dependencies just for pixi and pixi build, so it will not interfere with regular wheel builds. Then you can use a single manifest format for building both a wheel and a .conda package, at least simple cases. Which I think would be very cool.

Thanks for the detailed answer @baszalmstra, that answers my questions and all makes perfect sense to me.


Update link.md - Added table row for clarity

Added another table row to include the Source being referenced in the remaining document. This allows readers to be able to follow along and see where the data comes from.

Thanks for the update, Geoff!


Annotate callback parameters

So, I know the React world hasn't really embraced this yet - somehow all functions are equal for the prop types. I wanted to bring this up since you are doing a pass over/inlining the documentation anyway. Would you consider enforcing/documenting callback parameters while you're at it?
ideally we could write custom prop types for functions:
    /**
     * Callback function for when the title text is selected via a touch tap.
     */
    onTitleTouchTap: Mui.PropTypes.func1(Mui.PropTypes.Event.isRequired),

Or alternatively, there would be some value in a textual description too :
    /**
     * Callback function for when the title text is selected via a touch tap.
     * @arg Mouse or Touch event
     */
    onTitleTouchTap: React.PropTypes.func,

Or whatever else have you that already exists in some form. I would definitely be willing to help out here if you agree it's a good idea.

I like the first example.
It would allow us to check the function parameters at run time and improve the document geneneration.
However, https://github.com/reactjs/react-docgen/issues/33 would probably need to be resolved first.
For the second example, I'm not sure this is supported by react-docgen: to try.

Yeah, i noticed that functionality was missing myself the other day while looking at it. For material-ui we need it already to support the custom prop types in prop-types.js.
I have no idea how much work it would be to hack react-docgen into supporting it. sounds easy, but... hehe. im not a terribly good js developer, for one :)

@oliviertassinari We shouldn't check the provided callback to see if it's correct. Because people might want to pass a function that takes nothing for the purpose of only knowing about the event, or takes a lot of other things.
I like the second example more though. we can really extend it good with doctrine
Oliver it's easy to just pass the description text to that lib to get a json structure so we can generate our own way of representing the callbacks. what do you say?
we can use @param tags to represent the values that will be passed to the callback

@alitaheri Wow, doctrine looks awesome.
You definitly changed my mind :+1:.

@oliviertassinari Thanks :grin: I'll try to tackle with it a bit to see how we should use the output and generate proper signature documentation. We definitely need this :+1: :+1:

We have chosen to implement solution n°2.
Now, we should document all of our function parameters.

Now, we should document all of our function parameters.

Oooh right... there's that...

Well, that's not a priority for me :grin:.

I've got it, don't worry :grin:

Please refer to https://github.com/callemall/material-ui/issues/2883 now.


VPN setup

Story
-As a cluster admin, I want to access clusters over a VPN in order to increase the cluster's security.
Resources

Giant Swarm VPN;
CAPG Network Layout. See phase 2 for VPN setup.

Background
Giant Swarm's VPN setup requires that bastion hosts be on a subnet with a /27 CIDR to be reserved and to be globally unique for each management cluster. This has the following drawbacks:

the globally unique CIDR couples management clusters between each others;
the management cluster VPC has the VPN gateway attached to it. This makes management clusters different from workload clusters;
workload clusters can't be promoted to management clusters.

The VPN is required in order to SSH to clusters nodes and to have access to the Kubernets API.
Solutions (high level description)

Use current Giant Swarm VPN setup and accept it's limitations;
Use current Giant Swarm VPN setup, but attach the VPN gateway to both management clusters and workload clusters. In this case, workload clusters can't be treated as cattle because the /27 CIDR needs to be globally unique;
Use wireguard (tailscale, netmaker) and have all cluster nodes on the same network. The network can be per customer, per management cluster & workload clusters, per cluster (either management or workload). In this case there are no bastion hosts;
Use wireguard (tailscale, netmaker) and have all bastion hosts on the same network;

BTW I realized why we have the /27 for the  bastion subnet because the smallest subnet size you can create on AWS is /28 so in order to have 2 bastions each in different AZ we need 2x /28 which si the /27
we cannot make this any smaller unfortunately, only solution would be live with 1 bastion which you give us /28 for bastion


python310Packages.python-lsp-server: 1.7.0 -> 1.7.1

Diff: https://github.com/python-lsp/python-lsp-server/compare/refs/tags/v1.7.0...v1.7.1
Changelog: https://github.com/python-lsp/python-lsp-server/blob/v1.7.1/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 212756 run on x86_64-linux 1

1 package failed to build:

python311Packages.django_silk

19 packages built:

cmake-format
cmake-language-server
python310Packages.autopep8
python310Packages.django_silk
python310Packages.pyls-flake8
python310Packages.pyls-isort
python310Packages.pyls-spyder
python310Packages.pylsp-mypy
python310Packages.python-lsp-black
python310Packages.python-lsp-server
spyder (python310Packages.spyder)
python311Packages.autopep8
python311Packages.pyls-flake8
python311Packages.pyls-isort
python311Packages.pyls-spyder
python311Packages.pylsp-mypy
python311Packages.python-lsp-black
python311Packages.python-lsp-server
python311Packages.spyder


No graph visualization on Blob Opera

Reproduction:
Visit https://artsandculture.google.com/experiment/blob-opera/AAHWrq360NcGbw?cp=e30.
Expectation:
Contexts should register in the drop down menu, and the panel displays the visualization.

The integrated Web Audio panel shows correctly. (three dots > More Tools > WebAudio)

same here:

Chrome is up to date
Version 101.0.4951.64 (Official Build) (x86_64)
maxos: 10.13.6


OpenSource : 5.30 Explain everything related to Cloud Native :- Container Networking Interface (CNI)

Description 📜
Done Documentation (Content Creation in the form of codes or tutorials) on Explain everything related to the Cloud Native :- Container Networking Interface (CNI).
Fixes #665

Type of change 📝

[X] Documentation (Content Creation in the form of codes or tutorials)

Domain of Contribution 📊

[x] Open Source

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

Screenshots / Gif (Optional) 📸

@Aryamanz29 Thank You!😄


chore(sample): add mockingbird + typeorm sample

Codecov Report

Merging #23 (c7ebe74) into master (cf7977c) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #23   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           20        20
  Lines          228       228
  Branches        22        22
=========================================
  Hits           228       228

Impacted Files
Coverage Δ

src/class-processor.ts
100.00% <100.00%> (ø)

src/factories/mock-factory.ts
100.00% <100.00%> (ø)

src/property-decorator-value.ts
100.00% <100.00%> (ø)

test/integration/common/test-classes.ts
100.00% <100.00%> (ø)

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 cf7977c...3620f41. Read the comment docs.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add the-bitcoin-core-wallet-and-wrangling-bitcoin-data review to chaincode-labs/chaincode-podcast

This PR adds the-bitcoin-core-wallet-and-wrangling-bitcoin-data transcript review to the chaincode-labs/chaincode-podcast directory.

Great work on @varmur! Your meticulous attention to detail and commitment to readability truly stand out. Not everyone puts in this level of effort to enhance the transcript.
Inspired by your dedication, I've started experimenting with using AI as an initial editing layer, focusing on improving transcription style. This allows reviewers like you to concentrate on the critical task of ensuring transcription accuracy and catching any AI-generated errors.
This experiment isn't in production yet, but I conducted a small trial during my evaluation of #475. I look forward to sharing more examples and insights with the reviewers soon.
Thank you again for your outstanding contributions!


Update graphic associated with Betterment in the wiki

Issue to raise for SitePrism wiki
The Betterment logo is outdated, however I lack permissions to edit the wiki directly. Would you be able to swap out
[<img src="http://static.squarespace.com/static/51eef63ae4b089778deccb24/t/522cb69be4b074119b21db97/1375925773732/Betterment.png" width="300"/>](https://www.betterment.com)
with
[![Betterment](https://www.betterment.com/hubfs/Graphics/shared-assets/betterment-logo.png)](https://www.betterment.com)
Thanks!

Anyone can edit the wiki.

Anyone can edit the wiki.

The new page/edit buttons don't appear for me. Perhaps only repo maintainers can edit?

Try again now?? I wasn't aware but a setting was wrong.

Was able to make the change. Thanks @luke-hill!


SEO Module

With the new module, would it be possible to use the Fact-Finder SEO module, whereby SEO friendly urls are turned into magento pages.
ie
/guitars/electric/epiphone/black
would show the search results for black epiphone guitars ?

Currently not.


GBM in pyfora

I'll have to think about this, but the histogram decision tree builder in fora uses MutableVectors

We could create a "MutableNumpyArray" kind of model for this if we wanted.
On Wed, Dec 9, 2015 at 4:23 PM, Thomas Peters<EMAIL_ADDRESS>wrote:

I'll have to think about this, but the histogram decision tree builder in
fora uses MutableVectors
—
Reply to this email directly or view it on GitHub
https://github.com/ufora/ufora/issues/155#issuecomment-163395684.

--
Braxton McKee                             CEO / Ufora
www.twitter.com/braxtonmckee www.ufora.com

and how should that be triggered by a user (or the runtime)? Normal numpy
people think about such things
On Wed, Dec 9, 2015 at 4:24 PM, Braxton McKee<EMAIL_ADDRESS>wrote:

We could create a "MutableNumpyArray" kind of model for this if we wanted.
On Wed, Dec 9, 2015 at 4:23 PM, Thomas Peters<EMAIL_ADDRESS>wrote:

I'll have to think about this, but the histogram decision tree builder in
fora uses MutableVectors
—
Reply to this email directly or view it on GitHub
https://github.com/ufora/ufora/issues/155#issuecomment-163395684.

--

Braxton McKee CEO / Ufora
www.twitter.com/braxtonmckee www.ufora.com
—
Reply to this email directly or view it on GitHub
https://github.com/ufora/ufora/issues/155#issuecomment-163395995.

--
Thomas Peters | Software Engineer | *U**FORA *
115 West 27th Street 7th Floor, New York, NY 10001
Office:<PHONE_NUMBER> | Mobile:<PHONE_NUMBER>
<EMAIL_ADDRESS>| www.ufora.com

we could make a special "pyfora.mutable" object that makes a mutable copy
of the array. It would be a no-op in regular python.
On Wed, Dec 9, 2015 at 4:27 PM, Thomas Peters<EMAIL_ADDRESS>wrote:

and how should that be triggered by a user (or the runtime)? Normal numpy
people think about such things
On Wed, Dec 9, 2015 at 4:24 PM, Braxton McKee<EMAIL_ADDRESS>wrote:

We could create a "MutableNumpyArray" kind of model for this if we
wanted.
On Wed, Dec 9, 2015 at 4:23 PM, Thomas Peters<EMAIL_ADDRESS>wrote:

I'll have to think about this, but the histogram decision tree builder
in
fora uses MutableVectors
—
Reply to this email directly or view it on GitHub
https://github.com/ufora/ufora/issues/155#issuecomment-163395684.

--

Braxton McKee CEO / Ufora
www.twitter.com/braxtonmckee www.ufora.com
—
Reply to this email directly or view it on GitHub
https://github.com/ufora/ufora/issues/155#issuecomment-163395995.

--
Thomas Peters | Software Engineer | *U**FORA *
115 West 27th Street 7th Floor, New York, NY 10001
Office:<PHONE_NUMBER> | Mobile:<PHONE_NUMBER>
<EMAIL_ADDRESS>| www.ufora.com
—
Reply to this email directly or view it on GitHub
https://github.com/ufora/ufora/issues/155#issuecomment-163396573.

--
Braxton McKee                             CEO / Ufora
www.twitter.com/braxtonmckee www.ufora.com

I finished the regression tree part of this. working on boosting now

There are still things we should do here, like multiclass classification and supporting other loss functions, but we have the basics so I'm closing this.


Add additional MorphiaQuery constructor

Fixes #1347

@johnktims @Shredder121 Is this good to merge?

Yes looks good to me.
@johnktims do you want to merge when you agree?

Much appreciated, thanks you!


[BUG] in Dynamic Maps, the slider's cursor keeps bouncing until the maps are loaded

Bug Description
in Dynamic Maps (HDI), the slider's cursor keeps bouncing until the maps are loaded
Bug Reproduction

Add the "Dynamic Subnational Hdi" layer
Click on a card
Move the slider.

The dot-shaped cursor on the slider will bounce left and right (and the shown values change accordingly) several times until the map is fully loaded.
If the layer is used, even after selecting a card but with the slider set to "0", this issue does not show up.
Bug Impact
No response
Bug Screenshots
No response
Bug References
No response
Bug System Information

OS: [e.g. Windows 10]
Browser: [e.g. Google Chrome, Firefox]

Closeing as it has been fixed by #1513


properties of the spectra and choosing sources for SpectrumLike

would it make sense to assign some properties in the SpectrumLike plugin. it is quite useful when one wants to associate only some sources to a given spectrum, instead of summing all, as it is done now.

@volodymyrss we have a system for this called 'tags'. This might be the way to address this. For now, tags were to associate plugins with a time interval:
https://github.com/giacomov/3ML/blob/master/threeML/plugin_prototype.py#L11
This is rather old:
https://github.com/giacomov/3ML/blob/master/examples/time_dependent_demo.ipynb
But it may be better to have some other way to do what you are wanting to achieve. Perhaps @giacomov has already a solution coded or in mind.

it seems to be called "external_properties"? Ok, it's similar to what I want. I did setters/getters differently though.

@volodymyrss can you describe a bit more the use case for this?
Right now the mindset with which 3ML was designed was to have in the model all sources that are in the sky within a certain region of interest. For non-imaging instruments you had to sum over all the sources, for imaging instruments you treat them one at the time.
However, already for the XYLike plugin, we implemented a solution where you can assign an SED to one specific source in the model. This makes sense for example when you are doing a joint analysis between a large-field instrument and SED data coming from narrow-field instruments.
We can implement something like this for all the OGIP-like plugins as well, if needed.

The situation is that I have a number of sources fitted simultaneously, but each source has it's own OGIP.
Sources share some parameters. If they did not, I would just run the joint fit multiple times, and not have this problem.
But yeah, like XYLike is an options.
Except, more generally, could be not just a source, but also some arbitrary set of properties.
E.g. I have some properties related to detector subsets,  they belong to the data too, and can be used if necessary (e.g. they affect response choice).
Time could be a property too. It seems like it is essentially a property of the data anyway. It can be assigned to IndependentVariable if needed, as it is done in the time-dependent example (by the way, it's broken - several minor inconsistencies following some improvements).

@volodymyrss yes, that example is broken as I am waiting to see what @giacomov does for this case in astromodels. But, we can extend the properties as needed. Also, you can link parameters with astromodels:
http://astromodels.readthedocs.io/en/latest/Model_tutorial.html?highlight=link#linking-parameters

I saw that @grburgess but to link the parameters, they have to be parameters of sources in one model, right?
In this case they are all summed for each OGIP, so it really does not help.

I am not sure, I'll look at XYLike and extend its functionality to SpectrumLike

That's what I did for myself and it's very easy, but I think it's not good enough, and relates to #228: you can not actually specify source model.

@giacomov @volodymyrss I will take care of source assignment while on the place today as well as implementing @giacomov 's idea for #227 They are related, but I will break into two branches.
On another note (and we shouldn't go back now!) it seems it would have been easier to have XYLike be the base of Spectrum... but Spectrum is really a different animal.

@grburgess can you lay down what you want to do in pseudo-code (what the user would need to do to achieve what he wants to achieve)?
@volodymyrss what are the properties of a source that the plugin might need to decide the appropriate response of the instrument?

@giacomov not properties of a source, but properties of data (in this thread we are taking about plugin properties, not model node properties :) ). many things: on a low level - event selection (which can be subset of detectors, GTI, etc)

@giacomov in which issue?

@grburgess you said:

I will take care of source assignment

what do you mean by that?
@volodymyrss I see (I am confused with all these conversations happening at the same time :-) ). But then, a plugin can be extended with all the properties that you need, it does not share the same limitations of a source (a plugin is not a Node). For general things such as energy range and time range I would use tags. For other things, like subset of detectors, you can either use tags or your custom property.

@giacomov I pushed https://github.com/giacomov/3ML/pull/231 which followed you implementation in XYLike to allow for assiging a plugin to a source.

@giacomov ok. Just to be clear, the tags are in the code as external properties? Naively I can not really find anything relevant literally called "tag" in the code.

But more specifically:

spec_like = SpectrumLike() # or child

ps1 = PointSource('ps1', 0, 0, spectral_shape=Blackbody())
ps2 = PointSource('ps2', 0, 0, spectral_shape=Powerlaw())

model = Model(ps1, ps2)

model.ps2.spectrum.main.Powerlaw.K.fix = True
model.ps2.spectrum.main.Powerlaw.index.fix = True

spec_like.assign_to_source('ps1')

dl = DataList(spectrum_generator)

 jl = JointLikelihood(model, dl)

@grburgess looks great.
@volodymyrss let me find an example for you. This feature is still a prototype so we can iterate over it and fix it if needed.


Optional datetime with default values

As the heading says, is this possible?
Tried this without luck:
Get["/{fromDate?" + new DateTime(DateTime.Now.Year, 1, 1) + ":datetime}/{toDate?" + new DateTime(DateTime.Now.Year, 12, 31) + ":datetime}"] = parameters =>
             {
//....
};

I don't believe so but when you get the value of parameters into a variable
you can set a default in the Default method or in the TryParse method here
https://github.com/NancyFx/Nancy/blob/df8722d11e983029446d48d5b08740d9dad24218/src/Nancy/DynamicDictionaryValue.cs#L49
On Saturday, 12 March 2016, Stefan Karlsson<EMAIL_ADDRESS>wrote:

As the heading says, is this possible?
Tried this without luck:
Get["/{fromDate?" + new DateTime(DateTime.Now.Year, 1, 1) + ":datetime}/{toDate?" + new DateTime(DateTime.Now.Year, 12, 31) + ":datetime}"] = parameters =>
{
//....
};
—
Reply to this email directly or view it on GitHub
https://github.com/NancyFx/Nancy/issues/2353.

@jchannon provided the correct resolution to this. If you have any further questions, please let us know. In the meantime I will close this


[Tests] Properly link Linux tests

https://github.com/apple/swift-corelibs-xctest/pull/46 is missing this change to the compiler invocation, which allows tests to run on Linux even when --library-install-path and --module-install-path are not specified.

My bad, this should have been included in #46. With this change, the following now works:
$ build_script.py \
    --swiftc="/swift/usr/bin/swiftc" \
    --build-dir="/tmp/XCTest_build" \
    --swift-build-dir="/swift/usr" \
    --test

Once this is merged, I plan on adding swift-corelibs-xctest to the Swift CI, by submitting a pull request with this change: https://github.com/modocache/swift/commit/b2f254631300c4fc6c17dbafbcd8c152cdf5d899

Awesome, thanks @mike-ferris-apple! :+1:


Support of WPS 2.0 standard

With recent release of 2.0 standard, I am mainly interested in async support which is currently completely missing in 1.0. It is based on a statefull (persistent?) processing queue with query/status/result capabilities and a multi-processing/threads pattern. Is there anyone already worked/working on such an improvement?

This will go to PyWPS-4 http://github.com/jachym/pywps-4