Allow the use of Promise that resolve to a state

The following change follow the slack discussion regarding the feature allowing an action to return a Promise that resolve to a state.
Usage :
app({
  state: {
    issues: []
  },
  view: (state, actions) => (

      { state.issues.map(issue =>
{issue.title}
) }
      <button onclick={actions.issues}>fetch</button>

  ),
  actions: {
    issues() {
      return fetch("https://api.github.com/repos/hyperapp/hyperapp/issues")
        .then(response => response.json())
        .then(issues => ({ issues }) )
    }
  }
})

or
app({
  state: {
    issues: []
  },
  view: (state, actions) => (

      { state.issues.map(issue =>
{issue.title}
) }
      <button onclick={actions.issues}>fetch</button>

  ),
  actions: {
    async issues() {
      const response = await fetch("https://api.github.com/repos/hyperapp/hyperapp/issues")
      const issues = await response.json()
      return { issues }
    }
  }
})

When an action return a Promise. The main argument of the last .then clause will be used exactly like a sync action return.

So this means you can no longer chain async actions, without the state being changed in each step of the chain?
I have a vague feeling (can't substantiate it though...) that while this will make some things that are already possible simpler, it will also make other things (that we can do today) impossible, or more complicated. Maybe I'm just an old man afraid of new things... ;)

@zaceno So this means you can no longer chain async actions, without the state being changed in each step of the chain?

What do you mean?

See this example:
const delay = seconds => new Promise(done => setTimeout(done, seconds * 1000))

app({
  state: 0,
  view: (state, actions) =>

        {state}

      <button onclick={actions.upLater}>+</button>
    ,
  actions: {
    up: state => state + 1,
    upLater: async (state, actions) => {
      await delay(1)
      actions.up()
    }
  }
})

With or without this patch, if you click ten times the + button, the counter will increase x 10 with a delay.
Now, see the following example:
app({
  state: 0,
  view: (state, actions) =>

        {state}

      <button onclick={actions.upLater}>+1</button>
    ,
  actions: {
    upLater: async (state, actions) => {
      await delay(1)
      return state + 1
    }
  }
})

Without this patch the above is an error, but with this patch, actions.upLater are debounced, so clicking the + button 10 times quickly only updates the counter by +1.

@zaceno See my comment above.

@jbucaran Well I guess what becomes impossible with this change, is if you wanted to get inbetween an xhr call returning, and the state being update, but you didn't want to put the logic for that in a .then inside the action that makes the async request.
I often find myself using three distinct "types" of actions:

those for doing async backend requests (basically, the old "effects")
those for setting state (basically old reducers)
actions that compose async-request-actions and state-setting-actions in various ways (also like old "effects")

Mainly I think my worry stems from this new behavior breaking this pattern (since now, async-backend-request-actions will also update state. At some later time...). I don't yet see any real practical problems, though, so I'm probably just stuck in my ways, uncomfortable with change.
I do see how this makes actions more elegant. It reduces my "three-type" pattern down to two types: - - actions that update state (wether now or in the future)

Actions that reuse other actions.

I can feel my opinion gradually becoming more positive to this change during the writing of this post ;)

How would the .catch and .done be handled?

Unfortunaly using .catch will break the chain, because the following .then will resolve
const p = new Promise(function(resolve, reject) {
  reject('fail');
});

p.catch(function(e) {
  console.log('error', e);
}).then(function(value) {
  console.log('success', value);
})

'error' 'fail'
'success'

It would be possible to catch earlier and return the promise
const emit = app({
 actions: {
    issues() {
      const request = fetch("https://api.github.com/repos/hyperapp/hyperapp/issues")
        .then(response => response.json())
        .then(issues => ({ issues }) )

      request.catch(error => emit('error', error))

      return request
    }
  }
})

with async/await
const emit = app({
 actions: {
   async issues() {
      try {
        const response = await fetch("https://api.github.com/repos/hyperapp/hyperapp/issues")
        const issues = await response.json()
        return { issues }
      }
      catch {
        emit('error', error)
      }
    }
  }
})

I am wayyyy late to the conversation here (since just this afternoon even!) but I remember suggesting this a long while back.. declined due to having to support Promise in core (which I appreciate might still be a limitation). I only mention this because I see this as reimplementing Promise.resolve().
This would be how I would Allow the use of Promise that resolve to a state.
function initialize(namespace, children, lastName) {
    Object.keys(children || []).map(function(key) {
      var action = children[key]
      var name = lastName ? lastName + "." + key : key
      var update = (action, name) => data =>
        action(
          state,
          actions,
          emit("action", {
            name: name,
            data: data
          }).data
        )
      if (typeof action === "function") {
        namespace[key] = data =>
          Promise.resolve(update(action, name)(data)).then(result =>
            result != null && repaint((state = merge(state, emit("update", result))))
          )
      } else {
        initialize(namespace[key] || (namespace[key] = {}), action, name)
      }
    })
  }

This means that every action is the promise of an update (or noop if the return value is null). If the action is sync (returns a primitive value or null) then it will resolve immediately and trigger an update. If the action is async then it waits for the promise chain to resolve.. if the resolved value is not null then an update is triggered.
I actually managed to dig out our old conversations on such matters:

https://github.com/hyperapp/hyperapp/issues/126#issuecomment-284192641
https://github.com/hyperapp/hyperapp/pull/127#issuecomment-284200293

Not sure if this is exactly what you guys are trying to solve but it sure looks/sounds similar so might be worth some referencing!

@zaceno Can you share exactly what kind of code would become impossible after this change? I still can't picture what you are saying.

actions that compose async-request-actions and state-setting-actions in various ways (also like old "effects")

This patch only modifies the behavior when your return the promise. If you don't return anything, nothing happens.

@lukejacksonn The approach you suggest means we need to put Promise inside core, which is another issue on its own, but what's the difference between your suggestion and @Swizz's patch?

I am still not sure of the larger implications if I merge this. I can see myself using async actions this way, but what would be the cons of bringing in this new feature? 🤔
/cc @zaceno @lukejacksonn @selfup @Swizz @dodekeract

The approach you suggest means we need to put Promise inside core

Yes it does 😌 bye bye IE11.. indeed another issue on it's own. My only argument for this is that there is nothing cool about supporting IE11 out of the box. Support could be achieved through a curated polyfill.io script tag, highlighted in the docs.

What's the difference between your suggestion and @Swizz's patch?

It takes advantage of a standardised platform feature rather than a proprietary implementation. Less upkeep and no weird limitations/workarounds like this. What @zaceno wrote in https://github.com/hyperapp/hyperapp/pull/305#issuecomment-315859647 describes exactly how I have found myself using actions and highlights the paradigmatic repercussions perfectly 💯👏

I still don't know what the cons / cost of this new feature would be?

My main concern is things like this https://github.com/hyperapp/hyperapp/pull/305#issuecomment-315841630.
It feels like pipe/stream/coroutine territory and I am no expert.
Is this thunky? https://github.com/gaearon/redux-thunk
It seems to simplify Promise syntax more than async/await.
There is this https://jsperf.com/promise-vs-callback just for reference.

TLDR; I am tempted but undecided

@lukejacksonn Thanks! I am still unclear about the cons myself.
Is https://github.com/hyperapp/hyperapp/pull/305#issuecomment-315841630 a desirable behavior?
And more importantly, what kind of code would be impossible to implement if this patch is merged?
@Swizz If you can answer some of our questions, you'll get a better chance to have this merged! 😄

I will try to do my best, but keep in mind this is my implementation regarding to our decision to avoid Promise in core.

Having to support Promise in core
It takes advantage of a standardised platform feature rather than a proprietary implementation

Lot of people is still using Bluebird and similar, Using then that way, would it be a better choice regarding exotic Promise implementation ? IDK both are great for me

My main concern is things like this https://github.com/hyperapp/hyperapp/pull/305#issuecomment-315841630

I dont understand very well the main concern here. I understand the fact we are moving from "An action that will do the request and the action that will update the state" to "An action that will make the request and update the state", but the first one is still possible. This is still possible to call an another sync action and resolve the async one to void

It feels like pipe/stream/coroutine territory and I am no expert.

Yes, the Promise API, in general, is designed to be used like this. At each async step, you are waiting the new step to resolve then you are moving to the next one. This is more Promise/Async related. But we are still doing that without this patch in async actions !

Is this thunky? https://github.com/gaearon/redux-thunk

IDK. Maybe yes, Maybe not. Here, we are just assuming the resolved result of an async action is nothing more than the result of a sync action. The later update the state now and the first one update the state when resolved. This is the main purpose of async/await be like a sync routine but with async stuff.

It seems to simplify Promise syntax more than async/await

Async/await is 95% Promise and return a Promise. So I assume : Yes.

There is this https://jsperf.com/promise-vs-callback just for reference.

Now, Promise and Callback are very similar in term of perf. And here we are already supporting Promise/Async actions. I am just wondering : Why not resolving to an update of the state directly like a sync action ?

@Swiss Thanks for the detailed reply, that will help figuring this out. One more thing I'd like to know, is how this change can affect existing apps as well what would be one thing we can't no longer do.
@zaceno mentioned something about "inbetween an xhr call returning", but without a code example I can't picture it.

I am not Swiss, but..
I have no many experiences with hyperapp to figure out.
Firstly, the one who use async actions that return something ? But this is totally a nonsense regarding actual API.
The debouce side effect will affect some one, "maybe" ?
Async which return nothing will be ignored as well and this is the current pattern, so ?

I am not Swiss, but..

Sorry, lol 😅
Well, let's wait for @zaceno to chime in.

Do I need to work on your requested changes or may I wait ?

I like the idea behind this PR. :+1:    Half the time I forget that I can't do this already, so to me this type of change would make hyperapp more intuitive.  Without needing the setData() actions after each async action, actual application bundles may end up smaller, too?
Regarding just using Promises in core... I'm not a fan of that idea.  One of my main uses for hyperapp is at work, where the end users have to use IE11.   Most of those projects don't use Promises or async actions at all, so requiring a Promise polyfill would be wasteful.

@Swizz @jbucaran Sorry for the delay. Don't hold anything up on account of me. I've changed my mind (or rather, realized my concerns were unfounded) and  give this new behavior 👍
(@jbucaran I'd give you a code example of what I was talking about, but there's no point because I can't see any way it would be a problem)

@SkaterDad Larger with some bytes. I dont know why bundlesize didnt work on this PR, so I cant tell.
Do not use Promise in core will also allows the use of custom implementation of Promise not aligned with the current spec. (Only .then() is requested)
@zaceno I am glad to read this :+1: :tada:

@Swizz I know hyperapp itself will grow a tiny amount, but I was referring to our application bundles.  We'll have to write less actions, and therefore ship less bytes to users.
It does seem strange that bundlesize isn't showing up in this PR.  Seems to happen in a few other ones too.

Do I need to work on your requested changes or may I wait ?

Please do 🙏

I'll review how this affects @attach-live's codebase today. CC @fvj

@jbucaran @zaceno @lukejacksonn @SkaterDad
To be Promise compliant without the need of Promise in core, the only thing we do is to be Promise/A+ compliant.
And one of the big thing that define a Promise is :

A promise must provide a then method [...]
[...]
A promise’s then method accepts two arguments: promise.then(onFulfilled, onRejected)
[...]

2.2.2 If onFulfilled is a function:

<IP_ADDRESS> it must be called after promise is fulfilled, with promise’s value as its first argument.
<IP_ADDRESS> it must not be called before promise is fulfilled.
<IP_ADDRESS> it must not be called more than once.

Here is our case. We are relying on the .then() existance to trust if action return a Promise or not.
And then, you are using update(data) as the onFulfilled  function. Taking the fulfilled value as data.
So this patch seem compliant to Promise without the need of the Promise keyword in source.

If you want to go further, we can also be compliant with :
.all(promises: Array<Promise>).then(onFulfilled: (values: Array<any>) => any)

To be aware of actions which return an array of Promise.
And maybe we can go to be ES Observable compliant too (I am joking, or not IDK :thinking:)
.subscribe(obs: Observer)

Thinking too loud. But I am an FPR Lover after all.
const { h, app } = hyperapp
const { periodic } = most

/** @jsx h */

app({
  state: { ho: 0, mi: 0, se: 0},
  view: ({ho,mi,se}, actions) => (

{ho>=10?ho:'0'+ho}:{mi>=10?mi:'0'+mi}:{se>=10?se:'0'+se}

  ),
  actions: {
    clock: (state, actions) => {
      return periodic(1000).
        scan(count => count + 1, 0).
        map(count => ({
          ho: ~~(count / 3600),
          mi: ~~(count % 3600 / 60),
          se: ~~(count % 3600 % 60)
        })
    }
  },
  events: {
    loaded: (state, actions) => {
      actions.clock()
    }
  }
})

Each seconds, a new value is emitted in the stream sequence, state subscribe to the returned stream, and will be updated by the value emitted in the stream.

I don't think it's necessary to support Promise.all in this PR, since the users can always return their own Promise.all([...]) from the action.
I do like your idea to also check for subscribe, though.  Observables are pretty awesome :+1:

We can do observables some other time! 😏

@ngryman When you have time, please share your feedback! 🙏

@jbucaran Looks like @attach-live will be fine with these changes. Some minor changes are needed, but overall I think this might even lead to simplified code. Would be nice if @fvj could confirm this for his projects.
That being said, I'd still like to have a way to return from actions without updating the state. Perhaps something similar to return {$: false} (some magic key that is unlikely to be a coincidence) would be good to solve this?
Also, what will happen with throw 'something'?

I'm way late on this one. Just dropping an idea for async stuff, why not supporting thunks instead of promises?
This has the advantage to be super easy to implement and gives much more freedom to the user: Promise, event, setTimeout, Rx, ...
For example:
app({
  state: {
    error: '',
    issues: []
  },
  actions: {
    fetch: () => (update) => {
      const request = fetch('domain.tld')
        .then(response => update({ issues: response.json() }))
        .catch(error => update({ error })
    }
  }
})

It just imply to expose an update function from HyperApp that would basically merge the state and emit the update event.

@ngryman Wouldn't this behave the same as actions.set({error}) with set: (_, __, data) => data?

@ngryman Not a bad idea, but the current approach is cleaner and feels more natural. Also, I am saving returning functions for a bit later, since this is essentially how I plan to support getters using a Getter mixin.
/cc @dodekeract

@dodekeract In all likelihood, if an exception is thrown, the Promise attempt to call the onRejected functions. If there are not. Exception will bubble to the "main process" (the console).
You are responsible to catch exceptions : https://github.com/hyperapp/hyperapp/pull/305#issuecomment-315904613

@jbucaran I tried to work on all my todolist yesterday but tiredness wins. May be during saturday night.

@ngryman I admit, thunks are good. In my mind, I only longed about a way to give the user nothing to reason about. Nothing to be responsible of.
This action is sync :
updateState(state, actions) {
  /* ... */
  return data
}

This ones are async :
async updateState(state, actions) {
  /* ... */
  return await data
}

updateState(state, actions) {
  /* ... */
  return Promise.resolve(data)
}

Nothing more. Your actions return a partial state or a promise that resolve to a partial state. Pretty easy.

@dodekeract Yes, just some IoC here.
@jbucaran It does not feel more natural for me, but I understand your point.
@Swizz I get it, totally. What I'm discussing here is the constraint of having to use the Promise API, and only this API, for any async stuff.  Things get messy as soon as I'm not using a Promise. Unfortunately, promises are not the only async paradigm out there. Hence thunks.
They offer the ability to do whatever you want, and if you want some syntax sugar, it's quite easy to implement in userland. For example we could have some sort of thunkify function that would wrap actions into thunks and make sure returned promises are treated correctly:
// This would iterate over all actions, for the sake of the example I just show what it's doing
// per action
const thunkify = (action) => (...args) => async (update) => {
  const res = await Promise.resolve(action(...args))
  update(res)
}

const actions = {
  updateState: async (state, actions) => Promise.resolve(data)
}

app({
  actions: thunkify(actions)
})

@ngryman I just want to address a part of your reply.

What I'm discussing here is the constraint of having to use the Promise API, and only this API, for any async stuff.

We are only making it easier for people using promises, which I bet are more than those using any other paradigm. But we are not making it worse for people using good ol' callbacks.
codepen
app({
  state: 0,
  view: (state, actions) =>

{state}

      <button onclick={actions.upLater}>UP 1s later</button>
    ,
  actions: {
    upLater: (state, actions) => {
      setTimeout(actions.up, 1000)
    },
    up: state => state + 1
  }
})

@ngryman I think we can still consider thunks, however, if we can find a way to make the concept clearer. For example, not use that horrible word anywhere in the docs to begin with.
Can you show an example implementation in app.js also please?

As said by @jbucaran here, we are not changing the old way to do.
We are making possible to move from the following pattern
actions: {
  setUser(state, actions, user) {
    return { user: user };
  },
  async handleUser(state, actions, id) {
    const user = await fetch(id);
    actions.setUser(user);
  }
}

To this one
actions: {
  async handleUser(state, actions, id) {
    const user = await fetch(id);
    return { user: user };
  }
}

But the first one, is still possible. You can easily keep a sync action that will be responsible of updating the state and the async that call the sync one after its job will be done.
The main goal is only to sanitize the async action api to look the same as sync one.

Here companion action being up. I just mean that if for any reason I can't use a Promise, I'm stuck with the current behavior, so this patch does not help me :)

Please show me.

function update(data) {
  if (data != null) {
    repaint((state = merge(state, emit("update", data))))
  }
}

if (result != null && typeof result == "function") {
  result(update)
}
else {
  update(result)
}

@Swizz Yup, again I totally 100% get the vision you have. I'm just confronting it with other use cases and the fact that this is an opinionated vision.

@Swizz gave me an idea: why not implementing both? That's so easy, and we would:

Have a first-class promise support
Support any other paradigms

if (result != null && typeof result.then == "function") {
  result.then(update)
}
else if (result != null && typeof result == "function") {
  result(update)
}
else {
  update(result)
}

@ngryman @Swizz This is the smallest I was able to make it.
if (
  result != null &&
  typeof (data = result.then || result) === "function"
) {
  data.call(result, update)
} else {
  update(result)
}

The .call is needed because of promises 😞. This will also end up binding the "thunk" to itself, probably harmless.

In order to implement getters, the action must return result(update) when result is a "thunk".

@jbucaran I didnt understand your last comment, can you prove an example ?

@Swizz
if (result == null) {
} else if (typeof result == "function") {
  result = result(update)
} else if (typeof result.then == "function") {
  result.then(update)
} else {
  update(result)
}

return result

This will not be compatible with your bytes safety example ?
if (
  result != null &&
  typeof (data = result.then || result) === "function"
) {
  result = data.call(result, update)
} else {
  update(result)
}

return result

@Swizz Yep, unfortunately.

@Swizz 🎉


api/available-service-areas should return dictionaries and not list

Tobe more useful on its own, api/available-service-areas should return column information and not a simple list

It should also take an optional state param, at the very least.


deps: bump optimum to 1.16.1

Docker build is currently failing because of optimum=^1.14.1 being a conflicting dependency while installing onnx-gpu.
In particular, this is the failing line:
RUN cd server && make gen-server && pip install ".[accelerate, onnx-gpu, quantize]" --no-cache-dir

With the following error:
The conflict is caused by:
    text-generation-server[accelerate,onnx-gpu,quantize] 0.1.0 depends on optimum<2.0.0 and >=1.14.1; extra == "onnx" or extra == "onnx-gpu"
    optimum[onnxruntime-gpu] 1.16.1 depends on optimum 1.16.1 (from https://files.pythonhosted.org/packages/64/03/df00e4553653ae038e8869e1bd6999398112be41f50b19acf999d7c706c0/optimum-1.16.1-py3-none-any.whl (from https://pypi.org/simple/optimum/) (requires-python:>=3.7.0))

Thanks @dtrifiro! This should be addressed now in the latest sync from our internal changes.


Azure function gives Exception: ModuleNotFoundError: No module named 'XXXXXXXX'. Cannot find module.

Azure FUnction Essentials -
Operating System: Linux
Runtime version: <IP_ADDRESS>
Question
I have been working with Azure functions for a while, and they have been working as expected so far. However, all the recent Azure Functions that I have built and deployed are giving module not found error on the imported python modules even though they have been included in the requirements.txt file. We can clearly see that the modules get installed in GitHub build and deployment, but the Azure Function log stream shows
"Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException: Result: Failure
Exception: ModuleNotFoundError: No module named 'pandas'. Cannot find module. Please check the requirements.txt file for the missing module.
For more info, please refer the troubleshooting guide: https://aka.ms/functions-modulenotfound. Current sys.path: ['/home/site/wwwroot', '/home/site/wwwroot/.python_packages/lib/site-packages', '/azure-functions-host/workers/python/3.10/LINUX/X64', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages']"

I have been investigating this issue for a couple of days now. I went through the documentation for troubleshooting and previous GitHub threads discussing this or other similar issues. At first the issue seemed to be only with "pyodbc" module but on further investigation we found that it is an error on Azure side and not on Python. Similar kind of issues were found before where Azure Functions failed with Python and they were swiftly resolved in later versions.
We have tried:

Rebuilding and redeploying the functions
Using alternative modules
Downgrading the python modules to previous stable versions (as suggested in some of the solutions)
but to no avail.

I would really appreciate if anyone could give me some inputs.
@asavaritayal @ankitkumarr

Are you putting the correct installation command in your deployment .yml file?

Hey,
Yes I am having the correct installation command and default path i.e. the repository root for installing the packages as can be seen below. I am attaching my deployment.yml file.
name: Build and deploy Python project to Azure Function App - **********************

on:
  push:
    branches:
      - master
  workflow_dispatch:

env:
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
  PYTHON_VERSION: '3.10' # set this to the python version to use (supports 3.6, 3.7, 3.8)

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Python version
        uses: actions/setup-python@v1
        with:
          python-version: ${{ env.PYTHON_VERSION }}

      - name: Create and start virtual environment
        run: |
          python -m venv venv
          source venv/bin/activate

      - name: Install Unix ODBC Drivers
        run: sudo apt-get install unixodbc-dev

      - name: Install dependencies
        run: pip install -r requirements.txt

      # Optional: Add step to run tests here

      - name: Zip artifact for deployment
        run: zip release.zip ./* -r

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: python-app
          path: |
            release.zip
            !venv/

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-function.outputs.webapp-url }}
    permissions:
      id-token: write #This is required for requesting the JWT

    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: python-app

      - name: Unzip artifact for deployment
        run: unzip release.zip

      - name: Login to Azure
        uses: azure/login@v1
        with:
          client-id: ${{ *************************************************************** }}
          tenant-id: ${{ *************************************************************** }}
          subscription-id: ${{ *************************************************************** }}

      - name: 'Deploy to Azure Functions'
        uses: Azure/functions-action@v1
        id: deploy-to-function
        with:
          app-name: '***************************'
          slot-name: 'Production'
          package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
          scm-do-build-during-deployment: true
          enable-oryx-build: true

@gavin-aguiar pls comment and validate the same.Thanks

@adityachidepatil Can you modify your 'Install Dependencies' step to
pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
and try again?
All libraries should be installed in /home/site/wwwroot/.python_packages/lib/site-packages

Hey @gavin-aguiar
Thank you so much for your response. I tried modifying the yml and deployed the function again using
```

name: Install dependencies
run: pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt

Unfortunately, it is still giving me the same error.

I would also like to point out that while exploring this issue, I found that existing function with same repository works but when I create a new function using exactly same repository it is throwing an error.

Please let me know if you need any specific information from me, I would be happy to provide it.

@adityachidepatil  it could be an issue in your new function thats causing the error. Would you be able to share your functionapp name ?

Hey @gavin-aguiar
I tried remote build and deployment, and it worked, for some reason it is not working through our CI/CD pipeline. Anyways thank you so much, I truly appreciate your support.

@adityachidepatil did you find a solution?

@adityachidepatil did you find a solution?

I tried remote build and deployment, and it worked, for some reason it was not working through our CI/CD pipeline.


Site CSS makes it less usable on ultrawide monitors

Reference issue: https://github.com/learning-rust/site/issues/62

I opened a PR if you're interested
https://github.com/docura/docura/pull/2/files

Hi @EthanStandel ,
Thanks for your feedback.

Actually I tested these custom zooms on a QHD monitor; I thought it's better adding a custom zoom especially for the devices like TVs.
However I added these in a rush and recently saw this can conflict with #article->width: 66.64vw as well.

So I also think it's better remove these custom zooms for the moment.
Thanks again for the feedback :)

Absolutely, and thank you for the fantastic resource of https://learning-rust.github.io/!


How many providers are needed? How to split them?

Hej, first of all thanks a lot for your work: provider and riverpod are very accessible for someone new to flutter.
I'm building my first flutter app and I'm a bit struggling on how many providers I need. Let's consider an app with 2 screens:

the first one is a list of items
the second one is a detailed view of one of the item

I can create a Provider for my list of items like that
class _ListItemProvider with ChangeNotifier {
  List<Item> items = [];

  _ListItemProvider();

  Future<void> load() async {
    items = await getItems();
    notifyListeners();
  }

  Future<void> addItem(Item item) async {
    items.add(item);
    notifyListeners();
  }

  Future<void> deleteItem(Item item) async {
    //...
  }
}

final listItemProvider = ChangeNotifierProvider<_ListItemProvider>((ref) {
  return _ListItemProvider()..load();
});

Now if I click on an item I go the details screen where I can do some advance actions, for example add a description. I could create a function addDescription in  my listItemProvider, but that does not seems scalable because that means that all operations related to my items will be in the same provider. Alternatively I could create an itemProvider but if I add a function addDescription there, how do I make sure that the change is reflected in the list too?
It seems that BLOC is able to do it like that.
In Redux I would dispatch an UpdateDescriptionAction action and catch it in two reducers, one for the details and one for the list.
I'm really not sure how to do that with provider/riverpod and the examples do not seem to cover that case. If this is not clear I can provide more details/more pseudo code.

I'd suggest looking at the marvel example, which does such thing
TL:DR instead of storing a List, it stores a List and use family to join the list of ids and the individual items.


On a Mac use the Keychain

I'm not sure where Vaulted is storing data, but I would much rather Vaulted store this data in the Mac keychain.

I found the location where all the data is stored - ~/.cache/vaulted/.
I am a bit surprised with this location because "cache" is a temporary thing and can be deleted if necessary.
Can this be moved to ~/.vaulted/, for example?

@drusellers: It was a very intentional decision to not store vault data in the OS's keychain. This helps us maintain consistency as users move between platforms and prevents users from being tied to a specific platform. Vault data is stored using NaCl's secretbox format, this allows vault files to be copied from one system to another, regardless of OS.
We do have a functional (but not yet complete) change to add password caching in the OS keychain.

@antonbabenko: Vaulted uses the XDG specification to decide where to store its data and cache files. As a result, the default location used to store vault data is ~/.local/share/vaulted/.
The cache directory you mentioned (~/.cache/vaulted/) is used to store session data. This cached session data is what prevents additional MFA prompts while the session is still valid. This session data can be removed without ill effect. Vaulted will simply generate a new session the next time a session is required. :)
One additional note: as session files do not store key derivation nor encryption details, the corresponding vault file is required to be able to decrypt session files.

Thanks for pointing out where vault data is actually stored. I will backup ~/.local/share/vaulted/.


--extra-param option continually failing with Unknown field error

Sincere apologies, I'm totally new to this so will no doubt be making lots of mistakes, but I thought I'd try logging an issue on the off chance you could help. I'm trying to get the knife-vrealize plugin working on our estate to allow us to generate server build requests from the command line. We've got VMware guys in to configure vRealize and I'm able to connect to their test vRA deployment ok. Catalog list works fine and I'm able to submit a server create request but get an error saying that the environment isn't set properly:

knife vra server create xxxxx --cpus 1 --memory 4096 --notes 'test API build' --ssh-password 'xxxxx' --requested-for<EMAIL_ADDRESS>--vra-disable-ssl-verify --subtenant-id xxxxxx
Catalog request xxxxx submitted.
Waiting for request to complete.
Current request status: PENDING_PRE_APPROVAL.
Current request status: IN_PROGRESS.
Catalog request complete.

Request Status: FAILED
Completion State: FAILED
Completion Details: Unknown environment specified from request form (Dynamic Script Module name : calculateNetworkPathName#50)
FATAL: Unknown environment specified from request form (Dynamic Script Module name : calculateNetworkPathName#50)
When I try to use the --extra-param option to set the additional fields I keep getting:

knife vra server create xxxxx --cpus 1 --memory 4096 --notes 'test API build' --ssh-password 'xxxx' --requested-for<EMAIL_ADDRESS>--vra-disable-ssl-verify --subtenant-id xxxxx --extra-param jsEnvironment=string:Development
ERROR: Vra::Exception::RequestError: Unable to submit request: Unknown field: jsEnvironment

I'm being assured by the VMWare guys that the field name I need to set are:
jsEnvironment
jsBusinessApplication
jsServerRole
jsStorageTier
but when I try providing them in the extra-param option it always comes back as unknown.
Any suggestions? I'm assuming it's a problem with the VMware side, and they've just given me the wrong param names, but thought I would ask in case this is a known issue with the plugin.
Regarding the plugin I downloaded version 1.4.0 on the 5th of Nov so I'm on the latest version I know of. (I saw the earlier update that related to the --extra-param bug, but it looks like my copy has the fix applied.)

@apat00 The vRA API is a bit finicky, unfortunately. It requires you to know a bit more than the casual user about how some of the functions of vRA are actually implemented.
Can you try and prefix your field name with provider- and see if that works?
--extra-param provider-jsEnvironment=string:Development

Really can't thank you enough for such a speedy and accurate resolution to my problem. I've emailed the onsite VMware guys a number of time on this subject without getting anywhere, prefixing provider- means all the additional options are now being picked up without issue.
Unfortunately I'm now getting another error :)
"Cannot locate a unique blueprint within the IaaS database that matches the blueprint name provided"
but this is definitely on the vRealize side so will progress with VMware.   Thanks for using the plugin!


Lazy colours  (hashtag675)

Is is possible to have colours defined via markup syntax evaluate lazily?
For example:
from loguru import logger

logger.opt(colors=True, lazy=True).debug('<g>Hello</> {}', lambda: '<red>World!</>')

Currently this only resolves the colours for the static part of the message.

This functionality was removed some time ago because it caused unexpected errors when the logging arguments unintentionally contained markup tags, see hashtag197.
A possibly workaround is to generate your message and use the logger inside as lazy function, as follow:
from loguru import logger

def lazy():
    lazily_generated_message = "<g>Hello</> <red>World</>"
    logger.opt(colors=True).debug(lazily_generated_message)

logger.opt(raw=True, lazy=True).debug("", lazy)

This might became possible again in the future if I add a method allowing user to fully handle message formatting, I keep your use case in mind.


Add Const  Type Qualifier Token at translator frontend

Implement the CONST token to recognize the const keyword for declaring constant variables.

Hi @samthakur587,  I'd like to work on this problem


fixed edit info doesn't save

fixed edit info doesn't save #614 and removed unnecessary movie save action(?)

Thank you!


clGetKernelArgInfo functions

These are OpenCL 1.2. This would entail adding:
clGetKernelArgTypeName :: CLKernel -> Int -> IO String
clGetKernelArgName :: CLKernel -> Int -> IO String
clGetKernelArgAddressQualifier :: CLKernel -> Int -> IO CLKernelArgAddressQualifier
clGetKernelArgAccessQualifier :: CLKernel -> Int -> IO CLKernelArgAccessQualifier
clGetKernelArgTypeQualifier :: CLKernel -> Int -> IO CLKernelArgTypeQualifier
And the enumerations for the latter 3.
data CLKernelArgAddressQualifier =
CL_KERNEL_ARG_ADDRESS_GLOBAL
| ...
... etc
I wouldn't mind implementing this and setting up a pull request (this would be my first).

Hi, I thinked about it some time ago, and maybe the best way its to make a branch for OpenCL 1.2 instead of merge it on the main branch.
So, we can always generate 1.0.X packages for the people doesn't have 1.2 drivers.
Thanks

Why not retain one branch only, but can we include a preprocessor flag (cabal) option to include or omit 1.2 stuff. This would make validation and maintenance more uniform (don't have to keep two branches in sync). In addition, I don't want all of 1.2, just a few functions at the moment. A 1.2 branch or sort of implies that we support and validate everything right?


dex-tls secret is updated many times a second

Describe the bug
A clear and concise description of what the bug is.
Hint: Make sure to search through the existing issues, as they often contain important information on recent changes.
To Reproduce

Install Epinio 1.6.1 via instructions at https://docs.epinio.io/howtos/install_epinio_on_k3d
View the epinio:dex-tls secret

data changes multiple times a second
annotation cert-manager.io/certificate-name flips between dex-tls and dex
annotation cert-manager.io/issuer-group flips between cert-manager.io and empty

The rate of churn can be seen by streaming the cert-manager/cert-manager-... pod's logs, or after importing the cluster into Rancher and viewing the resource.change websocket events. From what i can tell the change happens ~20 times a second.
Expected behavior
Secret does not change 20 times a second
Logs
cert-manager/cert-manager-...
I0123 17:33:32.717313       1 secret_manager.go:94] cert-manager/certificates-issuing "msg"="applying Secret data" "key"="epinio/dex-tls" "message"="unexpected managed Secret Owner Reference field on Secret --enable-certificate-owner-ref=true" "resource_kind"="Certificate" "resource_name"="dex-tls" "resource_namespace"="epinio" "resource_version"="v1" "secret"="dex-tls"
I0123 17:33:32.755313       1 secret_manager.go:94] cert-manager/certificates-issuing "msg"="applying Secret data" "key"="epinio/dex" "message"="unexpected managed Secret Owner Reference field on Secret --enable-certificate-owner-ref=true" "resource_kind"="Certificate" "resource_name"="dex" "resource_namespace"="epinio" "resource_version"="v1" "secret"="dex-tls"

Couldn't see anything interesting in the epinio-server logs
Cluster (please complete the following information):

Provider: k3d
Kubernetes Version: v1.24.4-k3s1

Desktop/CLI (please complete the following information):

OS: linux
Epinio Version: 1.6.1
Epinio Install Options: as per https://docs.epinio.io/howtos/install_epinio_on_k3d

Could it be that there are two components are fighting over the resource ?
There is also the comment https://github.com/epinio/epinio/issues/2003#issuecomment-1398328623
where it is mentioned that ... there is a weird thing with dex-tls secret, it was issued, but there are two certificates using the same secret.

Having two 2 certs fight over the data in the secret would explains things.

The certs are named dex and dex-tls.

confirmed for my k3d setup
Looking at the cert resources in the cluster

dex is managed from the helm chart (going by the annotations)
dex-tls has the dex Ingress as owner reference. The ingress will be in the helm chart.

Yep:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: dex
namespace: "{{ .Release.Namespace }}"
spec:
dnsNames:

"auth.{{ .Values.global.domain }}"
issuerRef:
kind: ClusterIssuer
name: {{ default .Values.global.tlsIssuer .Values.global.customTlsIssuer | quote }}
secretName: dex-tls

And the ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dex
namespace: {{ .Release.Namespace }}
annotations:
cert-manager.io/cluster-issuer: {{ default .Values.global.tlsIssuer .Values.global.customTlsIssuer | quote }}
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
{{- range $key, $value := .Values.ingress.annotations }}
{{ $key | quote }}: {{ $value | quote }}
{{- end }}
spec:
[...]
tls:

hosts:

"auth.{{ .Values.global.domain }}"
secretName: dex-tls

I suspect that the dex cert was made to explicitly generate the secret for the ingress, under the assumption that the ingress only consumes the secret. However as we can see, the ingress creates its own cert, for the same secret. I wonder if the cert-manager.io/cluster-issuer annotation on the ingress causes that.

I will now create two PR's for testing things.

In one PR I will remove the dex secret
In the other I will drop the cluster-issuer annotation from the ingress.

I plan to run both through the regular CI.

Basic testing (i.e. setting up cluster, installing E, inspecting cert-manager logs) shows that both changes are indeed possible fixes. I.e. only one cert is created, either by helm, or by ingress, and no figthing happens.
And it is indeed the annotation on the ingress which triggers some controller to auto-generate the dex-tls cert, and from there the secret.
I am still not sure which of the two fixes I like better.
But lets see first what the full CI tells us.


fix: schema references

think schema refs were broken when v2 was released. I re-pointed to the v1 folder.

Good spot - but are we not going to have v3 versions of these links? We should ideally update to those?

I think that would be a bit more involved then just bumping some refs. Would do it as a separate change. Probably needs a new v3 spec and keep the old one around.
I just wanted this spec to compile for now so I could add in the discovery API in https://github.com/Property-Data-Trust-Framework/api/pull/20


Fixed #25371 -- Added reverse_sql and reverse_code examples to docs.

Ticket - https://code.djangoproject.com/ticket/25371

@MarkusH made the changes.

LGTM

You can squash commits when updating, thanks.

@timgraham looks like I screwed up while rebasing. Should I close this PR and create another?

I think you can fix it without creating a new pull request.

@timgraham I think it's fixed.

merged in 4283a038431ef6428d086d4911179bd8eb8b2299, thanks!


Can't force note color on special note

Describe your problem here.

I am "bumping" this, since what you wrote there didn't work.
The first special note that appears, gets it's texture changed, and the following other special notes of the same type look like normal arrows, and the coloring doesn't change.
This is my code:
function onCreate()
	--Iterate over all notes
	for i = 0, getProperty('unspawnNotes.length')-1 do
		if getPropertyFromGroup('unspawnNotes', i, 'noteType') == 'Bullet_Note' then --Check if the note on the chart is a Bullet Note
			setPropertyFromGroup('unspawnNotes', i, 'texture', 'nevada/notes/Bullet_Note'); --Change texture
			setPropertyFromGroup('unspawnNotes', i, 'noteSplashHue', 0); --custom notesplash color, why not
			setPropertyFromGroup('unspawnNotes', i, 'noteSplashSat', -20);
			setPropertyFromGroup('unspawnNotes', i, 'noteSplashBrt', 1);
			setPropertyFromGroup('unspawnNotes', i, 'colorswap.Hue', 0);
			setPropertyFromGroup('unspawnNotes', i, 'colorswap.Brt', 0);
			setPropertyFromGroup('unspawnNotes', i, 'colorswap.Sat', 0);
			if getPropertyFromGroup('unspawnNotes', i, 'mustPress') then --Doesn't let Dad/Opponent notes get ignored
				setPropertyFromGroup('unspawnNotes', i, 'ignoreNote', false); --Miss has penalties
			end
		end
	end
end

Video example: https://streamable.com/9eveq3
That part of the code you posted of the source code is also not visible on github.

This is all there is, unless I've missed something.
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
Nope.

I think I get what you mean, I think you are trying to find a way to override the settings for custom note colors.
Sadly, don't think that's possible unless if you're making from the source and made changes to the source.

I think I get what you mean, I think you are trying to find a way to override the settings for custom note colors. Sadly, don't think that's possible unless if you're making from the source and made changes to the source.

Yeah I am trying to do that. I hope this will become a feature on lua too though.


light refactor and nuke spinny light

About the PR

in C.Sh.Light renamed Component to Components WHO DID THIS AND WHY
if you merge this in a fork replace every using Content.Shared.Light.Component; with using Content.Shared.Light.Components;
general .Owner refactor and what not
move emergency light spinning into its own component, RotatingLightComponent
nuke has a spinny double light when armed

fixes #18861, fixes #18870
Media
emergency lights still work

flashlights and lanterns still work

nuke lights
https://github.com/space-wizards/space-station-14/assets/39013340/3fbe5809-09cf-4870-9fe9-81cfb3abb5a0

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog
:cl:

tweak: Armed nuclear bombs now have warning lights. Set off a nuke and watch the light spin!!!

nuke has a spinny light when armed

Can you also make it so that the nuke has different sprite states for "armed" and "about to blow"? I know it does in SS13.

i will try steal sprite then add an appearance thing for it

At some point we will probably want to add other types of animated lights, like blinking, pulsating etc
Will we then create a different system and component for every kind of different light animations we could think of, (potentioally ending with something having 3-4 different LightComponents for it to both rotate and flicker and change color over time) or should we just maybe go ahead of that and call this AnimatedLightSystem and Component?

well blinking lights is part of a different light animation thing right, flashlight and flares use it

also at the very least i have currently unhardcoded the speed but i think putting the animation itself in prototypes would be annoying

it causes pain for upstream on its own and will forever unless its changed may as well do it now than never

how does an s causes pain?
also please stop calling changes that break public APIs refactors
it's simply a misnomer, if well named stuff is taken in consideration

rotate the light source from flashlights by 90 degrees so that it lines up with the source on the sprite, but that may be out of scope

This superfluous namespace change from Content.Shared.Light.Component to Content.Shared.Light.Components will likely cause unnecessary pain for forks.

Both the client and server sides suffix with s so I imagine someone forking the game right now would appreciate consistency over legacy.

As discussed at the 2023-08-19 maintainer meeting, please split up the namespace and refactoring changes into a separate PR, and add detailed information for #codebase-changes. Keep the actual content/feature changes in this PR.


Fix typo in ModelAdmin Primer docs

Please check the following:

[ ] Do the tests still pass?[^1]
[ ] Does the code comply with the style guide?

[ ] Run make lint from the Wagtail root.

[ ] For Python changes: Have you added tests to cover the new/fixed behaviour?
[ ] For front-end changes: Did you test on all of Wagtail’s supported environments?[^2]

[ ] Please list the exact browser and operating system versions you tested:
[ ] Please list which assistive technologies [^3] you tested:

[ ] For new features: Has the documentation been updated accordingly?

Please describe additional details for testing this change.
[^1]: Development Testing
[^2]: Browser and device support
[^3]: Accessibility Target

Thanks @joshuadavidthomas - great find. Congrats on making your first PR for Wagtail (from what I can see) - we really appreciate it.
I have added you to the contributors list as 'Josh Thomas' - but let us know if you want a different name listed.

@lb- Hardly seems necessary for a one letter change, but cool to see my name on the list! Thanks to you and the whole core team (and all my fellow contributors 😆) for an awesome package.

Every bit helps. And thanks for the nice words.


add rel attribute to link-options

Duo to the potential security issue when using target="_blank" on links, we need to be able to set rel attribute on html a tag.
About the security issue: Links to cross-origin destinations are unsafe
What kind of change does this PR introduce? (check at least one)

[ ] Bugfix
[x] Feature
[ ] Code style update
[ ] Refactor
[ ] Build-related changes
[ ] Other, please describe:

Does this PR introduce a breaking change? (check one)

[ ] Yes
[x] No

If yes, please describe the impact and migration path for existing applications:
The PR fulfills these requirements:

[ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[x] All tests are passing

If adding a new feature, the PR's description includes:

[x] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Other information:

Thanks!


added start:redis

Small changes added start:redis for execute in better way as well added into start:dev to run in one command
Before creating a pull request make sure that:

[ ] commit messages are meaningful and follow good commit message guidelines
[ ] README and other documentation has been updated / added (if needed)
[ ] tests have been updated / new tests has been added (if needed)

Please remove this line and everything above and fill the following sections:
JIRA link
Change description
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[ ] No

very useful


Feature/improved submissions page

Add submissions page for admin users to view published survey submissions

Closes #108

Date should have a trailing dot (e.g. "4.10.")

Oskari map flows under the <AdminAppBar> hiding the map navigation options: lower down the map the same amount as the <AdminAppBar> reserves height


Create a component to be a container for other components

Hi, I wasn't found an information about the capability of a custom component to be a container for others components.
My way is to create a wrapper component and I have the impression that you can't do this with the PowerApps Component Framework. Am I right ?

Thanks for the feedback. Please raise the issue in the community forum. Our developers will help you resolve the issue. Closing the issue.


Add location mapping widget

Is your feature request related to a problem? Please describe.
Add a location widget that allows you to submit the location with GPS coordinates and location details as FHIR Location resources
Describe the solution you'd like

ANC Usecase
In the ANC use case, add a location of a facility or a family residence or village during a family registration/enrollment Encounter that will in turn reference a Patient plus a Practioner. Tagged via Encounter.location This should submit a location payload tagged to a patient while enrolling ANC Clients or registering a family and its householder members
Covax Usecase
In the Covax demo app, allow a user to submit the location details of where the Vaccination is being done

The Widget should be able to trigger the GPS to collect Latitude and Longitude coordinates for a precise location
Sample location payload for an Immunization facility
{
  "resourceType": "Location",
  "status": "active",
  "name": "Arundel mobile clinic",
  "description": "Vaccination Site",
  "mode": "instance",
  "address": {
    "city": "Nairobi",
    "state": "MD",
    "country": "USA"
  },
  "physicalType": {
    "coding": [ {
      "system": "http://terminology.hl7.org/CodeSystem/location-physical-type",
      "code": "bu",
      "display": "Vaccination Center"
    } ]
  },
  "position": {
    "longitude": 42.256500,
    "latitude": -83.694710
  }
}

Describe alternatives you've considered
N/A
Additional context
Sample location payload for an Immunization facility
{
  "resourceType": "Location",
  "status": "active",
  "name": "Arundel mobile clinic",
  "description": "Vaccination Site",
  "mode": "instance",
  "address": {
    "city": "Nairobi",
    "state": "MD",
    "country": "USA"
  },
  "physicalType": {
    "coding": [ {
      "system": "http://terminology.hl7.org/CodeSystem/location-physical-type",
      "code": "bu",
      "display": "Vaccination Center"
    } ]
  },
  "position": {
    "longitude": 42.256500,
    "latitude": -83.694710
  }
}

Sample location payload for a Household location/home
{
  "resourceType": "Location",
  "status": "active",
  "name": "Kasera Village",
  "description": "The home village location",
  "mode": "instance",
  "address": {
    "city": "Nairobi",
    "state": "Kenya",
    "country": "Kenya"
  },
  "physicalType": {
    "coding": [ {
      "system": "http://terminology.hl7.org/CodeSystem/location-physical-type",
      "code": "bu",
      "display": "Kasera Village"
    } ]
  },
  "position": {
    "longitude": 42.256500,
    "latitude": -83.694710
  }
}

Sample ANC mock

NB. The accompanying details of the Location (address, display name) can be collected via a questionnaire and appended to the Questionnaire response before extraction and saving/posting/sync as a location resource

What would the questionnaire response look like? It should be a response item to a single questionnaire item?

Hi @f-odhiambo, I would like to work on this issue
Could you please assign it to me

Hi @f-odhiambo, I would like to work on this issue Could you please assign it to me
Kindly tag me to the PR or leave a comment once a PR has been raised for this

@f-odhiambo @jingtang10  could you please help me with the questionnaire of the Location widget.

@f-odhiambo @jingtang10 could you please help me with the questionnaire of the Location widget.

Here you go http://turn-fhir.smartregister.org/fhir/Questionnaire/1922

Hey, @puranjayK Any progress update on this ? Perhaps we can link up on this sometime this week if available for more details. Let me know

@puranjayK Any progress update on this?

@puranjayK Any progress update on this?

Sorry I couldnt work on this, as the covid situation got worse in my country.
I am having issues on how to make this widget and how the questionnaire is to be used

@jingtang10 @Tarun-Bhardwaj As discussed need to hold this issue for more requirement details.

HI @PallaviGanorkar , Are you going to be picking this issue ?

Hello I am new to contribution and would like to contribute to this issue if no one is on it.

Hi @MnCSSJ4x,Thanks for this ,  how can we connect to have a brief on this issue, can we ?
CC @FikriMilano

we can connect via mail : xxxxx or if there is a slack channel please share an invite

I copied and obscured your email . Thanks

@f-odhiambo what is 'Location Details' stands for? is it the Location widget? or it's simply a container from a 'group' type Questionnaire Item?
{
   "linkId":"2",
   "text":"Location Details",
   "item":[
      {
         "linkId":"2.1",
         "text":"Latitude",
         "answer":[
            {
               "valueString":"52.3676"
            }
         ]
      },
      {
         "linkId":"2.2",
         "text":"Longitude",
         "answer":[
            {
               "valueString":"4.9041"
            }
         ]
      }
   ]
}

@f-odhiambo does that mean, there will be 2 location widgets to populate the Latitude and Longitude? (2.1 and 2.2)

@f-odhiambo does that mean, there will be 2 location widgets to populate the Latitude and Longitude? (2.1 and 2.2)

Not really the widget should allow you to invoke the get coordinated from the phone GPS and then use the results to populate the Latitude and Longitude for the specific location

So the response will be something like this (0.0236, 37.9062) and then will need to split this comma separated value into Lat, Long  as
"position": {
    "longitude": 42.256500,
    "latitude": -83.694710
  }

Some useful reference:
https://github.com/google/android-fhir/blob/master/datacapture/src/main/java/com/google/android/fhir/datacapture/QuestionnaireItemAdapter.kt
https://github.com/google/android-fhir/blob/master/catalog/src/main/java/com/google/android/fhir/catalog/CustomQuestionnaireFragment.kt
https://github.com/opensrp/fhircore/blob/main/android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/CustomPhotoCaptureFactory.kt
https://github.com/google/android-fhir/blob/master/datacapture/src/main/java/com/google/android/fhir/datacapture/contrib/views/barcode/QuestionnaireItemBarCodeReaderViewHolderFactory.kt
https://github.com/google/android-fhir/blob/master/datacapture/src/main/java/com/google/android/fhir/datacapture/views/QuestionnaireItemRadioGroupViewHolderFactory.kt

@MnCSSJ4x Whats the progress on this ?

@MnCSSJ4x could you send the Questionnaire and QuestionnaireResponse that you expect to look like?
Just to make sure we have the same idea on this,

@FikriMilano I was planning to follow the sample format mentioned until and unless there is some limitation

Hi @MnCSSJ4x , how is the progress here ?
CC @FikriMilano

@f-odhiambo
I am having my semester exams this week. Will definitely address the coding part of the solution next week
@FikriMilano can you provide me how you set up the environment locally to test ?

@MnCSSJ4x you can just simply fork the repo, build the project then try to run the demo apps

@Tarun-Bhardwaj I think we can close this issue as it had been implemented on FHIR Core https://github.com/opensrp/fhircore/issues/1536

Thanks @f-odhiambo - would it be worth merging this back into the SDK? @jingtang10

Thanks @f-odhiambo - would it be worth merging this back into the SDK? @jingtang10

We can have a discussion on this , happy to elaborate more on the solution we took

@jingtang10 this can be re-assigned since the implementation in the attached PR was something different

@f-odhiambo @f-odhiambo I had a suggestion of maybe using a normal Questionnaire item of type string  with a custom extension to render the widget
 {
          "linkId": "Location widget",
          "type": "string",
          "text": "Record GPS Location",
          "required": true,
          "extension": [
            {
              "url": "https://github.com/google/android-fhir/StructureDefinition/questionnaire-itemControl",
              "valueCodeableConcept": {
                "coding": [
                  {
                    "system": "https://github.com/google/android-fhir/questionnaire-item-control",
                    "code": "location-widget"
                  }
                ]
              }
            }
          ]
        }

and to render, instead of  having it as single "record gps location", maybe have it render similar to the datepicker populating the textview with comma-separated latitude, longitude, altitude. This way we would probably still be able to use the already implemented utilities for example, adding extensions for help, attachment, translations and lalso show validation error incase field is required

cc: @ageryck @FikriMilano @dubdabasoduba

After reviewing the above implementation idea, we felt it may have had deficiencies of may be not being able to separate between latitude and longitude in consistent way. And so, with the help of the fhir org team, we had another idea that would be viable, to use a Questionnaire item of type group. The Questionnaire item would have a custom extension to represent location-widget and also have child items of type string with custom extensions to specify latitude, longitude and altitude -  these would be used in the ui to render and populate the coordinates.
Essentially, it would look like
 {
          "linkId": "location-widget",
          "type": "group",
          "extension": [
            {
              "url": "https://github.com/google/android-fhir/StructureDefinition/questionnaire-itemControl",
              "valueCodeableConcept": {
                "coding": [
                  {
                    "system": "https://github.com/google/android-fhir/questionnaire-item-control",
                    "code": "location-widget"
                  }
                ]
              }
            }
          ],
        "item": [
          {
            "linkId": "latitude",
            "type": "string",
            "required": true,
            "readOnly": true,
            "extension": [
              {
                "url": "gps-coordinate",
                "value": "latitude"
              }
            ]
          },
          {
            "linkId": "longitude",
            "type": "string",
            "required": true,
            "readOnly": true,
            "extension": [
              {
                "url": "gps-coordinate",
                "value": "longitude"
              }
            ]
          }
        ]
        }

@jingtang10 would love to hear what you think
cc @f-odhiambo @ageryck

I think defining custom widgets (together with custom extensions) in the SDC library is a great approach. This is fine.
The important thing is documentation and making sure people using your questionnaires are aware of the extensions you define otherwise your questionnaire will not be usable.
Be good to share this with the fhir chat community as well, especially to get grahame and lloyd's opinion.

After reviewing the above implementation idea, we felt it may have had deficiencies of may be not being able to separate between latitude and longitude in consistent way. And so, with the help of the fhir org team, we had another idea that would be viable, to use a Questionnaire item of type group. The Questionnaire item would have a custom extension to represent location-widget and also have child items of type string with custom extensions to specify latitude, longitude and altitude - these would be used in the ui to render and populate the coordinates.
Essentially, it would look like
 {
          "linkId": "location-widget",
          "type": "group",
          "extension": [
            {
              "url": "https://github.com/google/android-fhir/StructureDefinition/questionnaire-itemControl",
              "valueCodeableConcept": {
                "coding": [
                  {
                    "system": "https://github.com/google/android-fhir/questionnaire-item-control",
                    "code": "location-widget"
                  }
                ]
              }
            }
          ],
        "item": [
          {
            "linkId": "latitude",
            "type": "string",
            "required": true,
            "readOnly": true,
            "extension": [
              {
                "url": "gps-coordinate",
                "value": "latitude"
              }
            ]
          },
          {
            "linkId": "longitude",
            "type": "string",
            "required": true,
            "readOnly": true,
            "extension": [
              {
                "url": "gps-coordinate",
                "value": "longitude"
              }
            ]
          }
        ]
        }

@jingtang10 would love to hear what you think
cc @f-odhiambo @ageryck

@LZRS how does this look on the QR?

After reviewing the above implementation idea, we felt it may have had deficiencies of may be not being able to separate between latitude and longitude in consistent way. And so, with the help of the fhir org team, we had another idea that would be viable, to use a Questionnaire item of type group. The Questionnaire item would have a custom extension to represent location-widget and also have child items of type string with custom extensions to specify latitude, longitude and altitude - these would be used in the ui to render and populate the coordinates.
Essentially, it would look like
 {
          "linkId": "location-widget",
          "type": "group",
          "extension": [
            {
              "url": "https://github.com/google/android-fhir/StructureDefinition/questionnaire-itemControl",
              "valueCodeableConcept": {
                "coding": [
                  {
                    "system": "https://github.com/google/android-fhir/questionnaire-item-control",
                    "code": "location-widget"
                  }
                ]
              }
            }
          ],
        "item": [
          {
            "linkId": "latitude",
            "type": "string",
            "required": true,
            "readOnly": true,
            "extension": [
              {
                "url": "gps-coordinate",
                "value": "latitude"
              }
            ]
          },
          {
            "linkId": "longitude",
            "type": "string",
            "required": true,
            "readOnly": true,
            "extension": [
              {
                "url": "gps-coordinate",
                "value": "longitude"
              }
            ]
          }
        ]
        }

@jingtang10 would love to hear what you think
cc @f-odhiambo @ageryck

@LZRS how does this look on the QR?

The QuestionnaireResponse would probably look like this
{
  "linkId": "location-widget",
  "item": [
    {
      "linkId": "latitude",
      "answer": [
        {
          "valueString": "41.40338"
        }
      ]
    },
    {
      "linkId": "longitude",
      "answer": [
        {
          "valueString": "2.17403"
        }
      ]
    }
  ]
}


Environments page - Bloom image should be used for Dev Box not Hyper-V

Dev Home version
No response
Windows build number
No response
Other software
No response
Steps to reproduce the bug
Dev Boxes are already using the 'Bloom' image in the Dev Box portal. We should ensure alignment and use the same image for Dev boxes and something else for Hyper-V environments.
Expected result
No response
Actual result

Included System Information
No response
Included Extensions Information
No response

https://github.com/microsoft/devhome/pull/2823
https://github.com/microsoft/DevHomeAzureExtension/pull/170


fix into filesize tests

Description
fix into file size (trim string before trying to convert)
and fix tests
Tests
Make sure you've run and fixed any issues with these commands:

[x] cargo fmt --all -- --check to check standard code formatting (cargo fmt --all applies these changes)
[ ] cargo clippy --all --all-features -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect to check that you're using the standard code style
[x] cargo build; cargo test --all --all-features to check that all the tests pass

i horked this one

oh, i didn't see that you made changes to this pr - lol - that's why i horked it up - there were changes i didn't have. haha - now i know.


Spike - table-wrapper with selection components/bulk actions

This spike shows what would generally be required to support using the selection components similar to d2l-list. It includes the following, which automatically handles wire-up for the standard action behaviours.

d2l-selection-input
d2l-selection-select-all
d2l-selection-summary
d2l-selection-action
d2l-selection-action-dropdown
d2l-selection-action-menu-item
SelectionMixin - required to be extended by d2l-table-wrapper

What's not covered here is:

layout as per Design - might require a header component like d2l-list-header (ex. spacing, overflow, etc)
probably require a new slot for the actions header so we can control layout
stickiness - likely we want the header actions to stick along with the actual table header
d2l-selection-select-all-pages - likely need a new component to manage things like d2l-list-header
what happens to the actions header when scroll-wrapper is in play and the table is overflowing?

Closing this PR since it was just a spike and we no longer need to reference anything here.


Game lacks LOOC

Local out-of-character, so you can salt without everyone seeing your message.

i absolutely do not want LOOC

A tutor system might come in handy instead then. And also sending ahelps to discord so admins can see

might even expand the mentor system to "forum"-esque system where people can:

opt into getting notifications if someone asks a question
ask questions, duh

imo this would be miles more effective than looc

The consensus is that we won't have a LOOC. Maybe another codebase will implement it


Rework Model Compiler code generation config API

Changes to the Model Compiler API
In this PR we change the Gradle API of the Model Compiler (mc-java). The change is related to the configuration which targets code generation actions.
In particular, the code generation configurations are:

Joined under the codegen { } block.
Grouped by use case into forEvents { }, forRejections { }, forCommands { }, forEntities { }, forMessages(..), and validation { }.

Each of the configuration groups allows tweaking all the related code generation properties.
The configuration is preset with the default values used in Spine, so that, in the simplest scenario, the users don't have to configure anything.
For users of Model Compiler who configure it in the "default" way (see model-compiler.gradle) the migration to the new configuration API consists of deleting the whole configuration and moving on.
For users who customize their code generation in other ways, it might be helpful to look into the io.spine.tools.mc.java.codegen.Codegen docs for a better understanding of the new API.
Example
modelCompiler {

    codegen {

        forEntities {
            options.add("my_option")
            markAs("com.acme.MyEntityState")
        }

        forEvents {
            markFieldsAs("com.acme.EventField")
        }
    }
}

For the full set of configuration parameters, see io.spine.tools.mc.java.codegen.Codegen.
Breaking changes
Some modelCompiler extension fields are deleted, namely interfaces, methods, entityQueries, fields, generateValidatingBuilders, and generateValidation. The equivalent settings can now be made through the codegen { } DSL.

@armiol, @alexander-yevsyukov, PTAL.

@alexander-yevsyukov, @armiol, PTAL again.

@dmdashenkov, please update the PR description with new names for the Gradle DSL.

@alexander-yevsyukov, PTAL again.


feat: raw output and better URL handling

Add raw option to get command to support automation and piping
Build URLs in a better way so that the base URL options work regardless of whether they end in "/'"

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


add user-defined file-ext but supported format for "File Explorer add-ons utility"

Thanks to this power tool, I love the function named "Preview Pane" in "File Explorer add-ons utility", which supports markdown format.
However, some of my other markdown tools use different file-ext than simply .md or .markdown. Therefore, it would be great if there is an option to add user-defined file-ext, mapping to the supported format when previewed.
Thanks!

What is/are the extension(s) you would like to see?
Check out issue #1527, it's being worked on right now. Maybe that'll add the things you want.

Yes, very similar with maybe a little difference.
Actually I sometimes create my own extension(s) for special softwares, which is not common.  So it is greater if there is a way to tell the powertoy that, this or that unknow extension is just a plain txt or other supported format.
I am not sure, but this issue could be closed, if it is the same thing with the mentioned issue from developers' views.
Thank agian.

#1527 is only known formats.
You can't make "unknown" act like text, what is the file is some massive binary file, then you're encoding and displaying.  How i'd imagine this would work would be proxy style.  When you see ext foo, treat it like bar ext

This then would solve #6019 and #9109 since you'd proxy them against Markdown

Issue #10126 needs to be done as part of #1527 / this item.

Yes as you said, I think my problem can be solved if with the proxy style.

Hi @crutkas,
is there any news concerning the implementation of the proxy style solution which would also solve #9109?
Cheers

It isn't something currently on the roadmap for the near future. https://github.com/microsoft/PowerToys/wiki/Roadmap  The monaco engine support is the next big file explorer item we'd be adding in but has installer and settings work that needs to be done in the 0.51 iteration

If this is something you feel strongly on and would like to help out with, please lets chat!

Check out issue #1527, it's being worked on right now

Not anymore.

This then would solve #6019 and #9109 since you'd proxy them against Markdown

Issue #10126 needs to be done as part of #1527 this item.

All of the above were closed without a decision to add support for many extensions that are actually plain text.
It remains for me to vote for this proposal, as the only one that has not yet been closed.

This would be a great improvement. E.g. we have .module files which are in fact .php files. It would be very nice if we could map these extensions somehow.


Font-size control is strange if there are more then one font-size controls in visual

Hello
I have just noticed strange behavior of font-size controls in appearance section.
In case if I use more then one font-size controls in one section, they change to percentage controls.
My workaround is:
settings.ts:
export class dataPointSettings {     public visualFontSize: number = 12;     public headerFontSize: number = 13; }
capabilities.json
    "objects": {         "dataPoint": {             "displayName": "Appearance",             "properties": {                 "headerFontSize": {                     "displayName": "Header Text Size",                     "type": {                         "formatting": {                             "fontSize": true                         }                     }                 },                 "visualFontSize": {                     "displayName": "Visual Text Size",                     "type": {                         "formatting": {                             "fontSize": true                         }                     }                 }             }         }     }
And result is something strange.

Can confirm this bug. The controls still output a number (e.g. 12, 13) it's just a presentation issue.

Same experience I have with a transparency control and font size, resulting in the font-size controller showing a % sign.


Distributed training hangs indefinitely at FP16_Optimizer#step

When I run distributed training with more than one GPU, training gets stuck at the very beginning and hangs indefinitely. It is stuck in FP16_Optimizer#set (specifically at this line, where data is implicitly moved from the GPU to the CPU).
The command line hangs at this indefinitely and makes no progress no matter how I wait:
training:   0%|                                                            | 0/1000000 [00:00<?, ?it/s]
I see this issue regardless of which CUDA version I use (I've tried it with 10.0 and 10.1), and regardless of whether I install apex myself or use the docker image icaruszyz/large-scale-training:dialogpt.
I do not experience this issue when I run demo.py rather than using python -m torch.distributed.launch to run training (i.e. I see this issue only when I try to train on multiple GPUs, not on a single GPU). I have not tried training with full 32-bit precision because I want to limit the number of GPUs I have to use.
The fact that this issue only occurs when training with multiple GPUs, and that it occurs on a line which transfers data from the GPU to the CPU, suggests to me that there may be a race condition related to collecting data from multiple GPUs.
Training configuration:
INFO - __main__ -   Input Argument Information
INFO - __main__ -   model_name_or_path            ./configs/762M
INFO - __main__ -   seed                          42
INFO - __main__ -   max_seq_length                128
INFO - __main__ -   skip_eval                     False
INFO - __main__ -   init_checkpoint               ./models/large/large_fs.pkl
INFO - __main__ -   train_input_file              ./data/train.128len.db
INFO - __main__ -   eval_input_file               ./data/dummy_data.tsv
INFO - __main__ -   continue_from                 0
INFO - __main__ -   train_batch_size              8
INFO - __main__ -   gradient_accumulation_steps   2
INFO - __main__ -   eval_batch_size               16
INFO - __main__ -   learning_rate                 0.0001
INFO - __main__ -   num_optim_steps               1000000
INFO - __main__ -   valid_step                    10000
INFO - __main__ -   warmup_proportion             0.1
INFO - __main__ -   warmup_steps                  16000
INFO - __main__ -   normalize_data                True
INFO - __main__ -   fp16                          True
INFO - __main__ -   lr_schedule                   noam
INFO - __main__ -   loss_scale                    0
INFO - __main__ -   no_token_id                   True
INFO - __main__ -   output_dir                    models/output_model
INFO - __main__ -   log_dir                       None
INFO - __main__ -   pbar                          True
INFO - __main__ -   local_rank                    0
INFO - __main__ -   config                        None
INFO - __main__ -   device                        cuda:0
INFO - __main__ -   n_gpu                         1

This bug is preventing me from fine-tuning the large model, which requires multiple GPUs.
Has anyone else experienced this or found a workaround?

Our model was trained on multiple GPU without issues, it might be a display issue related to progress bar, or different version of apex...
So can you try with a very small num_optim_steps (say 100) and see if it actually train the model or not?


Proper Information About Graphnet

Kindly Provie the proper Information about GraphNet , that how it will work and how it will be implemented.

See the PR #6


Add default configuration for Haskell LSP

This adds a default configuration for the Haskell LSP, HIE.

@Tehnix, thanks for the PR 👍, Although i'm wondering whether this would go better in the documentation wiki re LSPs we have tended to put information re how to integrate new LSPs here, the reasoning behind this as @bryphe has pointed out is that the more lsps Oni ships with the bulkier the application, I think having it in the wiki like for golang, c++ and c-sharp would be really great though with some installation instructions?

That would also make sense, yeah :) I'll add it to the wiki page instead, and close this PR then.

Perhaps a bit too quick on that one. I saw that pyls the python LSP is configured in the DefaultConfiguration, but still requires one to install it yourself.
Perhaps a mix of adding the configuration here, and then install instructions in the wiki entry?
Let me know what you think.

We've got pyls and clangd defined in the code already, so I don't see any issues with adding another?
If we were bundling the executables that would be a bit different, but I think just including the config pre-entered seems fine to me.

tbh atm its a few lines and having it means a haskell user who has the lsp downloaded will have everything work automagically which is great.
Not sure what the long term plan is though, aka going forward will we have defaults for most user languages in which case if it isn't clear that were setting specific defaults then it could raise issues if our defaults clash with what a user ends up setting e.g. a user sets 2/4 of the lsp config opts since they want to use a (different) lsp for a language than our default then don't realise we've set another two defaults to something that's incompatible with their choice 🤷♂.
I'm happy with this merged into the default config or as documentation will defer to whatever the prevailing preference is.

💯 , thanks for putting this together @Tehnix , and thanks for merging it in @Akin909 !
I didn't realize there is a haskell language server... I just read a book on haskell, I'll have to try this out 👍 Very cool!

Not sure what the long term plan is though, aka going forward will we have defaults for most user languages in which case if it isn't clear that were setting specific defaults then it could raise issues if our defaults clash with what a user ends up setting

Long-term, once our plugin story is more mature, it'd be cool if we had language-specific plugins. It'd be great if they could bundle the language servers as well (like VSCode's plugins). It's a nice experience if you just add one plugin with minimal configuration and you're all set 👍
Shorter-term, I think this approach is great - especially for cases like this where there is one primary language server. One thing I'd like to add to make this a bit nicer is to have some sort of message / URL that we can point a user to if the language server fails to start (for example, if the user doesn't have it installed). It'd be cool if we could put up a notification like "I see you're opening a Haskell file - Oni works great with the haskell language server. Click here to learn more.". Potentially we could add configuration settings like language.<language-identifier>.languageServer.helpText and  language.<language-identifier>.languageServer.helpUrl. Then, if a language server fails to launch, we look at the config and see if those are available, and if so, pop up a notification.

@Tehnix, @Akin909  Hello and thank you very much for adding support for Haskell Language Server in Oni. Unfortunately I am not able to get it to work.
Oni version: 0.3.4-1
OS: Arch Linux
stack and HIE have been installed from the distro's repositories
First of all upon loading/creating a Haskell file I am getting errors:

Received notification for - Unhandled Rejection: Unable to find root csproj file
Uncaught (in promise) Unable to find root csproj file
I can also see a warning: No grammar found for language: haskell
Another warning: Error from tss: /bin/sh npm command not found

Not sure why is looking for a c# project file....
My directory structure is really simple for testing purposes:
Projects

.oni/config.js - custom config
hello.hs --> single haskell file

The contents of the configuration file are:
const activate = (oni) => {
   // access the Oni plugin API here

   // for example, unbind the default `<c-p>` action:
   oni.input.unbind("<c-p>")

   // or bind a new action:
   oni.input.bind("<c-enter>", () => alert("Pressed control enter"));
};

module.exports = {
    activate,
   "ui.colorscheme": "hybrid",
   "ui.animations.enabled": true,
   "ui.fontSmoothing": "auto",
  "language.haskell.languageServer.command": "hie",
  "language.haskell.languageServer.arguments": ["--lsp"],
  "language.haskell.languageServer.rootFiles": [".git"],
  "language.haskell.languageServer.configuration": {},
}

Any pointers to get this running properly would be greatly appreciated. I can provide you with more info if required so please let me know.

I'm fairly certain HIE won't work without a project file, i.e. a .cabal file (and possibly a stack.yaml). Are you able to get HIE working with other editors (e.g. VSCode) in the same project?

@Tehnix thanks for fielding that I dont know HIE at all, @Preconf what I can say real quick re the csproj error you're seeing is its a hang over from the initial implementation and the error message is actually from the function which tries to identify the project root I have a PR which should fix how that function works so itll be less confusing/will work better

@Akin909 No worries, it's a pretty HIE specific question :)
@Preconf Heh, I feel a bit bad that we don't have any "setup" or "getting started" in the HIE repository. For the best experience, I recommend the following:

Use stack in general for managing projects
Build haskell-ide-engine with make build-copy-compiler-tool
HIE should only work in projects, you can maybe do stack new HelloWorld simple
Set your Oni command to "language.haskell.languageServer.command": "stack exec -- hie"
Set your oni root files to "language.haskell.languageServer.rootFiles": [".git", "stack.yaml", "*.cabal"]

Should get you going in the right direction :) The reason for me recommending make build-copy-compiler-tool, is that the GHC version you built HIE with needs to match the GHC version in your project, else you'll get some strange errors (if it even works). You can check with hie --compiler.

@Tehnix Awesome, thank you very much for the detailed instructions! Hopefully I can get it working :+1:


Add Formo

Formo.so is a web3 product analytics platform. Formo gives creators, brands, and product teams a way to profile their onchain audience and measure engagement. Our suite of no-code tools includes web3 forms, wallet CRM, and onchain product analytics dashboards to help product teams measure and optimize their user funnel
Checklist

[x] The URL is not already present in the list (check with CTRL/CMD+F in the raw markdown file).
[x] Each description starts with an uppercase character and ends with a period.Example: solc-js - JavaScript bindings for the compiler.
[x] Drop all A / An prefixes at the start of the description.

Please let me know once it become publicly available 👍

@ahmet


Proxy authentication broken with 0.76 -> 0.83 upgrade.

Proxy authentication was possible in 0.76 using a string like "user:password@ip:port".  In 0.83 I am getting the following error:
Traceback (most recent call last):
File "req.py", line 10, in
print get('http://ipcheckit.com', proxies=p).content
File "build\bdist.win32\egg\requests\api.py", line 80, in get
File "build\bdist.win32\egg\requests\api.py", line 67, in request
File "build\bdist.win32\egg\requests\sessions.py", line 191, in request
File "build\bdist.win32\egg\requests\models.py", line 409, in send
File "build\bdist.win32\egg\requests\packages\urllib3\poolmanager.py", line 127, in proxy_from_url
File "build\bdist.win32\egg\requests\packages\urllib3\connectionpool.py", line 521, in connection_from_url
File "build\bdist.win32\egg\requests\packages\urllib3\connectionpool.py", line 497, in get_host
ValueError: invalid literal for int() with base 10: '(censored)@<IP_ADDRESS>:60099'

This may be an unexpected side effect of @shazow's hated for the urlparse module :)

You are correct. :(
I actually had a thought that @ would break my parsing last week but didn't get around to fixing it yet.
Sorry about this, I'll fix it this week. It's being tracked here: https://github.com/shazow/urllib3/issues/12
If everyone would prefer I switch to using urlparse proper, I'm willing to do that begrudgingly. :P

This specific case is fixed in https://github.com/shazow/urllib3/commit/e5c2c193a0a93f97202ad76749231723f8d60156


Exporting Experiment (Sub-)Table into own file & component

@j1z0
Ready for master (I think) (so people can pull in latest version) & works well on Browse page (same functionality/appearance as before); will likely edit experiments-table.js further to integrate with exp-set page (likely on branch FF-314 instd. of this one).
Moved out code related to experiments/files' data fitting into table into new component (and file) ExperimentsTable. Tiny amount of refactoring for comprehensibility. The experiments-table.js module now also contains a function getFileDetailContainer which houses Carl's code related to parsing experiment/file data for table that may be imported to other modules/component. ExperimentsTable performs same actions as ExperimentSet/ExperimentSetRow previously did in terms of setting state of selectedFiles, but also allows to supply a parentController react element (via parentController={this} where this is the parent component's reference to itself so that the parentController may be used to manage state (state.checked, state.selectedFiles) for integration with Browse view & checkboxes and similar functionality later on Exp-Set page.

Coverage increased (+0.1%) to 51.151% when pulling 347cb1658b5c21421300693b3500511f15f87b0c on browse-table-for-exp-set-page into a38a50f38bc2ea935da00b4c3fcd4604eb7eae27 on master.

Coverage increased (+0.1%) to 51.151% when pulling 69b41ec3dd44a2886c6e12dfcacd5421fadf2c9b on browse-table-for-exp-set-page into a38a50f38bc2ea935da00b4c3fcd4604eb7eae27 on master.

Coverage increased (+0.2%) to 51.168% when pulling e773965a5f9e891d014df0976e2d1f828059aeed on browse-table-for-exp-set-page into a38a50f38bc2ea935da00b4c3fcd4604eb7eae27 on master.

Coverage increased (+0.4%) to 51.419% when pulling 8fc7403715e6e56c0e791fdee0f58174ce22a000 on browse-table-for-exp-set-page into a38a50f38bc2ea935da00b4c3fcd4604eb7eae27 on master.

@carlvitzthum Is there a way (e.g. script in bin maybe?) to generate extra data for experiments/sets in DB? My local has 1 exp-set + 4 experiments visible so haven't tested 100% (e.g. edits in commit 19854ca).

Coverage increased (+0.4%) to 51.428% when pulling 8fc7403715e6e56c0e791fdee0f58174ce22a000 on browse-table-for-exp-set-page into a38a50f38bc2ea935da00b4c3fcd4604eb7eae27 on master.

Coverage increased (+0.4%) to 51.428% when pulling 8fc7403715e6e56c0e791fdee0f58174ce22a000 on browse-table-for-exp-set-page into a38a50f38bc2ea935da00b4c3fcd4604eb7eae27 on master.


chore(deps): bump https://github.com/jenkins-x/jxr-packs-kubernetes from 0.0.43

Update jenkins-x/jxr-packs-kubernetes from 0.0.43 to 0.0.45
Command run was jx step create pr regex --regex version: (.*) --version 0.0.45 --files git/github.com/jenkins-x/jxr-packs-kubernetes.yml --repo https://github.com/jenkins-x/jxr-versions.git

Update jenkins-x/jxr-packs-kubernetes from 0.0.43 to 0.0.44
Command run was jx step create pr regex --regex version: (.*) --version 0.0.44 --files git/github.com/jenkins-x/jxr-packs-kubernetes.yml --repo https://github.com/jenkins-x/jxr-versions.git

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign garethjevans
You can assign the PR to them by writing /assign @garethjevans in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jenkins-x-bot-test: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

gke
012c4c1cd95a3d7220800b66f36b7599aaea6d01
link
/test gke

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the jenkins-x/lighthouse repository. I understand the commands that are listed here.

@jenkins-x-bot-test: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

gke
94a770906001e741a878437eea60670bed71cc98
link
/test gke

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the jenkins-x/lighthouse repository. I understand the commands that are listed here.


Error detected while processing ctrlp

environment

vim: NVIM 0.1.7

NVIM 0.1.7
Build type: RelWithDebInfo
Compilation: /usr/local/Homebrew/Library/Homebrew/shims/super/clang -Wconversion -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -O2 -g -DDISABLE_LOG -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -DHAVE_CONFIG_H -I/tmp/neovim-20170217-10582-ohg3df/neovim-0.1.7/build/config -I/tmp/neovim-20170217-10582-ohg3df/neovim-0.1.7/src -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/Cellar/jemalloc/4.4.0/include -I/usr/local/opt/gettext/include -I/usr/include -I/usr/include -I/tmp/neovim-20170217-10582-ohg3df/neovim-0.1.7/build/src/nvim/auto -I/tmp/neovim-20170217-10582-ohg3df/neovim-0.1.7/build/include
Compiled by<EMAIL_ADDRESS>
Optional features included (+) or not (-): +acl   +iconv    +jemalloc +tui
For differences from Vim, see :help vim-differences

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/Cellar/neovim/0.1.7/share/nvim"

vim-airline: latest/0.8
OS: macOS Sierra version 10.12.3
Have you reproduced with a minimal vimrc:

Not yet, There's another problem in vim
There's another problem in Vim

Error detected while processing function airline#check_mode[45]..airline#highlighter#highlight[16]..airline#highlighter#exec:
line   20:
E421: Color name or number not recognized: ctermfg=-1 ctermbg=-1

What is your airline configuration:

This error happens exactly the same with/without the configuration listed below

" airline
let g:airline_powerline_fonts = 1
"if !exists('g:airline_symbols')
    "let g:airline_symbols = {}
"endif

let g:airline_left_sep = ''
let g:airline_right_sep = ''

" airline theme
let g:airline_theme='light'

if you are using terminal:

terminal: iterm2
$TERM variable: xterm-256color
color configuration (:set t_Co?):

neovim:
E846: Key code not set: t_Co

vim:
t_Co=256

if you are using Neovim:

does it happen in Vim:

There's another problem in Vim

Error detected while processing function airline#check_mode[45]..airline#highlighter#highlight[16]..airline#highlighter#exec:
line   20:
E421: Color name or number not recognized: ctermfg=-1 ctermbg=-1

actual behavior

Error detected while processing function airline#check_mode[45]..airline#highlighter#highlight[40]..<SNR>90_exec_separator[13]..airline#highlighter#
exec:
line   20:
E411: highlight group not found: CtrlPlight_to_CtrlPdark_inactive

expected behavior
no errors

exactly same problem to me as well.

Same here, sadly I am no hero in hunting down the root of the bug :( would be glad to help!

duplicate of #1417 and #1415 since I cannot reproduce, helping to debug this issue as mentioned in #1415 would be appreciated.

This problem just started occurring for me, and I can't for the life of me figure out what changed.
Based on discoveries in #1415, the following worked for me
function! Local_AirlineThemePatcher(palette)
    " Trick to ensure 'Normal' highlight group exists
    if !hlexists('Normal')
        highlight Normal ctermbg=0
    endif
endfunction

let g:airline_theme_patch_func = 'Local_AirlineThemePatcher'

@systemmonkey42's fix did not work for me. Similar issue:
Error detected while processing function airline#check_mode[45]..airline#highlighter#highlight[16]..airline#highlighter#exec:
line   20:
E421: Color name or number not recognized: ctermbg=-1

Same issue here on vim with last vim-airline version.
Error appears when splitting the vim window (i.e. by :new or :VSplit commands).
MacOS X Sierra 10.12.3, iTerm 3.0.14, vim 7.4.
Error detected while processing function airline#check_mode[45]..airline#highlighter#highlight[40]..<S
NR>83_exec_separator[13]..airline#highlighter#exec:
line   20:
E421: Color name or number not recognized: ctermfg=-1 ctermbg=NONE```

please check again with current head

@chrisbra thanks for fast fix! Now it works perfectly.


Removing double rescaling in ecg_hrv()

Double rescaling of RRi already done at L533, causing "ECG_RR_Interval" units to be in microseconds units instead of milliseconds, and possibly resulting in scale errors in "frequency" and "non-linear" features.

@Fegalf Thanks ;), Could you add yourself to the contributors list?


Fix jsonPath of example

Coverage remained the same at 100.0% when pulling 2c9def090cee68b0d5517928493a931e2ba2a944 on fix-jsonpath-for-example into 75bd24da370d11636900fbeebbc4dc5439bd218f on master.