Fixes #2153: mismatch in default permissions for newly created or downloaded cache files.

You may disregard these recommendations if you used the Edit on GitHub button from dvc.org to improve a doc in place.

❗ Please read the guidelines in the Contributing to the Documentation list if you make any substantial changes to the documentation or JS engine.
🐛 Please make sure to mention Fix #issue (if applicable) in the description of the PR. This causes GitHub to close it automatically when the PR is merged.
Please choose to allow us to edit your branch when creating the PR.
Thank you for the contribution - we'll try to review it as soon as possible. 🙏

I see a commit in this branch will close the original issue #2153 when merged, but please link to the PR directly in the description for better visibility. Thanks

I see a commit in this branch will close the original issue #2153 when merged, but please link to the PR directly in the description for better visibility. Thanks

Description of the original issue or description of this PR?

@iesahin also, some unrelated changes in this PR?

@iesahin also, some unrelated changes in this PR?

I'm merging changes in master to my PRs daily to keep them fresh. :) @shcheklein

@iesahin hmm, why do I see these changes when I open https://github.com/iterative/dvc.org/pull/2196/files ?

I think I should not leave issue / branch tracking to VS Code. I'll do it manually from cli or fugitive now on. A single click changes the history in VS Code. Sorry.

Actually my git log master..iesahin/issue2153 looks like this.

Confused again.

@iesahin can we cleanup this PR please? it has now 30 files updated, probably not what it should be?

Cleaned up in a new PR @shcheklein . Closed in favor of #2257.


Implement Case Edit page

HTML Templates needed
To be implemented in HTML only

[x] Text property (edit-text)
[x] TextArea property (edit-textarea)
[x] Select property (edit-select)
[x] Date picker (edit-date)
[x] Number picker (edit-number)
[x] Boolean/single checkbox (edit-boolean)
[ ] Authors edit (admin only)
[x] Floating Publish Button
[x] Submit button
[x] Full vs. quick

Fields that need JS

[ ] Rich text edit (edit-richtext)
---- use proseMirror

[ ] Location picker (edit-location)
---- use Google Places API

[ ] Link list (edit-link-list)
---- needs JS to add/remove/reorder fields

[ ] Reference List/MultiSelect (edit-list)
---- http://slimselectjs.com/ - 5kb gzipped (each item in list can be styled with ui to delete each tag, rather than just text - matches .xyz multi select)
---- http://leaverou.github.io/awesomplete/#advanced-examples - 2kb gzipped (comma separated text in an input field)

[ ] Ordered/Ranked Reference List/MultiSelect (edit-list-ranked)

[ ] Media/Files picker (edit-media)
---- needs JS for drag/drop to upload and showing file/image selected

[ ] Media/Photos picker (edit-media)

[ ] Media/Audio, Video, Links Links  (edit-media-links)
---- html in place, needs JS to add/remove input sets for each link (link, title, attribute)

First cut is to implement these as plain HTML + CSS, after that we'll look at converting them into more full-featured widgets when JavaScript is available.

@ascott Included here is the rank order question type, which is the same as the media/files re-ordering system, visually. Make sense? Let me know what you need in terms of vector files. This mobile mockup is currently in the PAGES Mockup for Awards-Cleaned up.ai file, under 2018 mockups, but I will create a new .ai file for mobile I think. I have to go offline for the rest of today, but will be back tomorrow to finish cleaning up the filing system. Thanks for your patience and hopefully this is good for now.

@ascott

should the form field design match what is currently on .xyz? in particular the ranked list field, and the file upload field?
The mockups above should be the design reference, unless it saves a lot of time to reuse elements from xyz, let me know. (but spacing and type at least should be adjusted to match mockups)

what is the logic for the quick submit vs. full form? on initial load should we show only quick submit fields? and then show all fields once the full button is pressed?
Yes, initial load shows only quick submit, then load all fields once button is pressed. Use the same headers/ dividers as full version in quick submit.

what should the form validation/errors look like?
this is on my to do list! dark overlay over page, white box with warning text, options to continue to exit (and lose un-published changes) or return to publish.

which fields are required? i didn’t notice that noted in the content spreadsheet
only title is required

@jesicarson how should the multi select fields look? should they match what we have on xyz?

Ah good catch. I don’t have a mock-up, but we’d like to see the list of selected components below the field box, not in it. Visually, this should match the multi select and rank question (general issues) shown above in the mobile mock-up, but without the ranking part, so just a grey outline with the x on the right. I also want to update the mock above so that the multi select and rank values are listed left aligned rather than indented 15px.
I can try to get u mocks for these ASAP. Is this enough to go on for now?

ok, yeah that's enough to go on. thanks!

@ascott based on what we talked about today, and the samples you sent me, here's an updated mockup for mobile case form:


Compile command fails with Solidity 0.6+

Compiling a project with solc 0.6.1:
$ ozdev compile
✖ Compiling contracts with solc 0.6.1 (commit.e6f7d5a4)
soljson.Pointer_stringify is not a function

Reopening as @nventuro managed to reproduce it on OpenZeppelin/openzeppelin-contracts#1c72343465bb0a9f5e365061f9a182154a394a34

Was this closed again by accident?

Nope, because it was fixed by #1427, which just got merged into master


Rate limits question

Hello,
First let me congratulate you on the good job - the project is awesome!
Do you happen to know of any limitations of the TradingView API? How many requests per sec./min./hr..? And is there a limitation of the size of the requested data? Do I risk something, if I poll huge chunks of data (e.g. more than 1000 EXCHANGE:SYMBOLs) each minute?
Best Regards

Hi @Alexandar83,

the project is awesome

Thank you!!!

Do you happen to know of any limitations of the TradingView API?
And is there a limitation of the size of the requested data?

I'm pretty sure that there is a limit, probably to prevent DoS. As I've never reached the limit, I don't know the specific rate limits. Avoid unnecessary requests or use a proxy to avoid hitting the limit.

Do I risk something, if I poll huge chunks of data (e.g. more than 1000 EXCHANGE:SYMBOLs) each minute?

I maintain tradingview-list, a database of 50,000+ symbols, exchanges,  screener, and descriptions retrieved from TradingView. The update.py script retrieves megabytes of data from TradingView in a span of a few minutes, so I'd say it's safe for your case (as long as you use the get_multiple_analysis function). The worst thing that (probably) can happen is you get your IP address banned.
I hope this answers your questions. If you have other questions, feel free to reply to my comment. Have a nice day.

You actually answered to me on the Christmas Day - you are amazing!
You covered all my questions - thank you, wishing you a Happy New Year!


insert persistance

Hello, i recently post an issue about insert problem, but i have not been satisfied.
Now, i've create a plunkr copy of my project, http://embed.plnkr.co/tLm5s0WI884T7Yn3krur/
My problem is the data doest not persist in the database.
How do i fix the problem?
I would like to run the project in node webkit or in the browser.
Thanks!

Hi Franck,
I edited your plunkr: http://embed.plnkr.co/4RalPOAeZA1xYyT3gpeB/preview
I think you were overcomplicating your life by supplying autoload and autosave and then calling load and save.
Either approach is good but not both :)
Let me know if this solves your problem.

Thanks, solved


Fix + unit tests

As described in #507, ensure visible column widths do not vary when a column is hidden with the ColsVisibility extension

Codecov Report

Merging #513 into master will increase coverage by 0.04%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #513      +/-   ##
==========================================
+ Coverage   88.03%   88.08%   +0.04%
==========================================
  Files          38       38
  Lines        4397     4405       +8
  Branches      323      314       -9
==========================================
+ Hits         3871     3880       +9
- Misses        505      507       +2
+ Partials       21       18       -3

Impacted Files
Coverage Δ

src/modules/gridLayout.js
92.3% <100%> (-0.51%)
:arrow_down:

src/extensions/colsVisibility/colsVisibility.js
86.66% <100%> (+1.05%)
:arrow_up:

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 e05f0b2...4f9e3de. Read the comment docs.

:shipit:


Standardize precommit, black, and isort hooks

Overview
This PR fully standardizes isort and black for precommit between raven and RavenPy. There should be much fewer headaches when it comes to pre-commit changes from now on.

This is currently failing due to a circular import problem. Looking into this now.


Caps lock inverted and shift key stuck on

Environment
Windows build number:  [Version 10.0.18363.836]
PowerToys version: v0.18.1
PowerToy module for which you are reporting the bug (if applicable): Keyboard Manager

Steps to reproduce
Enable Keyboard Manager.
Add custom remapping.
Use computer as normal and wait for it to randomly happen.
Expected behavior
Expecting key remapping to work without any issues.
Actual behavior
Caps lock becomes inverted.
Shift key becomes stuck on.
Screenshots

Good catch. Caps lock exhibiting weird behaviour is a known issue, but wondering what you mean by inverted in this case?

@BananaStem did you have any remappings to/from Caps Lock? And were there any other remappings apart from those in the screenshot?

When I say inverted I mean that when the caps lock is deselected everything is capitalised and vice versa.  I have not rebinded the caps lock either which is strange. Only bindings are the ones in my screenshot.

I was able to reproduce Shift getting stuck when remapped to Up when Num Lock was turned on. Not sure how Caps Lock was affected though, maybe an artifact of Shift getting stuck? @BananaStem can you confirm that NumLock was on when it happened and if you're still facing issues with Caps Lock as well or only Shift? This will be fixed for 0.19, assuming that Caps Lock part was also happening because of the same reason.

Thanks for checking that issue out. I unfortunately do not have a numpad. I am using the Ducky One 2 mini 60% keyboard.

Fixed in 0.19.0, please visit https://github.com/microsoft/PowerToys/releases/ for the latest release

I just ran into this (or a very similar) issue on version 0.19.0. After restarting my computer, the shift key was stuck. After randomly clicking around in various menus and hitting different keys it finally resolved itself. Restarting powertoys resulted in a repeat of this behavior.
I had keyboard manager enabled but did not have any mappings set up.


Implement Index.fillna

Implement Index.fillna via spark.DataFrame.fillna

Codecov Report

Merging #1102 into master will decrease coverage by 2.64%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1102      +/-   ##
==========================================
- Coverage   95.21%   92.56%   -2.65%
==========================================
  Files          34       34
  Lines        6896     6900       +4
==========================================
- Hits         6566     6387     -179
- Misses        330      513     +183

Impacted Files
Coverage Δ

databricks/koalas/missing/indexes.py
100% <ø> (ø)
:arrow_up:

databricks/koalas/indexes.py
96.29% <100%> (+0.09%)
:arrow_up:

databricks/koalas/usage_logging/__init__.py
24.54% <0%> (-72.73%)
:arrow_down:

databricks/koalas/usage_logging/usage_logger.py
50% <0%> (-50%)
:arrow_down:

databricks/koalas/__init__.py
78.72% <0%> (-8.52%)
:arrow_down:

databricks/conftest.py
92% <0%> (-6%)
:arrow_down:

databricks/koalas/frame.py
93.43% <0%> (-3.31%)
:arrow_down:

databricks/koalas/utils.py
95.09% <0%> (-3.07%)
:arrow_down:

databricks/koalas/groupby.py
89.34% <0%> (-2.05%)
:arrow_down:

databricks/koalas/namespace.py
85.8% <0%> (-1.55%)
:arrow_down:

... and 3 more

Continue to review full report at Codecov.

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

LGTM.

Thanks! merging.


[AutoPR web/resource-manager] typo: web/resource-manager/Microsoft.DomainRegistration

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4814

This PR has been merged into https://github.com/Azure/azure-sdk-for-js/pull/546


Added Korean Translation

If you fine, please add korean translation.

Thank you, I'll get this in the next update.


Support GIF Preview

Current latest version doesn't show GIF in the preview.
So in the PR, tries to implement GIF preview.

@lex111 @johndatserakis
Also passed the test!

Thank you @firstor  - looks and works great. Thank you @lex111 . I've pushed this to npm v2.1.2.

Thank you @lex111 @johndatserakis


Optimize for mobile devices

dear,I run the viewer on Pc that normal, display the images are well, but is not good work on mobilephone, i use chrome browser.can you help me to fix this problem?

We haven't yet optimized the code to be responsive, have a good user experience on mobile devices and respond consistently to touch events.  What needs to happen is, someone needs to create thoughtfully designed layouts for mobile devices.  It's something we're aware of, but haven't been able to prioritize to get it done.  But if you, or someone you know has the time and knowledge of how to do that, please have a go at it and consider contributing it back!  Thx.

sorry.i mean that not about the responsive.it is a image dispaly problem.pls see attchments.

This looks like it might be related to another old issue with the Cornerstone WebGL renderer and the device's browser.
Can you try to change Meteor's settings for 'public.ui.cornerstoneRenderer' to 'canvas' in your configuration file? If you could provide an anonymized version the image, it would be helpful. Also, if this is PHI in the screenshots above, please remove them.

thanks your support.i understand your mean and fixed this issue.


It should be easier to get a backend instance from a Batch or Session

What is the expected feature or enhancement?
It appears there is no way to get a backend instance from a Batch or Session.  But they do have service instances.  So if I want to get the backend associated with the Batch or Session I must write:
backend = batch.service.backend(batch.backend())

There should be a better way then this.
Acceptance criteria
It is easier for an user to get a backend instance from a Batch or Session.

Given passing a backend name to Session/Batch constructor is deprecated, we should change session.backend() to return a backend instance. How to make this transition backward compatible is going to be tricky though.


crash in onConfigurationChanged.

Issue details
Hello, I have the following crash in onConfigurationChanged.
i't seems that input is null
@Override
public void onConfigurationChanged (Configuration config) {
    super.onConfigurationChanged(config);
	boolean keyboardAvailable = false;
	if (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) keyboardAvailable = true;
	input.keyboardAvailable = keyboardAvailable;
}

Reproduction steps/code
I don't  have a reproduction to this crash. I collect the data from "Crashlytics"
Version of LibGDX and/or relevant dependencies
libgdx 1.5.3
Stacktrace
 Fatal Exception: java.lang.NullPointerException: Attempt to write to field 'boolean com.badlogic.gdx.backends.android.AndroidInput.keyboardAvailable' on a null object reference
       at com.badlogic.gdx.backends.android.AndroidApplication.onConfigurationChanged(AndroidApplication.java:407)
       at com.diwip.vslots.GameSlots.onConfigurationChanged(GameAcitivy.java:665)
       at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:4330)
       at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:4407)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5595)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

Please select the affected platforms

[ ] Android

According to the stack trace, it isn't the newConfig which is null... rather, the input is null. Not sure how that would happen.

Seems like it was invoked before the app was created or after it was disposed (IIRC android backend sets Gdx statics to null, by a recent change, but that was probably after 1.5.3 so it does not apply here).

Indeed... on that note, we might want to check whether isChangingConfigurations() before unsetting everything. I agree though that this is unlikely to be related to that change.

thank you all for the help.
it is probably because i'm not initializing gdx in case that the device not supports GL2
if (isDeviceSupportGL2(this)) {
            glView = initializeForView(gdxGame, cfg);
            if (glView instanceof SurfaceView) {
                SurfaceView glView = (SurfaceView) this.glView;
                glView.getHolder().setFormat(PixelFormat.TRANSPARENT);
                glView.setZOrderOnTop(true);
            }
            mainLayout.addView(glView);
        }

Neither way i think that onConfigurationChanged  should handle this scenario. it won't be wise not to call onConfigurationChanged super because of this.

Yes, that would be it.  You shouldn't be trying to invoke or use anything that is not initialized in any method.  This is not a LibGDX issue imo, as you are purposefully not initializing, you should have logic to cope with that correctly.


Add arXiv citation

Update citation in readme

Codecov Report

Merging #87 (0d9c83c) into main (f48d70b) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #87   +/-   ##
=======================================
  Coverage   94.28%   94.28%
=======================================
  Files          34       34
  Lines        1452     1452
=======================================
  Hits         1369     1369
  Misses         83       83

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 f48d70b...0d9c83c. Read the comment docs.


Override the source attribute in v3?

Monolog v3
We used to be able to use a source processor to override the source and host options but can no longer do this. This was required as the default source and host options inside docker are useless for logging across multiple servers as they all have the same ip and host name.
Here is the old processor code:
class SourceProcessor implements ProcessorInterface
{
    public function __invoke(array $record): array
    {
        $record['source'] = 'ops.' . $_ENV['ENVIRONMENT'];
        $record['host'] = 'ops.' . $_ENV['ENVIRONMENT'];

        return $record;
    }
}

How can we do this same thing with v3?

which source and host options are you talking about ? there is no such options in Monolog.

You'd need to write those in context or ideally extra data from the Processor, then use a custom formatter that moves the extra data into top level keys (or even just use a formatter to set the keys and skip the processor entirely).
For v3 since records are objects you cannot write arbitrary data on them.

Thanks the custom formatter does the trick.
<?php

namespace App\Monolog\Formatter;

use Monolog\Formatter\FormatterInterface;
use Monolog\LogRecord;
use stdClass;

class JsonFormatter implements FormatterInterface
{
    public function format(LogRecord $record)
    {
        $output = new stdClass;
        $output->source = 'subdomainhere.' . $_ENV['ENVIRONMENT'];
        $output->host = 'subdomainhere.' . $_ENV['ENVIRONMENT'];
        $output->context = $record['context'];
        $output->message = $record['message'];
        $output->timestamp = date(DATE_ISO8601);

        return json_encode($output).PHP_EOL;
    }

    public function formatBatch(array $records)
    {
        foreach ($records as $key => $record) {
            $records[$key] = $this->format($record);
        }

        return $records;
    }
}```


Added guard for API calls if glfwInit is no good

closes #105
Sorry for the commit stained with various edits, but I really hope the diff is simple. Anyhow, what is done:

Created special exception class if drawing context hasn't been initialized
glfwInit result stored in the static variable
dcv.plot.figure.Figure constructors made private, so the only way to construct them is via dcv.plot.figure.figure call, to narrow glfwInit status checking.
Added check for the glfwInit status in API calls, that throws if its GLFW_FALSE as the glfw docs says.

Making Figure constructors private allows us to check for glfwInit status only at main figure construction that all other constructor functions rely on (including imshow and plot), and in waitKey, imdestroy. Since Figure objects are registered by the module for further usage, having those constructors public was actually a bug in the first place.
@9il @timotheecour please let me know what you think. Also @timotheecour it would be great if you could test these changes on the environment where X server is not running.

tested it, it works as expected, thanks, good to merge!
(ie, throws on 1st use, but not on program start)

LGTM


bug: df/dt dot repeat unexpected behavior on double letters (e.g. >>)

Did you check docs and existing issues?

[X] I have read all the flash.nvim docs
[X] I have searched the existing issues of flash.nvim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
NVIM v0.9.4 Build type: RelWithDebInfo LuaJIT 2.1.1696883897
Operating system/version
Windows 11
Describe the bug
Context:
When I was editing some nested angle brackets like Vector<Vector<String>> , I ran dt> to place the cursor on >>.
When I ran .. instead of deleting until the next single >, it instead deleted until the next >>, which is unexpected.
This is better shown in the repro steps below.
Steps To Reproduce

nvim -u repro.lua
Insert the following text: aaa aaa aaa
Press _ to place cursor (|) on the first character:

|aaa aaa aaa

Press dta to delete the first a:

|aa aaa aaa

Pressing . will unexpectedly delete aa  instead of just one a:

|aaa aaa

Expected Behavior
On step 5, it should only delete one a and result in:
|a aaa aaa

Running the repro steps with nvim --noplugin will produce the expected behavior.
Repro
-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

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

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

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  { "folke/flash.nvim", opts = {} },
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

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

Reproduced with the latest version of flash.nvim + MacOS.


Migrate to WebExtensions

I'm curious if a WebExtensions version of the add-on can be made and submitted to AMO?

https://bugzilla.mozilla.org/show_bug.cgi?id=1372939

RESOLVED WONTFIX

I guess it's impossible...


Improved documentation of API?

The basic interface is well described in the documentation as I_d = AuthorYEAR(I);, but a few of the methods seem to output two components (Akashi2016, and Shen2013).
It might be nice to document what the extra component is?
If J_s and I_s represent the specular component, why is it given as an extra output?
Is this different than what I would get if I did  I_s = I - I_d;?

Is this different than what I would get if I did I_s = I - I_d;

I've looked into it. No, it's not any different, hence the same nomenclature.
I'll remove the extra output for consistency. 😄


Error in index.android.bundle:720

Error in mSupply Mobile
Error in index.android.bundle:720
Cannot delete a StocktakeItem belonging to a finalised stocktake
View on Bugsnag
Stacktrace
index.android.bundle:720 - value

View full stacktrace
Created automatically via Bugsnag

Bugsnag 404. Possibly resolved in stocktake fixes. Will wait for recurrence


add Dockerfile.vim to images

It would help to have some syntax highlighting for docker files
Vim syntax file for Dockerfile https://github.com/ekalinin/Dockerfile.vim

I forked the repo https://github.com/smanders/Dockerfile.vim
and added a CMakeLists.txt file in a commit https://github.com/smanders/Dockerfile.vim/commit/3893dd465d0a2652ea4cb4a3df44cedaec6151d3
cmake /path/to/source; make install would do the same thing as running the Makefile make install -- put the files in ~/.vim
but it would be nice if there was a .tar.xz package that could be installed system-wide so it wasn't only for a user (~ would be current user's home directory)

cmake_minimum_required(VERSION 3.24)
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
  # NOTE: CMAKE_INSTALL_PREFIX must be set before project() to take effect
  set(CMAKE_INSTALL_PREFIX ~/.vim CACHE PATH "Install path prefix, prepended onto install directories.")
endif()
project(Dockerfile.vim VERSION 21.09.06) # date of master branch commit
set(_dirs ftdetect ftplugin indent snippets syntax)
install(DIRECTORY ${_dirs} DESTINATION .)
set(CPACK_GENERATOR TXZ)
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PROJECT_VERSION})
include(CPack)

the VERSION matches the date of the master branch commit, and I've tagged and made a release https://github.com/smanders/Dockerfile.vim/releases
CPACK_INCLUDE_TOPLEVEL_DIRECTORY is OFF so there isn't an extra directory level (package-version/)
I override the default CPACK_PACKAGE_FILE_NAME so the OS (Linux, Windows) isn't in the name of the package since I'm pretty sure the files here are cross-platform

completed with commit to dev branch referenced above
installed to pro image, so syntax highlighting is available in pro, bld, dev images


Rounding error in labels on log scales when SI-prefix is used

This is via rstudio/ggvis#353. There is rounding error in labels when SI-prefix ("format": "s") is used.
Sample picture:

The spec that generated it:
{
    "data": [
        {
            "name": "mtc",
            "format": {
                "type": "csv",
                "parse": {
                    "wt": "number",
                    "foo": "number"
                }
            },
            "values": "\"wt\",\"foo\"\n2.62,1.41541835974404\n2.875,1.41541835974404\n2.32,2.81542165460052\n3.215,1.64912436154734\n3.44,0.587848581187845\n3.46,0.467425714260486\n3.57,0.109448815305455\n3.19,5.18821275771343\n3.15,2.81542165460052\n3.44,0.711584046328142\n3.44,0.416808112621654\n4.07,0.244144038422007\n3.73,0.344330453860728\n3.78,0.154361992585313\n5.25,0.0246670596528918\n5.424,0.0246670596528918\n5.345,0.127520394532229\n2.2,110.252749947443\n1.615,51.3507176244348\n1.835,195.556211687396\n2.465,1.71334788567256\n3.52,0.173107870154045\n3.435,0.154361992585313\n3.84,0.0746946692242686\n3.845,0.711584046328142\n1.935,15.7104998023996\n2.14,9.56075320913869\n1.513,51.3507176244348\n3.17,0.194130266183937\n2.77,0.861364424773407\n3.57,0.143006601100186\n2.78,1.64912436154734"
        }
    ],
    "scales": [
        {
            "name": "x",
            "domain": {
                "data": "mtc",
                "field": "data.wt"
            },
            "zero": false,
            "nice": false,
            "clamp": false,
            "range": "width"
        },
        {
            "type": "log",
            "name": "y",
            "domain": {
                "data": "mtc",
                "field": "data.foo"
            },
            "zero": false,
            "nice": false,
            "clamp": false,
            "range": "height"
        }
    ],
    "marks": [
        {
            "type": "symbol",
            "properties": {
                "update": {
                    "fill": {
                        "value": "#000000"
                    },
                    "size": {
                        "value": 50
                    },
                    "x": {
                        "scale": "x",
                        "field": "data.wt"
                    },
                    "y": {
                        "scale": "y",
                        "field": "data.foo"
                    }
                }
            },
            "from": {
                "data": "mtc"
            }
        }
    ],
    "axes": [
        {
            "type": "y",
            "scale": "y",
            "orient": "left",
            "format": "s",
            "layer": "back",
            "grid": true,
            "title": "foo"
        },
        {
            "type": "x",
            "scale": "x",
            "orient": "bottom",
            "layer": "back",
            "grid": true,
            "title": "wt"
        }
    ]
}

This is probably the result of FP error in the code that D3 uses for log scales. I'm not sure if this should be considered a bug or a feature.
d3.scale.log().domain([.01, 10]).ticks(10);
// [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.2,
// 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001,
// 0.8, 0.9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Thanks for the report! For better or worse, this is a case of Vega 'inheriting' D3 behaviors. The floating point values are correct (up to the IEEE 754 spec); this is primarily an issue of desired formatting.
Consider the results of the following:
var domain = d3.scale.log().domain([.01, 10]).ticks(10);
domain.map(d3.format('0.2f')); // forces fixed precision without SI units
domain.map(d3.format('s')); // shows annoying output documented above
domain.map(d3.format('0.1s')); // includes SI units, but with cleanly formatted numbers

The last example works well for this example. So, simply update your axis format property to 0.1s. This is not exactly documented on the D3 pages, but hopefully helps here! We will also consider improving the default settings Vega applies.

Great, thanks - that does make sense.


Set up JSON data storage & create module for storage

{
  { image: image_location,
    description: "i like bunnies",
    tag: "I", "bunnies",
    triple: ("I","like","bunnies"),
    emotion: happy,
    meme: meme_location,
  }
}

That is a great data design. Tomorrow I hope to get to the bottom of the issue of the CSS that I have. I am thinking of sticking with Bootstrap regardless of the issue Randyll and I had with it

One point, is that the emotions, need to be an array of the emotional value types and a numerical value for each one from zero to one. Which is then stored as a normalized value set.

Hi Alex,
Michael and I met today and we have a plan to sort out the interface so we have that covered for you.
Kind regards,
Randyll
On Apr 4, 2021, at 9:04 PM, a.v.mantzaris @.***> wrote:

That is a great data design. Tomorrow I hope to get to the bottom of the issue of the CSS that I have. I am thinking of sticking with Bootstrap regardless of the issue Randyll and I had with it
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHubhttps://github.com/mantzaris/Tagasaurus/issues/3#issuecomment-813131675, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACBYZQZEZKYC7FP7CHZ3VKDTHEEDHANCNFSM42LXLJDA.

That is Great news!

added the ability for the user to enter a description, for the some stop words to be removed, and then display the filtered result as a list to the user. Button functionality is there so that iterations on the algorithmics can be done

the emotions are added as an array which may be a bit of an excess to store the spare array but even though in terms of storage it is not a good idea it will make things a bit easier to pass around the full set of attributes

Now the way the JSON data is stored internally needs to be thought through. The JSON is important for the storage but prior to that the use of dictionaries should likely be a candidate.
Any ideas?

Ok, so sqlite is connected. I gave up on Dexie (wrapper of IndexedDB), as the nature of the indices and the query style although it looks awesome, was just too outlandish for the expectation of rigid RDBMS paradigms... maybe for a later version. Need to clean the code and simplify it for sure and reduce the unnecessary printing statements. Then the design needs some thought.

Question: do you think we should also be storing the full 'raw' photo description or only the tag list we infer?


[WIP] post NRT refactor

refactor compiler to avoid NRT quirks

Discovering various problems related to datamodel mismatch.  I will probably close this one and fix the issues first.


Lazy

I still don't understand why you're using Object.create(null) here. It provides absolutely no benefits and is not idiomatic Javascript.
Sorry but I will not be merging these.


Compile error when adding dependency for AWSIoT on Linux

Description
Attempting to compile an SPM project using version 0.0.15 of the AWSSwiftSDK and adding the AWSIoT module.  During the compile, an error is thrown stopping the compile.  I am performing the compile on Linux in the swift:5.4.3-amazonlinux2 docker image. I built a similar project in Xcode and did NOT get an error.  I was able to build.
Context
I am ultimately attempting to write a Lambda function in Swift that interacts with AWS IoT Core.
Environment

AWS Swift SDK version used: 0.0.15
Operating System and version (iOS/macOS/Linux): Linux
Xcode version (if applicable):
Swift compiler version (if applicable): 5.4.3
Swift Tools version (if applicable): 5.4

Reproduction Steps

create a folder and then swift package init --type executable to scaffold a swift project
set swift-tools-version:5.4
add  .package(name: "AWSSwiftSDK", url: "https://github.com/awslabs/aws-sdk-swift", from: "0.0.15") to the package dependencies of Package.swift
add .product(name: "AWSIoT", package: "AWSSwiftSDK") to the executableTarget dependencies
add import AWSIoT to the main.swift file
compile on Linux in a Docker

Dockerfile
FROM swift:5.4.3-amazonlinux2 as builder
RUN yum -y install git jq tar zip openssl-devel
WORKDIR /build-lambda
RUN mkdir -p /Sources/swift-lambda-function/
RUN mkdir -p /Tests/swift-lambda-function/
ADD /Sources/ ./Sources/
ADD /Tests/ ./Tests/
COPY Package.swift .
RUN cd /build-lambda && swift package clean && swift build -c release
Observed Behavior
The compile throws an error.  I do not see a specific error message.  There are many warnings, though, regarding 'additionalMetricsToRetain' is deprecated: Use additionalMetricsToRetainV2.
It does not look like that is the error, but I do not see any specific error.
I have seen this in the past with prior reported compilation issues on Linux that were a segfault with not much info displayed.
If I change the dependency to something else like AWSDynamoDB, it compiles without error.
Expected Behavior
app should compile
Possible Solution

attached is the output from the swift build in the Docker container if it is helpful.  I do not see any specific error
aws-sdk-iot-errors.txt
.

Thanks for the detailed bug report.  I did not try building on docker, but I tried compiling on an AL2 instance with swift tools 5.4.3 and I was able to get my project to compile.
Despite having the same version of Swift, I did have a couple differences in my dev environment:

I'm using "0.0.16" ( although, the changes between 0.0.15 and 0.0.16 should be irrelevant for the IoT use case)
Added the following to my Package.swift file -- but again, this should be irrelevant

    platforms: [
        .macOS(.v10_15), .iOS(.v13)
    ],

For your use case, is it critical that you build in a docker container, or would it be possible if you just work on an AL2 instance?
With regards to "why this doesn't work in a container" -- I suspect there is some difference in compiling within a container which makes the swift compiler "unhappy".  For example, Dynamo's DynmaoDBClient.swift is 217kb, where IoT's client.swift is 770kb.  Similarly, Dynamo's "Models.swift" file is 1.34MB while IoT's is at 3.52MB -- One theory is that swift isn't giving you an error because these files are just too large and swift is just segfaulting.
Let me know if running a container is critical to your application -- if so, i can try some to break up these files and see where things are failing.

Thanks fo looking into it.  Using Docker for the builds is crucial.  Most of the work we do is with Server Side Swift and developing on a Mac. For example, deploying Lambda functions to AWS. Using Docker is really the only practical way to compile the Swift code on your Mac.

Thanks for the info John.  I bumped the RAM allocated to Docker on my machine from the default of 2GB up to 4GB and the compile worked.  Good to know.  Thanks!


Added support to length of Binary and List.

Note: migrated from original JIRA: https://issues.apache.org/jira/browse/ARROW-11420
None

I guess we could close this issue now.


Add Scene Type and/or Scene Tags

Add the possibility to add type and/or tags on a scene.
The goal is to make sure that every session contains a mixture of different types of scenes (investigation, encounter, excitement, ...) to keep the session balanced

Possible types:

investigation
encounter
combat
information

Tags:

calm
exciting
scary

The goal of all this is to plot a balanced session. A balanced session means having both active and passive scenes and both exciting and calm ones.
I have laid out a series of scene types. The duration is based solely on a personal experience and within my style of storytelling and it is exclusively a generic idea based on experience and post-session analysis.
Scene Types

type
description
duration
active

Exposition
Impart information to the players
5'
no

Recap
Player characters' driven recap for the party
5'
no

Planning
Player characters' driven planning for the party
10'
no

Investigation
The player characters must investigate or explore a location
15'
yes

Decision
The player characters must take a decision
5'
no

Preparation
The player characters have to prepare something, similar to planning, just DOING something
10'
yes

Encounter
Interaction with a non-player character
15'
yes

Combat
Combat with a non-player character
15'
yes

Scene Excitement
A scene should ALWAYS provide the player characters with something to DO; however, to make a scene EXCITING, something must HAPPEN. In order to identify if a scene is exciting or not, one has to answer one simple question: is something happening to the player characters, triggered by an external source?
Recap
So, in order to balance a session, one has to analyse the types of scene and how many scenes are exciting.
The result (in the session or in the act) should check:

the % of active scenes
the % of exciting scenes

In a typical (N)ABT (or Story Circle) we have four quadrants, and they should be balanced as such:

Quadrant
Activity
Excitement
Notes

Need
25%
25%
Reserve the excitement for the NEED

And
75%
25%
Lot of things to DO, but player characters' driven

But
50%
75%
Less things to do, but more things done to them

Therefore
75%
50%
Back to very active and exciting


PDF Upload Fails in Latest Version Due to Unresolved Dependencies

Description:
Since updating to the latest version, uploading PDF files no longer works. The process fails due to multiple unresolved dependencies, leading to a series of errors.
Steps to Reproduce:

Update to the latest version of the comic-translate repository.
Attempt to upload a PDF file.
Observe the errors that occur during the upload process.

Observed Behavior:
The upload process fails immediately due to a missing dependency (fitz).
After attempting to resolve the fitz dependency manually, additional syntax errors and missing dependencies are encountered.
Expected Behavior:
PDF files should upload successfully without any missing dependencies or syntax errors.
Environment:
OS: macos & windows
Python version: 3.10
Version of comic-translate: main - latest

Resolved


Play KML tour

Description
PR to add a new Kotlin sample "Play KML tour" in Visualization category.
Links and Data
Sample Epic: runtime/kotlin/issues/#1762

@prupani-7 Thanks for the review, I'll address the comments here:

When Play button is clicked the tour animation starts instantly as the KML file has been loaded with the tour status as TourStatus.Initliazed. There are a couple of frames when the tour does not move in the beginning, making it seem like it may be loading. You can verify this by viewing the progress of the tour during the beginning.
The first location's Esri HQ pin gets partially hidden due to the dataset used. The same behavior is in my device and Runtime as well.


Errors with Radio buttons

I have these warnings in HB console until Radio as exception added to config:
[01/02/2024, 23:42:34] [homebridge-loxone-proxy] This plugin generated a warning from the characteristic 'Configured Name': Characteristic not in required or optional characteristic section for service Outlet. Adding anyway.. See https://homebridge.io/w/JtMGR for more info.
...
...
[01/02/2024, 23:42:34] [homebridge-loxone-proxy] This plugin generated a warning from the characteristic 'Configured Name': Characteristic not in required or optional characteristic section for service Outlet. Adding anyway.. See https://homebridge.io/w/JtMGR for more info.
[01/02/2024, 23:42:34] [LoxonePlatform] Connected to Miniserver
SyntaxError: Invalid or unexpected token
    at new Function (<anonymous>)
    at Radio.callBackHandler (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/src/loxone/items/Radio.ts:42:29)
    at Radio.LoxoneAccessory.callBack (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/src/LoxoneAccessory.ts:95:12)
    at /var/lib/homebridge/node_modules/homebridge-loxone-proxy/src/loxone/LoxoneHandler.ts:69:56
    at Array.forEach (<anonymous>)
    at handleAnyEvent (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/src/loxone/LoxoneHandler.ts:69:36)
    at Object.socketOnEventReceived (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/src/loxone/LoxoneHandler.ts:96:17)
    at WebSocket._handleBinaryEvent (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/node_modules/lxcommunicator/modules/WebSocket.js:934:78)
    at WebSocket._binaryMessageHandler (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/node_modules/lxcommunicator/modules/WebSocket.js:773:26)
    at W3CWebSocket.onmessage (/var/lib/homebridge/node_modules/homebridge-loxone-proxy/node_modules/lxcommunicator/vendor/WebSocketWrapper.js:107:62)
[01/02/2024, 23:42:35]

can you turn on debug logging in homebridge and reproduce the error?

I've tried to enable debug mode and 'Remove All Cached Accessories' but now I don't have these error messages in logs...

Are you still having issues with it?

please reopen if you are still having issues


Opening Virtual Datasets raises error: "Request failed with status code 500"

Dear h5web-Team,
I created a h5 file with a  virtual dataset. I am following, in general, this example: https://github.com/h5py/h5py/blob/master/examples/eiger_use_case.py
As a result, I get a h5 file, where data contains my 3D stack in '/data/'.
I thought I check the content out in h5web because I work on a jupyterhub. I get "Request failed with status code 500"
What is the minimum requirement to visualize your own created h5 files with h5web, please?
In silx, I am able to see my data.
Thank you.

I generated the file with the snippet you linked (https://github.com/h5py/h5py/blob/master/examples/eiger_use_case.py) and I could open the VDS with jupyterlab-h5web.
Perhaps it is an issue of jupyterlab-h5web version ? Which version do you use ?

Cool that it works for you. How do you determine the version of jupyterlab-h5web, please?

You can do one of the following:

Open a "Terminal" in JupyterLab and type pip list | grep jupyterlab-h5web
Open a notebook, type !pip list | grep jupyterlab-h5web in a cell and execute it
Open a notebook and type

from jupyterlab_h5web import __version__

print(__version__)

in a cell and execute it

Thank you. It only worked in the terminal. Output: jupyterlab-h5web 1.3.0
I executed above example in a new notebook in my conda env. The files were created, I could not visualise them, my conda env does not in it jupyterlab-h5web. Nevertheless, when I load ESRF h5 files, I see them in jupyterlab-h5web.
That is what surprises me.

Output: jupyterlab-h5web 1.3.0

I figured such: I tried with latest version (7.1.1) to make it work. 1.3.0 is quite old: you should ask the maintainer of the JupyterHub instance to update it.

Nevertheless, when I load ESRF h5 files, I see them in jupyterlab-h5web.

Perhaps these do not have external VDS ? :shrug:

I ask them for an update and see if this will resolve this issue!
ESRF files seem to have links down to the single h5 files.
Nevertheless, it should still work the visualisation with the h5web. I update you with new information.

The version was updated and it works now! Thank you for your help. Much appreciated.

Perhaps these do not have external VDS ?
Or proper linking. I continue to explore this feature.

Great to hear!


intermittently stream was reset : cancel exception

I use okhttp version 4.9.3 on android device.
Intermittently, got exception 'Stream was reset: Cancel'
I tried many ways but couldn't solve it.
Stacktrace
Caused by okhttp3.internal.http2.StreamResetException stream was reset: CANCEL okhttp3.internal.http2.Http2Stream.takeHeaders (Http2Stream.kt:148) okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders (Http2ExchangeCodec.kt:96) okhttp3.internal.connection.Exchange.readResponseHeaders (Exchange.kt:106) okhttp3.internal.http.CallServerInterceptor.intercept (CallServerInterceptor.kt:79) okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.kt:109) okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.kt:34)
Do you have any ideas?
Url length is short, GET method and have one query parameter.

I think most likely reason is that you are either getting a timeout, or something is cancelling the Call instance.  We can't offer direct support here, so please continue on a forum like stackoverflow.


Merge pull request #2 from conda-forge/master

Updated hagerstrand-feedstock to v0.0.7

Checklist

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

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


EntityDirtyCheckPlugin doesn't seem to function

I'm submitting a...

[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request
[ ] Other... Please describe:

Current behavior
EntityDirtyCheckPlugin doesn't seem to function.
isDirty / someDirty doesn't seem to update.
reset doesn't seem to change the store, though the @DirtyCheck - Revert action is triggered
Expected behavior
It should work
Minimal reproduction of the problem with instructions
https://stackblitz.com/edit/akita-todos-app-hxhgp9

Add an item to the list
Observe that isDirty / someDirty doesn't update
Click reset
Observe the list or the store doesn't change

It doesn't work when setting { entityIds } either

Add an item to the list
Click "Init new collection with entity ids"
Add an item to the list
Observe that isDirty / someDirty doesn't update
Click reset or reset(ID)
Observe the list or the store doesn't change

DirtyCheckPlugin seems to work as expected
https://stackblitz.com/edit/akita-todos-app-hhkwub
Relevant code
todos-page.component.ts
import { Component, OnInit } from '@angular/core';
import { initialFilters, VISIBILITY_FILTER } from '../filter/filter.model';
import { Todo } from '../state/todo.model';
import { TodosQuery } from '../state/todos.query';
import { TodosService } from '../state/todos.service';
import { Observable } from 'rxjs';
import { ID, EntityDirtyCheckPlugin } from '@datorama/akita';
import { map } from 'rxjs/operators';

@Component({
  selector: 'app-todos-page',
  templateUrl: './todos-page.component.html'
})
export class TodosPageComponent implements OnInit {
  collection: EntityDirtyCheckPlugin;
  ids: ID[];
  todos$: Observable<Todo[]>;
  activeFilter$: Observable<VISIBILITY_FILTER>;
  filters = initialFilters;

  constructor(private todosQuery: TodosQuery,
    private todosService: TodosService) {
  }

  ngOnInit() {
    this.todos$ = this.todosQuery.selectVisibleTodos$;
    this.activeFilter$ = this.todosQuery.selectVisibilityFilter$;

    /** All entities will also track new entities added to the store */
    this.collection = new EntityDirtyCheckPlugin(this.todosQuery);
    this.collection.setHead();
  }

  add(input: HTMLInputElement) {
    this.todosService.add(input.value);
    input.value = '';
  }

  complete(todo: Todo) {
    this.todosService.complete(todo);
  }

  delete(id: ID) {
    this.todosService.delete(id);
  }

  changeFilter(filter: VISIBILITY_FILTER) {
    this.todosService.updateFilter(filter);
  }

  reset(ids: ID | ID[]) {
    this.collection.reset(ids);
  }

  sethead() {
    this.collection.setHead();
  }

  initWithIds() {
    this.ids = this.todosQuery.getAll().map(x => x.id);
    this.collection = new EntityDirtyCheckPlugin(this.todosQuery, {entityIds: this.ids});
    this.collection.setHead();
  }
}

todos-page.component.html

	add_alarm
	<input type="text" class="form-control" placeholder="Add Todo..." #input (keydown.enter)="add(input)">

<app-todos-filters (update)="changeFilter($event)" [filters]="filters" [active]="activeFilter$ | async">
</app-todos-filters>

<app-todos [todos]="todos$ | async" (delete)="delete($event)" (complete)="complete($event)"></app-todos>

<button (click)="reset()">reset</button>
<button (click)="sethead()">sethead</button>

IsDirty(): {{ collection.isDirty() }}

<button (click)="initWithIds()">Init new collection with entity ids</button>
<button (click)="reset(ids)">reset({{ ids }})</button>
<button (click)="sethead()">sethead</button>

IsDirty({{ ids }}): {{ collection.isDirty(ids, false) }}

SomeDirty(): {{ collection.someDirty() }}

@snebjorn Are you trying to watch dirtiness for entities count?

I'm trying to reset the store to the head state.
So at the beginning the head is the initial (empty) list.
I add some items and want to revert everything.
Next up I want to add some items and set that as my head. Then add/remove some and revert to the head state.
I'm really just exploring the API atm, no real goal - yet :)

@snebjorn
Ok so it sounds like what you might need is the regular DirtyCheckPlugin, the EntityDirtyCheckPlugin watches for changes in the entities that he holds, but doesn't monitor removal or addition of new entities like you want.
In the (sample application)[http://akita.surge.sh/widgets] check out the Widgets tab and check out the (source code)[https://github.com/datorama/akita/blob/master/angular/playground/src/app/widgets/widgets.component.ts].
The DirtyCheckPlugin there is watching the entities property and get's triggered upon addition or removal, and I thinks that's what you are looking for.
I'll update the docs to make it clearer.

@shaharkazaz I see, thank you. You're right the docs threw me of.
It says this :)
/** All entities will also track new entities added to the store */
this.collection = new EntityDirtyCheckPlugin(this.widgetsQuery);

@snebjorn I'm Glad I could help :)


Suggested Integration Changes for AE2

NB: this is mainly based on my for of AE2 for 1.11+, Applied Llamagistics.

Universal cables should be registered to be a ForgeEnergy tunnel attunement. You're free to register it conditionally as IC2 if you want though

Commented out recipes for Certus and Fluix processes, as I put back the integration on the AL side with its custom recipe system. I've left sand and nether quartz in because that's not exclusive to AL.
NB: this commit should not be merged to the 1.10 branch as such integration does not exist there.

Thanks!

Do note that the second commit (which comments out the crusher/enrichment recipes) only keeps compatibility with Applied Llamagistics. Ideally, one would modify this to load the recipes in if AE2 and not Applied Llamagistics is detected. Not sure if they have separate mod IDs or not, though.

Nope, same modid. Mekanism does have IMC methods for them to add the recipes if they desire though (doesn't even need the API jar)

@thiakil Would restoring the IMC calls affect Applied Llamagistics in any way, though?

AL adds slightly different recipes (numbers differ slightly IIRC). Short answer is that I feel it better to leave it to the mod adding the items to decide what is fair exchange ("balance" to some)

So, if I understand @thiakil correctly, ideally we should/could submit a PR to AE2 (not AL2) which adds the necessary IMC calls to add the in this PR removed recipes?

That is a solution, yes


@import global path cache "problem?"

not entirely sure if its a cache problem, but, importing Core-ui I found several instances of "undefined variable"...
turn out to be that in the bootstrap/bootstrap.scss there is a
@import 'variables';
and after that, in  core/core.scss also there is a line with
@import 'variables';
the second one is not evaluated (maybe because is cached from before).
I ended up copying the files to my project and changed this line to
@import './variables'; to search this resource in the same directory and everything works fine (well, repiting the same proccess in the rest of the files).
now, they use babel/webpack to transpile their module...
I think it would be nice to first search for @import 'some_resource' in the same directory and then try to get it from the global path, just for compatibility reasons to others compilers in order to be capable to import scss from third party modules

The variable $card-border-radius-inner is not defined after all. With your tip and declaring of the variable it works for me.

Hello,
Having the same issues as mentioned before.
The $card-border-radius-inner seems not to be defined, so i switched it to $card-border-inner-radius which fixes that issue.
However, next I get an error that $gray-200 is not defined.
If I hardcode the color in, i will get undefined for gray-300 and so on.
Trying to run this on fourseven:scss

And changing
@import 'variables';
To
@import './variables';
Doesn't work for you @snowbane ?

I have tried that, sadly it does not work.

@josensanchez ,
where did you place your coreUI scss folder? Is it in meteor's client?
Any chance you could give me a breakdown of your folder structure?

nop... if you put everything in the client folder, it would be evaluate following the meteor file load order and the imports would be a mess.
I place coreUI inside of the imports directory and in one main.scss on the client directory add the next lines
$card-border-radius-inner: 0px;

@import  '{}/imports/CoreUI-React/React_Starter/scss/style.scss';

well, something like that... we organize files differently, but if it's not clear, I'm talking about this file
https://github.com/mrholek/CoreUI-React/blob/master/React_Starter/scss/style.scss

To resolve the issue, this is what I did in my main.scss file:
`// Override Boostrap variables
@import "../imports/ui/scss/bootstrap-variables";
// Import Bootstrap source files
@import "../node_modules/bootstrap/scss/bootstrap";
// Override core variables
@import "../imports/ui/scss/core-variables";
// Import core styles
@import "../imports/ui/scss/core/variables";
@import "../imports/ui/scss/core/mixins";
@import "../imports/ui/scss/core/core";
@import "../imports/ui/scss/core/typography";
@import "../imports/ui/scss/core/animate";
@import "../imports/ui/scss/core/aside";
@import "../imports/ui/scss/core/avatars";
@import "../imports/ui/scss/core/badge";
@import "../imports/ui/scss/core/breadcrumb-menu";
@import "../imports/ui/scss/core/breadcrumb";
@import "../imports/ui/scss/core/buttons";
@import "../imports/ui/scss/core/callout";
@import "../imports/ui/scss/core/card";
@import "../imports/ui/scss/core/charts";
@import "../imports/ui/scss/core/dropdown";
@import "../imports/ui/scss/core/dropdown-menu-right";
@import "../imports/ui/scss/core/footer";
@import "../imports/ui/scss/core/grid";
@import "../imports/ui/scss/core/input-group";
@import "../imports/ui/scss/core/loading";
@import "../imports/ui/scss/core/mobile";
@import "../imports/ui/scss/core/modal";
@import "../imports/ui/scss/core/nav";
@import "../imports/ui/scss/core/navbar";
@import "../imports/ui/scss/core/progress";
@import "../imports/ui/scss/core/sidebar";
@import "../imports/ui/scss/core/switches";
@import "../imports/ui/scss/core/tables";
@import "../imports/ui/scss/core/widgets";
@import "../imports/ui/scss/core/layout";
@import "../imports/ui/scss/core/others";
@import "../imports/ui/scss/core/utilities";
@import "../imports/ui/scss/core/temp";
@import "../imports/ui/scss/core/rtl";
// Custom styles
@import "../imports/ui/scss/custom";`

This issue happens because the core.scss does not start with '', so it is loaded before the others which start with '', so you get XXX is undefined error

This is really annoying. I am trying to combine font-awesome-pro with bootstrap, but because both define the same include names, things get messed up with a lot of undefined variables, although the imports come from different folders.
Is there any workaround for this? It makes combining complex sass libraries nearly impossible.


Cox Regression

I've added Cox Regression (from my previous implementation in my own package after some clean up). It took longer than expected but my old code needed quite a bit polishing...
There are a few caveats though:

The formula needs to have an explicit 0+... for the regression to work
The code I wrote works both for Vector{EventTime} and EventTimeVector, except DataFrames + ModelFrame only work well together with EventTimeVector. Even if I add some DataFrames.upgrade_vector method to EventTimeVector, for some reason ModelFrame screws it up and only takes the time component of the vector. Also, DataArray conversion of a EventTimeVector does not really seem feasible as the data part of a DataArray is supposed to be an Array, which EventTimeVector is not. Vector{EventTime} seems to work just fine on the other hand.
I'm not sure how to set up my fork to build the docs locally and check that everything is fine when I change/add things, how would that work?
In my package I have the Nelson-Aalen estimator for the cumulative hazard, which can be easily generalized to get an estimate of baseline cumulative hazard for a fitted Cox Model. It really is the same as Kaplan Meier except this line would be replaced by something like:
chaz += d_i / n_i
Maybe it makes more sense that you add this feature as you know better how to integrate it with the rest of the package, otherwise I can give it a shot.

Everything else seems to work well: I get the same results as this paper (check page 6) on a test dataset that I have included in the tests. Performance seems pretty good but I no longer have anything to compare it with as I'm only set up to do Cox Regression in Julia on my machine: if you have some other set up (i.e. R or matlab) I'd be curious to see some benchmarking.
On the more technical side, I'm fitting Cox Regression maximizing the "partial log likelihood" (formulas here) using Efron's method in case of ties. I'm computing value, gradient and hessian and using Newton algorithm with backtracking (implemented in the optimization.jl file, it actually is such a simple algorithm that I don't think there's much need to depend on some optimization package and I preferred to simply re-implement it).

Here's a code snippet to try it out:
using Survival, DataFrames
filepath = joinpath(Pkg.dir("Survival", "test"), "rossi.csv")
rossi = readtable(filepath)
rossi[:event] = EventTime.(rossi[:week],rossi[:arrest] .== 1)
outcome = coxph(@formula(event ~ 0+ fin+age+race+wexp+mar+paro+prio), rossi; tol = 1e-8)

I'M JUST SO HAPPY. This is awesome, @piever, thank you! The 0.7 CI failures are due to some macro changes in Base that have been breaking everything.
I'll do a more thorough review of this soon. Thanks again!

Maybe it makes more sense that you add this feature as you know better how to integrate it with the rest of the package

I've actually been meaning to generalize the internal Kaplan-Meier function to update a state object that can be specialized for different estimators. I realized when I went to implement cumulative incidence with competing risks that it's a trivial modification of that function. I hadn't looked into Nelson-Aalen yet but if it's in a similar boat then that's all the more reason for a generalization there. 🙂

using Efron's method in case of ties.

👍 I had started working on Cox regression a while back and I had only done Breslow ties because I'm lazy. I do love that Norm Brewslow himself has said not to use that estimator. 😂 It's just so easy to implement though!

I don't think there's much need to depend on some optimization package and I preferred to simply re-implement it

💯

The formula needs to have an explicit 0+... for the regression to work

I wonder if we could inspect the Formula object and remove an intercept if it exists.
As an aside, I'd be interested to hear your opinion of EventTimeVector in general. I'm not super convinced that it's all that convenient or useful and a while back I considered just ditching it altogether.

The upgrade_vector issue should soon go away when we backport DataTables improvements to DataFrames: the constructor will now just use whatever column type you passed without trying to "upgrade" it. OTOH supporting missing values with EventTimeVector is going to require a custom implementation. Maybe better leave this as an optimization for the compiler, which could decide to store Vector{EventTime} as two separate vectors, one for each of the fields (which should save some memory due to alignment constraints).

Thanks for all the feedback!

I've actually been meaning to generalize the internal Kaplan-Meier function to update a state object that can be specialized for different estimators. I realized when I went to implement cumulative incidence with competing risks that it's a trivial modification of that function. I hadn't looked into Nelson-Aalen yet but if it's in a similar boat then that's all the more reason for a generalization there.

Nelson-Aalen gives you the cumulative hazard (i.e. -log(survival)) and it has the advantage that generalizing it to a Cox model fit is completely trivial. Some people actually estimate the survival function by exponentiating the Nelson-Aalen estimator. Instead, generalizing Kaplan-Meier to a Cox model fit is slightly more convoluted, especially in case of ties.

As an aside, I'd be interested to hear your opinion of EventTimeVector in general. I'm not super convinced that it's all that convenient or useful and a while back I considered just ditching it altogether.

I'm not very fond of the EventTimeVector to be entirely honest. Creating a Vector{EventTime} is very easy with the dot broadcast syntax, plus it integrates nicely with DataFrames and DataArrays and it already works in case of missing data.

I should have addressed most remarks. I've improved the type management, so that now it should be able to accept matrices of any type without giving unexpected method errors (which I guess were one of the corner cases @nalimilan had in mind).
The remaining big thing left to do for Cox is to have an estimate of the baseline cumulative hazard, but I guess that should be together with an implementation of Nelson Aalen (which I'd be happy do in a separate PR, after this one is merged).
In terms of performance I'm reasonably satisfied with this implementation (approx. 5 times faster than matlab on my colleague's computer on this dataset that I'm testing). The main thing it lacks is multithreading, but I thought that should wait until threading in julia becomes a bit more stable.

In terms of performance I'm reasonably satisfied with this implementation (approx. 5 times faster than matlab on my colleague's computer on this dataset that I'm testing)

That's awesome. Nice work!!

The main thing it lacks is multithreading, but I thought that should wait until threading in julia becomes a bit more stable.

Yeah, agreed. Multithreading is still considered experimental in Julia, though some packages do use it, e.g. GLM. Probably not worth going down that road until it's solid though. Hopefully in Julia 1.0.

I'm not very fond of the EventTimeVector to be entirely honest.

Okay thanks, I appreciate your input. Maybe we should just get rid of it then in a future PR. Sometimes convenience is more important than speed. (A good example of that is DataArrays, which are convenient but slow, versus NullableArrays, which are fast but very inconvenient.)

Okay thanks, I appreciate your input. Maybe we should just get rid of it then in a future PR. Sometimes convenience is more important than speed. (A good example of that is DataArrays, which are convenient but slow, versus NullableArrays, which are fast but very inconvenient.)

Don't get me wrong: I'm impressed that you got a more efficient version of a Vector{EventTime} to behave just like  Vector{EventTime} to an extent that, even though I had designed Cox for Vector{EventTime}, when I fed it EventTimeVector it still worked. It's mainly that I believe that a lot of users could be confused by having the two things. Also, having it interact with the rest of the Julia data ecosystem could be tricky:

missing data would have to be reimplemented
I'm not sure how it would work to write/read the EventTimeVector to CSV with the existing tools (i.e. CSV or TextParse or DataFrames.readtable). Instead adding simple  parser for EventTime would allow to write it and read it easily just by specifying the type on the csv reader

I agree completely. Like I said I was never that convinced that it was useful to have EventTimeVector. (Plus I never did benchmarks, so who knows whether it was actually more efficient than Vector{EventTime} 😛)

Please let me know if there is more feedback I need to incorporate. As far as I'm concerned, I'm happy with the current version :)

The implementation looks great to me. Tests for more corner cases would be good but I'm not really sure what to suggest offhand. Maybe @nalimilan would have some ideas?

Actually there still is one thing to figure out: the test using lower precision floating points converges with a given accuracy in a given number of iterations on my machine but not on Travis, I should maybe try a larger tolerance to the test. The only other tests that come to mind are:

using interaction terms
using a nonzero L2 cost

Actually there still is one thing to figure out: the test using lower precision floating points converges with a given accuracy in a given number of iterations on my machine but not on Travis

Huh, interesting. Travis runs on x86-64 Linux, dunno what the other specs are for their VMs. What is the machine you're testing that on?

I was also surprised, this is my versioninfo:
julia> versioninfo()
Julia Version 0.6.0
Commit 903644385b (2017-06-19 13:05 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin13.4.0)
  CPU: Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, haswell)

Maybe they have some different libraries (MKL versus openblas or something like that). I guess the only thing to do is lower the accuracy required when fitting with Float32 in the tests to make sure it also passes on Travis.

This is Travis':
$ julia -e 'versioninfo()'
Julia Version 0.6.0
Commit 9036443 (2017-06-19 13:05 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, ivybridge)

Travis uses the official Julia binaries, so it should be OpenBLAS rather than MKL. Kinda mysterious... I can't imagine that it would be an Ivy Bridge vs. Haswell thing.

I can't imagine that it would be an Ivy Bridge vs. Haswell thing.

Doesn't sound impossible to me. Maybe we're just unlucky that a small difference affects convergence. Float32 is a fragile type, isn't it? What's funny it that it works fine here on my skylake-avx512 under Linux... Maybe remove one or two variables from the formula?
Regarding cases to test, I would try to cover a few scenarios, like: model without independent variables, model with a single continuous variable, model with a single categorical variable, model with both. Same for interactions: interaction between continuous variables, interaction between categorical variables, interaction between continuous and categorical. Of course there's no limit to the number of combinations one can try, so you need to stop at some point. :-)

Regarding cases to test, I would try to cover a few scenarios, like: model without independent variables, model with a single continuous variable, model with a single categorical variable, model with both. Same for interactions: interaction between continuous variables, interaction between categorical variables, interaction between continuous and categorical. Of course there's no limit to the number of combinations one can try, so you need to stop at some point. :-)

Good intuition, there actually is an issue with categorical variables:
when I do @formula(y ~ 0 + x) and x is categorical, I get one term per value, which is actually overcomplete, I'd like to take one out as the "intercept".  Do you know a clean solution?

Glad to hear that being a pain can sometimes be useful! Actually it's perfectly expected that 0 + x gives a full rank matrix when x is categorical. This is the correct specification e.g. for a linear regression model without a separate intercept (but where effects are included in the dummies).
Anyway the 0 + hack was not ideal for the Cox models, so this seems to indicate we need a deeper solution. Maybe there should be an argument when building the model matrix to say that the model family does not allow estimating the intercept/baseline hazard.
@kleinschmidt Do you have ideas about the best way of supporting this? Maybe we should open an issue in StatsModels.jl.

I'm happy to give a look in StatsModels and see if there's a way to add an option to avoid the intercept for continuous and categorical variables and try to make that option the default in case of Cox regression via a dependency on StatsModels. A possible design is to add a function in StatsModels:
add_intercept(T) = false
that determines whether here an intercept should be automatically included or not. Then all we'd need to do would be overload it in Survival with:
StatsModels.add_intercept(T::Type{CoxModel}) = true
But first it'd be good to understand a bit better what's the dependency situation with DataFrames/DataTables/StatModels now and in the immediate future, I'm still a bit confused about it.

But first it'd be good to understand a bit better what's the dependency situation with DataFrames/DataTables/StatModels now and in the immediate future, I'm still a bit confused about it.

StatsModels used to depend on DataTables, but it's going to switch to DataFrames once it will be ported from DataArrays to Nulls. Anyway, that doesn't really change its principle, which is that packages implementing models do not need to depend on either of these packages, and yet get the formula interface for free.
StatsModels.add_intercept is an interesting approach, but that would force packages to depend on StatsModels, and therefore on DataFrames/DataTables. We could define the function in StatsBase instead to avoid this. Better file an issue against StatsModels with this suggestion to discuss it.

I'm trying to catch up but not clear what the problem with a full rank matrix with ~0+x is. Perhaps it would be best to open an issue over at JuliaStats/StatsModels.jl, and explain what the desired behavior is?  The current behavior is this;

With ~1+... or ~..., an intercept column is generated and default (dummy coded) contrasts are used for categorical variables, where n-1 indicator columns are generated for n levels)
With ~0+...`, no intercept column is generated, and the first categorical variable in a main effect is "promoted" to full-rank dummy coding (n indicator columns for n levels) in order to avoid a rank-deficient model matrix.

I think there's pretty good consensus about getting rid of the default intercept term, which would make the ~x equivalent to ~0+x instead of ~1+x, and get rid of the 0+x altogether.  I want to make that change in the first proper release of StatsModels since it's a pretty breaking change...
One possibility is that if you specify contrasts manually it'll use them even if it's non-sensical for a regression analysis (generates an overcomplete or deficient matrix...). Or we could add a flag that would do that.

@nalimilan I see, hand't understood that StatsModel would depend on DataFrames. Then yes, the add_intercept function should live in the dependency that's shared by the whole ecosystem, which I guess is StatsBase.

I'm trying to catch up but not clear what the problem with a full rank matrix with ~0+x is.

The thing is that Cox models are "intercept invariant", that is to say, if the intercept is given, the model becomes overcomplete.
Maybe it's better explained with a simple example: imagine there's a database with patients and a column corresponding to treatment which could assume values 0 (no treatment) or 1 (treatment). In this case the Cox regression matrix should only have one column. If treatment is continuous, this can be achieved with:
@formula(event ~ 0 + treatment)
which is a bit counterintuitive for users, as Cox regression can never have an intercept, so it feels strange to have to specify it.
The further complication with this "hack" is that, if the users turns treatment into a categorical variable (which actually makes a lot of sense), the formula:
@formula(event ~ 0 + treatment)
would now correspond to a regression matrix with two columns so, again, ill-defined Cox regression.
My idea would be to have a way to specify that some models (including Cox) do not want intercept, in the sense that no intercept should be automatically added and, in the case of categorical variable, only n-1 values of those variables should be considered, so basically I want the same as what is given by @formula(event ~ 1+ ...), but dropping the intercept column. A mechanism that I was proposing to solve this without an explicit DataFrames dependency is via overloading a (StatsBase ?) function that should prescribe how each model should behave relative to the intercept.
If the plan is to take out the automated intercept, I have two questions:

When is the first proper release of StatsModels scheduled?
if treatment is categorical and can take 2 values, given that both @formula(event ~ 1 + treatment) and @formula(event ~ 0 + treatment) == @formula(event ~ treatment) would have 2 columns, would there be any way to specify that we actually just want one column?

I see. The easiest "bandaid" would be to add a drop_intercept method on ModelFrame which user code can call before generating the model matrix, or possibly a flag in the ModelFrame constructor that specifies whether there's an "implicit intercept" already (or more generally whether to do the promotion of contrasts to full rank).

The release schedule for StatsModels depends on when the release of DataFrames happens that will remove the statsmodels code. I imagine that won't be until after JuliaStats/DataFrames.jl#1220 is merged, but @nalimilan and @ararslan would know better than me...

I see. The easiest "bandaid" would be to add a drop_intercept method on ModelFrame which user code can call before generating the model matrix, or possibly a flag in the ModelFrame constructor that specifies whether there's an "implicit intercept" already (or more generally whether to do the promotion of contrasts to full rank).

What do you mean by "user code"? AFAIK the idea behind StatsModels is that Survival.jl should not depend on it at all, so the fact that the Cox model does not have an intercept needs to be specified via some method, and StatsModels needs to check that.
Regarding the timing of the release, yes, the next big DataFrames release will drop modeling functions in favor of StatsBase. But I'm not sure that matters a lot here, there's no hurry.

Sorry, that was unclear: by "user" I mean "package developer". My vague idea is that you can provide your own DataFrameRegressoinModel type that calls the model matrix/model frame methods manually, and insert something in there to drop the intercept (either as an argument to the ModelFrame constructor or as a drop_intercept! method that modifies the ModelFrame after it's constructed).

It's also possible that we could add an additional level of hierarchy in the regression model types, so if something is an ImplicitInterceptDFRegressionModel there's a default constructor.  Or add a type parameter on the DataFrameRegressionModel that controls that behavior.

AFAIK the idea behind StatsModels is that Survival.jl should not depend on it at all

FWIW I'm fine with Survival depending on StatsModels if that makes things easier.

That would work, but I don't really like that solution. Why would some packages have to depend on StatsModels and not others? That smells like an indication of a wrong design.

Yeah it's not an ideal solution, I just don't mind as a stopgap until something better comes along. I would care more if this were registered.

I've fixed the code and the tests to run without warnings on DataFrames 0.11. I seem to remember this PR was actually dependent on #31 before it could be merged. That is to say, there needs to be a way in StatsModels to convey that the model matrix shouldn't be full rank in the categorical case. Now that the DataFrames switch to Missings has been released and the situations has started to stabilize, are there any progresses on that front?

Unfortunately we haven't made any progress, but I guess you could make a PR to add is_categorical_full_rank (we can discuss the name) to StatsModels. That would help reviving the discussion.

I'll probably need more guidance though, as I don't fully understand how the various packages are organized. I'm assuming that such function would be relevant here as it's the only place where StatModels knows it's dealing with a Cox model.
I'm also not sure what I should implement. Is the intercept still on by default? What I would need is to compute all columns as if there is an intercept, then remove the intercept column from the model matrix as well as the intercept name from coefnames(mf::ModelFrame). As long as ModelFrame and ModelMatrix are agnostic to the model (Cox in this case), can I change the code so that they allow keyword arguments (which would be influenced by the type of the model, always in these lines ?

For now I think the intercept should remain on by default, else the discussion about this is going to slow down progress on the present issue. It looks like you could pass an intercept::Bool argument to ModelFrame, which would be used automatically by ModelMatrix?

Good idea. I may need both a intercept and a is_categorical_full_rank arguments though (and the function to overload should be defined in StatsBase to avoid unnecessary dependencies). I'll try to sketch a PR so we can can continue the discussion there.

(and the function to overload should be defined in StatsBase to avoid unnecessary dependencies).

At this point it seems that packages will have to depend on StatsModels anyway to support it, so better implement these in StatsModels. They don't make a lot of sense in StatsBase anyway as they are only useful to build the model frame/matrix.

I see. In the long term it would maybe be preferable to detach StatsModels from DataFrames, as it's strange for a statistical package to have to depend on a specific table implementation. On the plus side, allowing a dependency on StatsModels greatly simplifies the issues I was having in the Cox case.

Yes, StatsModels isn't supposed to depend on DataFrames on the long term, but nobody has written the generic table interface yet.

Good plan, guys. I'm fine with depending on StatsModels here, and FWIW I'm also fine with an indirect dependency on DataFrames for the foreseeable future even though it isn't ideal.

Added a PR #47 in StatsModels. Here tests will fail because they depend on that PR. Also added tests to check that formulas are handled correctly in both categorical and continuous case (as well as the 3 possible interactions: cat-cat, cont-cont, cat-cont).

Sorry, I merged some long overdue cleanup and it caused some merge conflicts here.

No problem, I've just rebased, added tests for categorical and continuous cases (and all three pairwise combinations) and added the correct StatsModels dependency. Should be good to go now.

Great! I'll let @ararslan do the honours...

Added tests for Newton's algorithm: should be back to full coverage now.

I've also added a fix to the docs (fit needed a type signature as both KaplanMeier and Cox are using it in the API). Cox could potentially have more extensive documentation, but I'd rather have this merged first (before it gets "conflicts" again) and add more docs later, especially because there's still a fair amount of stuff to port from AcceleratedFailure.

Thanks so much for this!


Separate image ingestion from main pipeline run

Fixes #375
Addresses #470 (not necessarily the fix we might want)
To do:

[ ] add tests
[ ] determine whether the options moved to settings.py should remain there

Started a new pull request.
See #544 .


Handle ritual (new viewer announcement) messages

Also a small refactor of how we deduct whether a USERNOTICE message contains user's message in it or not
Pull request checklist:

[x] CHANGELOG.md was updated, if applicable

Description

I also created a QStringList of message types that can have an extra message provided by the user. Makes following if statement easier.
Closes #2689

:+1: LGTM - Will resolve conflicts and merge in later


module broken on Companion 3.0.0

Hello,
The millumin module seems to be broken on companion v3.0.0 (Build 3.0.0-rc1+5909-v3-0.0-rc1-725c3583).
The following error is raised in the logs of companion:
Instance/Wrapper/millumin: Error initalizing module: Cannot read properties of undefined (reading 'on')

A forced update of the install to the latest stable version (although seemingly the exact same build) seems to have solved the issue ?!


Failed install without usable error message

Windows Terminal version
1.18.2822.0
Windows build number
10.0.19045.0
Other Software
I currently have Terminal 1.15.2524.0 installed.  Versions after this have failed (can't promise that I tried all of them).
Steps to reproduce

Download Microsoft.WindowsTerminal_1.18.2822.0_8wekyb3d8bbwe.msixbundle from GitHub.
Run installer.  Click "Update" button.

Expected Behavior
Terminal installs, like previous versions.
OR
Terminal tells me exactly what is wrong.
Actual Behavior
Installer reports, "App Installer failed to install package dependencies. Ask the developer for  package. "
What package?  Where would I look to find this information?  I couldn't find a log in the Event Viewer that told me.

I'd suspect (without investigating) that 1.16 was around the time we stopped shipping Microsoft.UI.Xaml directly in our package, and instead started relying more on the OS installing dependencies for us. I believe the store is supposed to be able to automatically pull down framework package dependencies. The PreinstallKit might have those dependencies still bundled inside it.

See also:

https://github.com/microsoft/terminal/issues/13558#issuecomment-1192184868
https://github.com/microsoft/terminal/issues/15512#issuecomment-1577373361
#13520, though, that Midi dependency should be long gone

Thanks for the quick reply, @zadjii-msft.
I installed Microsoft.UI.Xaml.2.8.x64.appx, and the Terminal installer worked without complaint.  I am working on a machine that cannot access the Microsoft Store, and I didn't even know that was the problem.
I would have been able to figure this out for myself if the error message had indicated that Xaml was the missing packing.  Note that there is a double space in "for  package."  I suspect that there is a bug in the installer that is preventing the name of the package from being displayed.

Well, glad you got that figured out! I think there were some enhancements to that installer in Windows 11 that made that a bit less of a problem, but alas, those fixes didn't make it downlevel.


Consistent ValidationRule Overloads

What kind of change does this PR introduce?

This PR adds a few ValidationRule overloads for validations that use ModelObservableValidation.
What is the current behavior?

Currently, if we would like to create a validation rule from a plain IObservable<bool>, we need to write the following code:
this.ValidationRule(
    vm => vm.TextInput2,
    vm => vm.WhenAnyValue(x => x.TextInput1, x => x.TextInput2, (input1, input2) => input1 == input2)
    (vm, isValid) => isValid ? string.Empty : "Both inputs should be the same");

Note that the last line that is quite verbose. The extension methods that use BasePropertyValidation hide that verbosity under the hood by providing ValidationRule overloads that accept either a Func<TViewModel, string>, or just a plain string as the validation message.
What is the new behavior?

Now, if we would like to create a validation rule from a plain IObservable<bool>, we can write the following code:
this.ValidationRule(
    vm => vm.TextInput2,
    vm => vm.WhenAnyValue(x => x.TextInput1, x => x.TextInput2, (input1, input2) => input1 == input2)
    "Both inputs should be the same");

Another option is also possible:
this.ValidationRule(
    vm => vm.TextInput2,
    vm => vm.WhenAnyValue(x => x.TextInput1, x => x.TextInput2, (input1, input2) => input1 == input2)
    vm => $"Both inputs should be the same: {vm.TextInput1} != {vm.TextInput2}");

The old overload is now marked with the [Obsolete] attribute and planned for future removal. This makes the API consistent with BasePropertyValidation API, that exposes the following overloads (the bool parameter is used implicitly there).
What might this PR break?
Nothing, as we aren't removing the old verbose overloads, and just marking them as obsolete ones.

Planning to add a few additional unit tests for these overloads.

CodeCov says There was a problem loading the file: Components/ModelObservableValidation.cs here https://codecov.io/gh/reactiveui/ReactiveUI.Validation/compare/5f19fde28e7e253466f24a5aa550270e409f2001...5304bd82cd7b7aa8e2184b543821c0b78f77ddcd/changes


fix: Correct the CSI handler logic

What problem does this PR solve?:

Return an error when the CSI variable is defined, but the
Providers list is empty.
Return an error when the CSI provider is defined, but its
StorageClassConfig list is empty.
Return an error when there two or more CSI providers are defined,
but the DefaultStorageConfig is empty.
Return an error when any CSI provider is unknown.

Adds a unit test to verify this logic.
Which issue(s) this PR fixes:
Fixes #
How Has This Been Tested?:

Adds a unit test; I think this is the first unit test in CAREN to exercise a handler request-response flow.
Special notes for your reviewer:

I noticed these issues as I was studying the CSI handler in order to write the ServiceLoadbalancer handler. I'll be adding a unit test to #592 as well.

Pushed a PR targeting your PR branch 😅 https://github.com/dlipovetsky/capi-runtime-extensions/pull/1

Pushed a PR targeting your PR branch 😅 dlipovetsky#1

Thank you. Merged!

I rebased on main and force-pushed. The conflict was with kubebuilder tags, nothing related to these changes.
I added changes in a new commit, so previous reviews are still valid.
I added stricter validation for the default storage configuration as well.
The unit test covers all of the handler code, with the exception of two error cases, one for failing to read the CSI variable, and another for failing to apply the driver. I'll see about handling these as well.

I added a test to confirm we return an error on handler failure. I'm not going to add a test for failing to read the CSI variable for now.

@faiq noticed some misleading log.Error calls. Thanks for catching that! Fixed in https://github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pull/603/commits/c4fa6746612d31fa75698975b27e8f794540309b


[Feature]: Contribute T5 model to vLLM

🚀 The feature, motivation and pitch
Hi vLLM team,
As you already know, T5 is a perfect model and as mentioned in #7366, the project intends to add support for T5. I want to help the cause and contribute T5 to the project.
As this is my first contribution to vLLM project I am quite pumped up as well as eager to learn from you all.
Alternatives
No response
Additional context
No response
Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

@shivance the key blocker is an implementation of
See: https://github.com/vllm-project/vllm/issues/7366 for a detailed discussion of enc-dec support. We would definitely welcome help on T5. For T5, the key is that we need an attention implementation with the custom bias

https://github.com/vllm-project/vllm/issues/7366#user-content-add-t5-model


Optional constraints

how to assign optional constraints like height as greaterthan or equal some constant
height anchor >= 40 like this

@bhlvoong Please close as a duplicate of #17, I have submitted my answer there.


Error handling

Hello,
How exactly does one handle errors? It seems all plugin examples include return upon success.
I for example do not understand this "syntax"... can you please explain?
Consider the hCaptcha plugin:
import hCaptchaPlugin from "@cloudflare/pages-plugin-hcaptcha";

export const onRequestPost: PagesFunction[] = [
  hcaptchaPlugin({
    secret: "0x0000000000000000000000000000000000000000",
    sitekey: "10000000-ffff-ffff-ffff-000000000001",
  }),
  (async ({ request }) => {
    // Request has been validated as coming from a human

    const formData = await request.formData()

    // Store user credentials

    return new Response("Successfully registered!")
  })

];

Where and how do I catch errors?
Thanks

Hi!
Each Plugin handles its errors slightly differently. It's up to the author to decide whether to return a default response, or to throw an error or whatever. In the case of the hCaptcha Plugin, as stated in the docs:

onError is an optional function which takes the Pages Function context object and returns a Promise of a Response. By default, it will return a human-readable error Response.
data.hCaptcha will be populated in subsequent Pages Functions (including for the onError function) with the hCaptcha response object.

So you can capture any errors and handle them as you wish by using this onError property:
import hCaptchaPlugin from "@cloudflare/pages-plugin-hcaptcha";

export const onRequestPost: PagesFunction[] = [
  hcaptchaPlugin({
    secret: "0x0000000000000000000000000000000000000000",
    sitekey: "10000000-ffff-ffff-ffff-000000000001",
    onError: async ({ data }) => {
      return new Response(`Denied access because of ${data.hCaptcha['error-codes']}.`)
    }
  }),
  (async ({ request }) => {
    // Request has been validated as coming from a human

    const formData = await request.formData()

    // Store user credentials

    return new Response("Successfully registered!")
  })
];

By default, the Plugin will return a 400 Response with a human-readable error message: https://github.com/cloudflare/pages-plugins/blob/main/packages/hcaptcha/functions/index.ts#L59-L71.


Knowing which users are currently online?

Is there a way of knowing which users are currently online in the platform? Maybe a table that tracks sessions or something?

Hey @VinnyVicious
i think you should use a Symfony service for that:
$this->get('security.token_storage')->getToken()->getUser();
Hope that helps,
Eric

@VinnyVicious, as I understand you need some realtime tracking, that should notify application every (for example) 5 second about user activity. If yes - now we don't have such functionality.
We greatly appreciate all contributions to Oro projects.


Error: Cannot find module '../congig/config'

The config file contains secret information that should not be pushed to github. Hence, the instructions for copying config.example.js to config.js.


view.animate + overlay autopan = error

Thank you for your interest in making OpenLayers better!
To keep this project manageable for maintainers, we ask you to please check all boxes below before submitting an issue.

[X] I am submitting a bug or feature request, not a usage question. Go to https://stackoverflow.com/questions/tagged/openlayers for questions.
[X] I have searched GitHub to see if a similar bug or feature request has already been reported.
[X] I have verified that the issue is present in the latest version of OpenLayers (see 'LATEST' on https://openlayers.org/).
[X] If reporting a bug, I have created a CodePen or prepared a stack trace (using the latest version and unminified code, so e.g. ol-debug.js, not ol.js) that shows the issue.

Hi,
We're trying to combine view.animate and an overlay popup with the latest openlayers version 4.4.2 (at the moment). Let me explain the scenario:
We have markers in various points on the map, when the user clicks on a marker, wherever it is located the view animates scrolling vertically to make sure that the maker is vertically centered (i.e. the new center of the map is: the current longitude of the current map center, and the latitude of the marker clicked). Once the view is vertically centered on the marker, a popup overlay opens eventually with autopan.
So if the marker was close to the very top of the view it auto-pans a little bit down to make room for the overlay,... if the marker was close to the very right of the view it auto-pans a little bit to the left to make enough room for the overlay.... etc. etc. You got the idea.
I have created a codepen based on your latest example of popup Overlay http://openlayers.org/en/latest/examples/popup.html which has autopan active. Instead of having markers on the map just click on a point and you'll see the described behaviour. The view will pan vertically to center on the clicked point latitude and then the popup overlay will open eventually with auto-pan to make enough room.
The overlay setPosition() call is inside the callback for view.animate() when the animation completes, so in theory the popup auto-pan should kick-in only when the view.animate() is complete.
It all seems to work but try to click next to the very right boundary of the view (or next to the very left boundary of the view) and you'll see that the auto-pan does not happen and a Javascript error comes up in the console.
More specifically the error is the following:
Uncaught TypeError: Cannot read property 'length' of null
    at ol.View.updateAnimations_ (ol-debug.js:16002)
    at ol.View.animate (ol-debug.js:15947)
    at ol.Overlay.panIntoView_ (ol-debug.js:31407)

See screenshot for details

The codepen is the following: https://codepen.io/marcodelpercio/pen/zEQOER
I hope it helps
Many thanks

@marcodelpercio
I just had a similar situation and I fixed the issue by wrapping the setPosition in a setTimeout call, this must be done in all places where you use setPosition. Do something like this,
function (completedNormally) {       setTimeout(() => {         overlay.setPosition(coordinate)       }, 0)     }
P.S: This is just a workaround till somebody can dig into the issue and find a proper fix.

Thanks kedaranmol but...I prefer not to use timeoutbased workaround


copy: create cluster empty state

Mock
When a user creates a cluster they are taken to the empty state of the detail view. The user can return to the empty state page from the "All clusters" view by clicking on the related row.

Closed via https://app.zeplin.io/project/5d409f0c0c69c94bf6502fd1/screen/5d83a9b78a509e881f7806f1


"Copy entity" function in Detail

Use case: there is a nicely filled entity. I want to make a new one similar to it, or I want to make a template out of it.
Therefore, in Detail, we need a "Copy entity" button, which will create a new ID with a full copy of the JSON: copy all attributes (incl. links to gazetteers, treebanks etc.) and metaprops.
The user can then edit: change things, add/delete metaprops etc.
When copying S, it is probably the same function as copy in Statement list - remember to keep those two places to do what probably is the same thing coherent somehow.

@adammertel : Is this not implemented in the "duplicate" button already?

Yes, the "duplicate button both in the statement list and the detail show have this function.
I will close now, feel free to reopen if you needed something else...