[FR] Allow Label Studio local files import

Proposal Summary
Currently when uploading image from voxel51 -> Label studio for annotation we open and pass all images as bytes. This

is slow when trying to import large numbers of files (10k+)
consumes a lot of RAM
leads to data being duplicated in LS cache folder

Instead we can leverage LS local storage, it's not enabled by default, but it's possible to read env var and detect if it's enabled, in such case pass images as filepath, not bytes. This wouldn't change anything for the end users.
In my use case this improved speed of sending large batches of images for annotations by 20x
What areas of FiftyOne does this feature affect?

[ ] App: FiftyOne application
[x] Core: Core fiftyone Python library
[ ] Server: FiftyOne server

Details
Draft implementation looks as follows:
def _upload_tasks(self, project, tasks, predictions=None):
    """Uploads files to Label Studio and registers them as tasks.

    Args:
        project: a ``label_studio_sdk.Project``
        tasks: a list of task dicts
        predictions (None): optional predictions to upload

    Returns:
        a dict mapping ``task_id`` to ``sample_id``
    """
    ls_root = os.getenv("LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT", None)
    ls_local_enabled = os.getenv("LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED", None)
    local_storage_enabled = not (ls_root is None or ls_local_enabled is None)
    # if files are not inside local storage root, we can't use local storage
    common_prefix = os.path.commonprefix([one[one["media_type"]] for one in tasks]).rstrip("/")
    if local_storage_enabled and ls_root in common_prefix:
        project.connect_local_import_storage(common_prefix)
        def _get_file_path(file_path):
            return "/data/local-files?d=" + os.path.relpath(file_path, ls_root)
        files_data = [{one["media_type"]: _get_file_path(one[one["media_type"]])} for one in tasks]

        # Make the request to import tasks using URLs
        upload_resp = self._client.make_request(
            "POST",
            f"/api/projects/{project.id}/import",
            json=files_data,
        )

    else:
        files = [
            (one["source_id"], open(one[one["media_type"]], "rb")) for one in tasks
        ]
        # upload files first and get their upload ids
        upload_resp = self._client.make_request(
            "POST",
            f"/api/projects/{project.id}/import",
            params={"commit_to_project": True},
            files=files,
        )

        # create tasks out of the uploaded files
        payload = json.dumps(
            {
                "file_upload_ids": upload_resp.json()["file_upload_ids"],
                "files_as_tasks_list": False,
            }
        )
        self._client.headers.update({"Content-Type": "application/json"})
        self._client.make_request(
            "POST", f"/api/projects/{project.id}/reimport", data=payload
        )

    # get uploaded task ids
    uploaded_ids = project.get_tasks(only_ids=True)[-len(tasks) :]
    uploaded_tasks = {
        i: t["source_id"] for i, t in zip(uploaded_ids, tasks)
    }

    # upload predictions if given
    if predictions:
        source2task = {v: k for k, v in uploaded_tasks.items()}
        for _, label_predictions in predictions.items():
            ls_predictions = [
                {
                    "task": source2task[smp_id],
                    "result": pred,
                }
                for smp_id, pred in label_predictions.items()
            ]
            project.create_predictions(ls_predictions)

    return uploaded_tasks

Willingness to contribute
The FiftyOne Community welcomes contributions! Would you or another member of your organization be willing to contribute an implementation of this feature?

[x] Yes. I can contribute this feature independently
[ ] Yes. I would be willing to contribute this feature with guidance from the FiftyOne community
[ ] No. I cannot contribute this feature at this time

Hi @bonlime 👋 this looks like a great upgrade. A contribution would be most welcome! 🙇

@ehofesmann can you support/review @bonlime's PR here?


minTemperature cannot be above 10C

It seems I can't set the "minTemperature" variable on an "air-conditioner" to anything above 10 degrees celsius.
Attempting to do so causes homebridge to crash on start.
My A/C unit only goes as low as 16 - so having this hard-coded limit seems a bit silly.

Hi @lits101,
I think you haven't set pseudoDeviceTemperature in your config. So it default is 0 °C and you set minTemperature to 10 °C and cause the error.
Here is the config what I use. Only heater to 27°C, cooler to 26°C and off, three modes, FYI.
{
  "name": "air-conditioner",
  "type": "air-conditioner",
  "defaultHeatTemperature": 27,
  "defaultCoolTemperature": 26,
  "pseudoDeviceTemperature": 26,
  "data": {
    "off": "2600b602...",
    "temperature27": {
      "pseudo-mode": "heat",
      "data": "2600b602723..."
    },
    "temperature26": {
      "pseudo-mode": "cool",
      "data": "2600b6027036..."
    }
  }
}

Nope - I've got "pseudoDeviceTemperature" set to 25.
Setting
                               {                                         "name":"Air Conditioner",                                         "type":"air-conditioner",                                         "defaultCoolTemperature": 24,                                         "defaultHeatTemperature": 25,                                         "pseudoDeviceTemperature": 25,                                         "replaceAutoMode":"cool",                                         "minTemperature": 10,                                         "data":{                                                 "on":"26004c026f360f290e290e0e0e0e0d0f0d290e0e0e0e0d290f290e0e0e280f0e0d0f0d290e290e0f0d290$                                                 "off":"26004c02713510271027100b110a110b1127100b110b10281027100b1028100b100b11271027100b1127$                                                 "temperature30":{                                                         "pseudo-mode":"heat",                                                         "data":"26004c02703610271027100c100b100c10280f0c100b10281027100b1028100b100c10280f2$                                                         },                                                 "temperature29":{                                                         "pseudo-mode":"heat",                                                         "data":"26004c02713510271027100b110b110a1127100b110b11271027100b1127100b110a1127102$                                                         },

+1.
could be useful having a start temp from the one you can manage with the A/C, in my case it's 16.
btw, I think this plugin behave is caused from a HomeKit bug, but I'm not sure about that.

It has to be <= 10 otherwise the Home app starts having issues sorry
Sent with GitHawk

It's been a while, and perhaps Home app has sorted out the bug in the newer iOS. Is it possible to try again to have the minTemperature to be 20, especially for a cooling only AC? So the slider doesn't travel a long way to the very top for the >24 temperature that people actually use for cooling.

I need this too - my AC only goes as low as 16C.
Any chance that this bug has been solved?

It has to be <= 10 otherwise the Home app starts having issues sorry
Sent with GitHawk

@lprhodes
any updates on that? Does HomeApp still have this issue?

I'm having the same issue as well, my AC  - Low is 16C & High is 30C. No heater mode only cool. Is there a work around to get the correct temp to show up on Homekit app?
I've been experimenting setting the low to -9 and max to 0, as copied below.


RFC: Naming refactor and tests

This is motivated by the outstanding comments in #1085, but I’m really only starting to build the confidence I need to touch that code. Still, it is independent enough to perhaps be merged, and at least to gather comments about this work.
So, for now there should be exactly one functional change: supporting all kinds of digests instead of only @sha256: in imageParts. The rest is:

renames for clarity and consistency
splitting functions into stateless and easily-testable and the storage-dependent environment handling
hopefully comprehensive unit tests for imageParts, TagImage input normalization, and interpreting non-transport: inputs for pullImage.

Please see individual commit messages for more details.
RFC:

Is this wanted at all? Or should I just leave working-enough code alone, and not slow everyone down with merge conflicts? (FWIW at least some of the FIXME comments are real bugs.)
Is structuring the PR as a series of small commits acceptable?
AFAICT the outcome of #1085, apart from pulling the right image, which is clearly correct, is that pulled name@sha256:digest images are named in the storage as name:none (where none is an actual tag string, not “missing”, and the digest not recorded). (I can now confidently refactor the code to do this inside the imageParts abstraction without breaking anything, but that exposes how irregular the code doing this is.)

Is using the explicit none tag  Is that intentional? If so, why is it necessary?
Is dropping the digest and not recording it in the storage intentional? If so, why is it necessary? (Looking at Image.RepoDigests, it forms a series of name@digest values, all with the same Image.image.Digest value — but a single image (single image ID == config digest) can exist with multiple different manifest digests. Shouldn’t the original values be recorded when pulling, and reproduced in RepoDigests in podman inspect?)

I personally have no issue with clarity refactors (actually planning a good number myself once things settle down code-wise), so I have no issue moving forward with this.
As to the rest of your questions, I'll have to defer to @baude who wrote the relevant pieces of code.
Proper review coming tomorrow, hopefully.

Changes look fine, though I'd like to get the :none situation sorted with @baude before we consider a merge

Changes look fine, though I'd like to get the :none situation sorted with @baude before we consider a merge

Note that this PR does not change the none situation at all (it only adds tests which reflect the current behavior). The complexity of the none semantics is exactly why this PR stops just before that.

bot, retest this please

@mtrmac If the open questions are not directly related to this PR, I'm fine merging if you take off the RFC label (Homu refuses to merge WIP/RFC PRs). Could you open an issue about it to make sure the conversation isn't lost, though?

LGTM
The multiple Patches is fine with me.  It is easier to review that way.
I will let @baude answer the specific quesitons.  But I wil lmerge now.
@rh-atomic-bot r+

Oops I missed the RFC on the github,  We'll see if Homu refuses.

Could you open an issue about it to make sure the conversation isn't lost, though?

Thanks, filed #1139; let’s discuss there.


Fix environment variable name name in docs build

Description
Fix typo in environment variable to have working docs build in circleci

Wait, so this was never working this whole time?
Also, one more place:
https://github.com/napari/napari/blob/467d57b3967074370b2ad6750bdfc1af8aee67d6/.github/workflows/build_docs.yml#L58

Merging to get docs to build -- less red X in CI


[FEATURE] [WIP] Default settings templates

Description

This PR brings back templates to the v2 SDK with a minimal selection of document_classification, response_ranking, and response_rating. When combined with https://github.com/argilla-io/argilla/pull/5418 , this PR will make it easy to load most datasets form the hub in the SDK.
Type of change

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
Refactor (change restructuring the codebase without changing functionality)
Improvement (change adding some improvement to an existing functionality)
Documentation update

How Has This Been Tested

Checklist

I added relevant documentation
I followed the style guidelines of this project
I did a self-review of my code
I made corresponding changes to the documentation
I confirm My changes generate no new warnings
I have added tests that prove my fix is effective or that my feature works
I have added relevant notes to the CHANGELOG.md file (See https://keepachangelog.com/)

I loved the concept myself but I am not 100% sure where this would fit in the docs, and if these config options still are an issue with the renewed singular docs.

Personally, I think there are two key factors here:

keep the list really short/ generic so that it's more about capturing the 80% of Argilla usage rather than all ML tasks.
focus on templates as an attribute of Dataset.form_hub rather than something that end users rely on to start new projects. I.e. they are tool for importing datasets, rather than creating them.

keep the list really short/ generic so that it's more about capturing the 80% of Argilla usage rather than all ML tasks.

I agree.
Shouldn't we just keep it as an internal method for us to streamline the process in that case?

keep the list really short/ generic so that it's more about capturing the 80% of Argilla usage rather than all ML tasks.

I agree.
Shouldn't we just keep it as an internal method for us to streamline the process in that case?

For me, exposing the working makes it easier to use and understand what's going on. I think it would cause us problems if the from_hub method and Features integration seems to automagic. This way users can see that some batteries are included, and if they won't to reuse it, they just define their own Settings object.


Sample script: Monitor Site Collections Storage Usage

Pull Request Title
Sample script: Monitor Site Collections Storage Usage
Linked Issue
Closes #2224

Awesome! We'll go through it asap 👏

Merged manually. Thank you! 👏


⚠ Bofrost.at has degraded performance

In 0dfa475, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2773 ms

Resolved: Bofrost.at performance has improved in 6ffcece.


"" in examples

There are some "" lines in https://testfixtures.readthedocs.io/en/latest/logging.html that actually should be blank lines.

Can you explain the impact this is having for you?

Huh, Github stripped away the thing. Let's try that again!
The page has this block of example output:
Traceback (most recent call last):
 ...
AssertionError: sequence not as expected:
<BLANKLINE>
same:
(('root', 'INFO', 'a message'),)
<BLANKLINE>
expected:
(('root', 'ERROR', 'another error'),)
<BLANKLINE>
actual:
(('root', 'ERROR', 'an error'),)

while the actual output would be
AssertionError: sequence not as expected:

same:
(('root', 'INFO', 'a message'),)

expected:
(('root', 'ERROR', 'another error'),)

actual:
(('root', 'ERROR', 'an error'),)

This just confused me for a second or two.

Okay, but can you explain what impact this is having for you?
I'm not sure there's a lot I can do, the examples in the documentation are tested with doctest and that requires the <BLANKLINE> stuff :-/

The impact is a mismatch between documentation and actual output. I was able to figure out that this was a formatting thing, someone else might not.

Okay, like I said, unfortunately there's not a lot I can do to change this though.
If you can tell me how to change or configure doctest to not need the <BLANKLINE> stuff in it's example output, I'd love to make this change. I wonder if @tpeters has an opinion?
Unfortunately, in the meantime, there's not a lot I can do to fix this.


Clarify nullable behavior

Fixes #38682
Add more of an introduction to the concepts for nullable reference types.
Clarify the use of nullable contexts as a migration strategy.
Finally, do a general edit pass.

Internal previews

📄 File
🔗 Preview link

docs/csharp/nullable-references.md
Nullable reference types

closing and reopening for a fresh CI build


Dead menu link

In the menu, there is a navigation point "index" in the "Introduction" section. Clicking on it does not have an effect, as there is no "index" page in this section.
I think, this is a leftover from https://github.com/usebruno/bruno-docs/commit/0787a71ea60b1b4c5bec99bdc9f636c4bb5137b9

I will create a PR for this issue.

This page is now preset in docs: https://docs.usebruno.com/introduction/feedback-community
Closing this issue.


Treasure Island / Flute Doors

Not really a bug in the program per se, but when I play the flute on one side of the door it unlocks. Great. I go through. But it's locked on the other side of the door and I have to play the flute again. I understand why it was set up this way, but logic would suggest that the door should be unlocked on both sides.

Silver Chest should be treated as a container object. I can't open it. When I tried to "put potion in chest" I get the response "I can't put things into the chest!"

Can't seem to remove doubloons from other chest (dragon's). Can't pick up that chest either.

Magic dagger is a "spear"

The flute behavior was like that in the original and in Eamon Deluxe IIRC. I just re-implemented the same logic.
In EDX, Frank treated the silver chest as a treasure and not a container. It stayed that way when I imported the data. I might consider changing it because it's kind of weird. (I can't check the Apple II original, because it was written in Main Program v4 which didn't have the concept of a container artifact.)
There is a name conflict that prevents you from targeting the "chest" if you're carrying the "silver chest" (due to the fuzzy matching). It was like this in EDX as well and I haven't found a perfect solution yet. As a workaround, try dropping the silver chest in a different room, then come back and interact with the dragon's chest.
Frank also reclassified lots of dagger and short sword type weapons as "spears" due to the stabbing motion you use when fighting with them. (It's actually explained that way in the EDX adventure design manual.) So they all came over as spears when I imported the data. I might go through and change them back to swords, because I thought the original meaning of the "spear" category was "pole-arm", not "short stabbing weapon".

Fair enough on all of these. I guess my thought is that while Frank made certain decisions for Eamon Deluxe, if there are more logical decisions, that would be ideal. You may not think of it but for a play through though...

I have added a feature called "linked doors" which is useful when two sides of the same door appear as separate artifacts in two different rooms. This feature will open both "sides" of the door when either side is opened, and will close both sides when either side is closed.


es:model-get-test-instances array of refs behavior is surprising

This is probably more a request for clarification than a bug report.
The spec currently says the following about model-get-test-instances:

If a property is of type 'array', then a sequence of three elements is emitted, to emphasize that there are multiple values for that property

I have a property that is an array of entity refs, and I see two surprising things about the resulting test instance:

The test instance only generates one item in the array, not 3, as spec'd. IDC, but it would be good to know how it is supposed to behave so the apidoc can be corrected if necessary.
There are some recursive entity refs (A has a B has a A) , and the danger is handled by devolving the nested property to a string value eventually. That's probably WAI as it has to have some stop strategy, but I thought I should mention it.

The model descriptor looks like the following. Notice that a Person contains a friend property that is an array of Person refs. (I know, not a realistic way to do that. I was reaching.)
{ "info": {
    "title": "Example",
    "description": "ES Examples",
    "version": "1.0.0",
  },
  "definitions": {
    "Name" : {
      "properties": {
        "first": { "datatype": "string" },
        "middle": { "datatype": "string" },
        "last": { "datatype": "string" }
      },
      "required": ["first", "last"]
    },
    "Person": {
      "properties": {
        "id": { "datatype": "int" },
        "name": {
          "$ref": "#/definitions/Name",
        },
        "bio": { "datatype": "string" },
        "rating": { "datatype": "float" },
        "friend": {
          "datatype" : "array",
          "items": { "$ref" : "#/definitions/Person" }
        }
      },
      "required": ["id", "name"],
      "rangeIndex": ["rating"],
      "wordLexicon": ["bio"]
    }
}}

The generated test Person instance looks like the following. Note that this poor Person only has one friend and that Person/friend/name/Name and /Person/friend/Person/friend/Person are both just strings.
<Person>
  <id>123</id>
  <name>
    <Name>
      <first>some string</first>
      <middle>some string</middle>
      <last>some string</last>
    </Name>
  </name>
  <bio>some string</bio>
  <rating>123</rating>
  <friend datatype="array">
    <Person>
      <id>123</id>
      <name>
        <Name>some string</Name>
      </name>
      <bio>some string</bio>
      <rating>123</rating>
      <friend datatype="array">
        <Person>some string</Person>
      </friend>
    </Person>
  </friend>
</Person>

Hi Kim, good catches.  The first was a deliberate change -- I remember editing the spec but I sure don't see those edits now!
The second issue -- it's not actually devolving to a string, although I admit it looks like that -- those are 'references' rather than embedded objects.  So there is a devolution, but that is indeed the valid way to represent a reference to another instance.

Definitely not a bug, then. Thanks for the clarifications, Charles.


[debug-info] Fix filecheck pattern for llvm changes

Needed for apple/llvm-project#4154.

Before that PR lands, I am going to disable these tests so I prevent breakage. But I need this so I can validate the llvm-project PR.

apple/llvm-project#4154
@swift-ci test

https://github.com/apple/llvm-project/pull/4154
@swift-ci test

Windows build was broken by something unrelated.

Merging this and the other one together!


Update kafka-clients to 3.8.0

About this PR
📦 Updates org.apache.kafka:kafka-clients from 3.7.1 to 3.8.0
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

🔍 Files still referring to the old version number
The following files still refer to the old version number (3.7.1).
You might want to review and update them manually.
build.sbt

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.apache.kafka", artifactId = "kafka-clients" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.apache.kafka", artifactId = "kafka-clients" }
}]

labels: library-update, early-semver-minor, semver-spec-minor, old-version-remains, commit-count:1

Superseded by #1653.


Unable to Deploy or Retrieve data/files from the org through VS Code

Summary:
For my authorized org for a given project, when I right click on my project/lwc/apex class, and select Deploy source to org, a pop up comes up stating that the command is running but it keeps running forever but nothing gets deployed.
Steps To Reproduce:
Authorize an org.
Right click any component/project that you wish to deploy and click SFDX : Deploy source to org.
The pop up comes us saying Running SFDX: Deploy Source to Org and it run forever.
In the command-line output as well, it doesn't indicates that the deployment has started but it is in pending state for a long time.
Expected result
It should deploy my selected changes to my authorized org.
Actual result
The command/action hangs and runs forever and nothing gets deployed.
Salesforce Extension Version in VS Code: 57.6.0
SFDX CLI Version: @salesforce/cli/2.16.7 win32-x64 node-v20.8.1
OS and version: Windows 10
VS Code version: 1.94.1 ( user setup)

@Radha-4235 from the error I see your CLI install is trying to import an imcompatible version of ansi-escapes (we use v4, latest ones are ESM which cause the error you see).
Can you try do a full uninstall of the CLI then install it again?:
https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_uninstall.htm


Prepare regenesis for Rinkeby

Update the block number for the gas and SD hard forks

Codecov Report

Merging #443 (da3b804) into develop (e9f3d60) will decrease coverage by 5.96%.
The diff coverage is n/a.

:exclamation: Current head da3b804 differs from pull request most recent head 5ad6e86. Consider uploading reports for the commit 5ad6e86 to get more accurate results

@@             Coverage Diff             @@
##           develop     #443      +/-   ##
===========================================
- Coverage    79.58%   73.61%   -5.97%
===========================================
  Files           47       59      +12
  Lines         1445     1789     +344
  Branches       218      272      +54
===========================================
+ Hits          1150     1317     +167
- Misses         295      472     +177

Flag
Coverage Δ

contracts
87.18% <ø> (ø)

core-utils
53.79% <ø> (ø)

data-transport-layer
32.91% <ø> (?)

message-relayer
83.17% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...kages/data-transport-layer/src/utils/validation.ts
10.71% <0.00%> (ø)

packages/message-relayer/src/relay-tx.ts
82.52% <0.00%> (ø)

...ices/l1-ingestion/handlers/state-batch-appended.ts
68.18% <0.00%> (ø)

.../src/services/l2-ingestion/handlers/transaction.ts
60.86% <0.00%> (ø)

.../l1-ingestion/handlers/sequencer-batch-appended.ts
15.30% <0.00%> (ø)

packages/data-transport-layer/src/utils/index.ts
100.00% <0.00%> (ø)

packages/data-transport-layer/src/utils/eth-tx.ts
85.71% <0.00%> (ø)

...ckages/data-transport-layer/src/utils/contracts.ts
22.72% <0.00%> (ø)

...ices/l1-ingestion/handlers/transaction-enqueued.ts
53.84% <0.00%> (ø)

packages/data-transport-layer/src/utils/common.ts
47.05% <0.00%> (ø)

... and 2 more

Continue to review full report at Codecov.

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


feat: Add SENTRY_SPOTLIGHT env variable support

Allows setting Spotlight through $SENTRY_SPOTLIGHT env variable.
Part of getsentry/spotlight#482

Will add tests and then will request a re-review.

Finally, ready for the final round


Update config error message

Update config error message to provide correct atom

Sorry, can not merge this branch. It says that head branch is out of date. Will fix it right in the master branch.


SecretStr min_length, max_length

Bug
Output of python -c "import pydantic.utils; print(pydantic.utils.version_info())":
             pydantic version: 1.4
            pydantic compiled: True
                 install path: /app/venv/lib/python3.7/site-packages/pydantic
               python version: 3.7.5 (default, Apr 19 2020, 20:18:17)  [GCC 9.2.1 20191008]
                     platform: Linux-5.3.0-51-generic-x86_64-with-Ubuntu-19.10-eoan
     optional deps. installed: ['typing-extensions', 'email-validator']

When the constraints min_length or max_length are set for a field of type SecretStr the erorr appear:
e.g.
class SecrTest(BaseModel):
    b: SecretStr = Field(None, max_length= 4)

On field "b" the following field constraints are set but not enforced: max_length.
For more details see https://pydantic-docs.helpmanual.io/usage/schema/#unenforced-field-constraints

makes sense, thanks for reporting.
PR welcome to fix this.

hehe,
tried to fix it indeed:
https://github.com/transfluxus/pydantic/tree/fix_secret_str_constraints
not sure if all things are propper. Maybe you have a look or shall I just make a pull request?

oh, however test_schema.test_secret_types fails because the schema changed. So ultimately SecretBytes should have the same constraints I guess?


add cli test

Coverage report
 Click to see where and how coverage changed
FileStatementsMissingCoverageCoverage(new stmts)Lines missing

  server/lomas_server
  mongodb_admin.py

  server/lomas_server/tests
  test_mongodb_admin.py
55-62

Project Total

This report was generated by python-coverage-comment-action

found a few bug in the cli ^^ should be good now

almost all remaining non tested code is related to S3

unfortunatelly, I merged #79 in the wrong branch so it is partly a duplicate.


Update figure captions

Could someone update the figure captions to what each figure and plot now shows? This will greatly help me work through the text.

I'm on it.

Figures need attention I guess. They have changed a little...

some notes for us:

In figure 2, maybe the susceptible and resistant cells have changed places in part b, and d.
In figure 2, we need to enumerate a,b,c,d.
In figure 3, transition matrix estimation (f) looks like it is estimating it wrong... needs improvement(?)
In figure3, state assignment accuracy (d) all are 100%, a little weird...
In figure 3, the title and ylabel for part (e) should be the initial probability matrix.
In figure3, the ylabel of part (d) has an extra \
I guess figure 3 and 4 are combined! Figure 3 was supposed to be for a single state, and figure 4 was supposed to be for a 2-state population.
The whole results need to be rewritten.

Figure 3 should not have an f subplot. It should be named as the pi initial probability vector and it's being estimated poorly because it's testing on single lineages. It doesn't need that f subplot. And the accuracy for figure 3 is fine, it tends to get 100% all lineage sizes.

I thought it is single lineage, though with 2 states, so estimation for parameters have to change accordingly then.

Yea each of these points are single lineages of increasing length

#260

#281


A pull request based on Unidata's ghpull-319-arm-wkliao

This is a new pull request built on branch ghpull-319-arm-wkliao

Merged into branch ghpull-375 for evaluation.  Testing across platforms but currently failing to build nc_test on Windows w/ Visual Studio.  Output from one such build can be viewed here:

http://cdash.unidata.ucar.edu/viewBuildError.php?buildid=221

I'm guessing it is an issue with Visual Studio requiring different includes under some circumstances; referring back to the old test_read and test_write files should provide guidance as I don't recall off the top of my head and don't have the time at the moment to look at the new .m4 files.  I have to switch gears but will come back to this as soon as I can.

Reopened; didn't mean to close, clicked wrong button.

Confirmed that it is working on ARM; yay, thanks for the help @wkliao .  The Visual Studio issues will be easy enough to sort through I feel, once I have time to sit down and look at it.

The compile error is due to ssize_t requires a different header on Visual Studio, io.h, from most of the Linux compilers, unistd.h. I believe part of your fix 53c018a for file test_read.m4 should resolve this error for Visual Studio.

One would think, but a fresh checkout from GitHub fails to build.  I will pursue this later this week when I get a chance.

http://cdash.unidata.ucar.edu/viewBuildError.php?buildid=255

From libsrc/memio.c, I am seeing io.h is included in two places. One is within the if defined macro of #if defined (_WIN32) || defined (_WIN64) and the other is #ifdef _MSC_VER.
Maybe you need to do the same for test_read.m4.

Hi, Ward,
In 80d2b91, the following lines added in nc_test/test_read.m4 should be moved to after include<tests.h>, which includes config.h defining HAVE_SSIZE_T.
36 +#ifndef HAVE_SSIZE_T
37 +typedef int ssize_t;
38 +#endif

The _WIN32,_WIN64 conditionals were originally added to accommodate cross-compiled builds, before we had Visual Studio/cmake support.  I have no doubt there are a lot of places where things like that can be collapsed into the (usually) nearby _MSC_VER conditionals, but it can be tricky.  It will need done at some point.  Thanks for pointing out the HAVE_SSIZE_T conditional, I caught that too.  Doing a couple last tests across various platforms now.

Seeing test failures on 32-bit parallel platforms. Investigating.

In addition to the various 64-bit platforms tested, the branch works fine on 32-bit serial and 32-bit parallel when libmpich is used. 32-bit parallel with openmpi (version 1.10.2-8ubuntu1) fails.  The 4 failures can be seen here:

http://cdash.unidata.ucar.edu/viewTest.php?onlyfailed&buildid=322

Of the 4 failures, t_nc generates the most interesting error message:

Error Size of MPI_Offset or MPI_Aint too small for requested format  in file /home/tester/netcdf-c/nc_test/t_nc.c at line 374

I'm not super familiar with MPI development, but this seems to be the most interesting of the errors.  I will pursue this later, but I need to spend some time on another project that is languishing.

I suspect that MPI_Offset is of size 4 bytes on the 32-bit system in testing. When MPI_Offset is of size 4 bytes, PnetCDF turns off the support for CDF-2 and CDF-5 files. Is there a way to see PnetCDF's config.log file on CDash to check whether this is the case?
Does NetCDF support CDF-2 format when off_t is of size 4 bytes?

Does NetCDF support CDF-2 format when off_t is of size 4 bytes?

To the best of my knowledge it does; I would have to do some research to confirm that but it is my understanding that the 'machine independent' aspect of netCDF would apply here; there are no (to my knowledge) limitations on particular formats only supported on particular architectures, reading or writing.   I don't expect this would have been knowingly introduced in this pull request (as you mention this specifically in the context of pnetcdf); am I correct?

Is there a way to see PnetCDF's config.log file on CDash to check whether this is the case?

Not easily, but I am attaching it here.
Thanks!
pnetcdf_1.8.1_config.log.zip

Checking the latest OpenMPI 1.10.6 and 2.0.2, I found that MPI_Offset is of size 4 bytes on 32-bit machines. But in MPICH, it is of size 8 bytes. I posted a question on OpenMPI to check whether this is intended. 3195
From your PnetCDF configure log, I can see the support for CDF-2 and 5 was turned off due to the size of MPI_Offset being 4 bytes. I suggest we add a check in configure.ac and CMakeLists.txt to check whether PnetCDF supports CDF-2 and 5 so to disable/enable their tests in nc_test accordingly.
As far as I know, most of the modern OSs support "Large File Support (LFS)" on 32-bit machines. So off_t can be changed from 4 bytes to 8 bytes if the correct compiler flag is used, e.g. -D_FILE_OFFSET_BITS=64. Autoconf macro AC_SYS_LARGEFILE can detect and enable LFS automatically (which is used in both NetCDF and PnetCDF.) I guess today it is hard to find a 32bit machine running an OS that does not support LFS.
Given the above OpenMPI's behavior, I wonder have you used it to build HDF5 and then NetCDF on a 32bit machine and created/accessed a NetCDF-4 file that is lager then 4GB size?

My analysis is when MPI_Offset is 4 bytes, MPI-IO functions will not be able to access file location with offsets greater than 4GB, which should failed NetCDF to access large NetCDF-4 files. For classical 64BIT_OFFSET files, NetCDF should also have fail to access offsets greater then 4GB as lseek() would fail (when using POSIX I/O.)
I built HDF5 1.8.15 using OpenMPI 2.0.2 on the 32-bit machine where MPI_Offset is of 4 bytes.
Running HDF5 "make check" shows the message below in several parallel tests.
"Skipped GB file range test because MPI_Offset cannot support it"
When using that HDF5 to build NetCDF, "make check" failed for nc_test4/tst_parallel3 with error message: "Sorry! Unexpected result, /homes/wkliao/NetCDF/GIT/WKLIAO/netcdf-c/nc_test4/tst_parallel3.c, line: 105" etc. and error message from HDF5:"H5MM.c:62: H5MM_malloc: Assertion `size' failed."

Thank you for the information; I'm setting up a 32-bit environment now as well to run the large file tests in.  I have run them in the past on 32-bit, but not when parallel IO is supported.  I appreciate your insight into this, and will see what I can sort out; if the platform cannot support the test that is fine, but it should not manifest as an unexpected failure, so I will want to clean that up.

After an internal discussion with @rsth and @roblatham00, we decided not to support MPI libraries whose MPI_Offset is of size 4 bytes. This is because PnetCDF uses MPI_Offset everywhere. With a 4-byte MPI_Offset, PnetCDF cannot even support CDF-1 classic format, e.g. when CDF-1 files are larger than 4GB, legal on 32-bit machines supporting LFS. In the future releases of PnetCDF, the build process will be aborted when 4-byte MPI_Offset is detected.
As for NetCDF, I suggest not to use OpenMPI on 32-bit machines (and on cdash test). MPICH should be just fine. In addition, you may want to add a note in INSTALL.
From the discussion on OpeMPI issue 3195, the fix in OpenMPI, if there will be one, may not come out soon.

That sounds good and, as always, I appreciate your insights into the world of MPI.  I believe we have the pull request in a working state; I need to attend to a different project for a bit but then we will do a review and make sure everything is squared away.  The large file tests issue I mentioned previously is separate from this pull request and will have its own issue.
Thanks again; I'll add something to INSTALL and the release notes that pnetcdf is not supported under 32-bit w/ openmpi, requiring mpich instead.

There could be some configurations of MPICH that do not have an 8 byte
MPI_Offset -- I think some Solaris environments will not expose the 8 byte
off_t type if MPICH  requests strict c89 standards compliance.  I don't
think many deployments will use that in practice, but MPICH uses
--enable-strict to catch any portability issues during development.
So either MPICH or OpenMPI might in some configurations have a problem with
a small MPI_Offset.
On Mon, Mar 20, 2017 at 10:44 AM, Ward Fisher<EMAIL_ADDRESS>wrote:

That sounds good and, as always, I appreciate your insights into the world
of MPI. I believe we have the pull request in a working state; I need to
attend to a different project for a bit but then we will do a review and
make sure everything is squared away. The large file tests issue I
mentioned previously is separate from this pull request and will have its
own issue.
Thanks again; I'll add something to INSTALL and the release notes that
pnetcdf is not supported under 32-bit w/ openmpi, requiring mpich instead.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Unidata/netcdf-c/pull/375#issuecomment-287800648, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACLEEayKZAxga_G3BOCQp31qwovA4e8lks5rnp7ngaJpZM4MaXgU
.

I think we should send a note asking about this (4 vs 8 byte)
on the netcdf mailing list.

I agree; I'm also adding a section to the documentation about this, easily discoverable.  This way our user community should be able to find it pretty easily, and in a year I can avoid having to diagnose this problem from scratch again.

This is a large change; can we review this at the next netcdf meeting?

Yes; we had reviewed at a previous meeting and had come to some conclusions that were then sidelined until we could get the various tests working.  Now that the tests are working I'm starting a review of the changes (to refresh my memory) so that I'll be prepared to discuss the changes.
At the very minimum it will be good to get the changes in allowing pnetcdf 1.8.1 to work with netCDF; currently the latest version that passes the tests is 1.6.1.  We can discuss the other changes again at the next meeting.

The upstream branch containing the changes in #319 and #375 has been merged; closing this pull request out, as it wasn't automatically detected as merged.


HttpGPT Is crashing lately

Hello! there is something weird that is happening lately with this plugin in my project. Before was running perfect with any crashes, but lately started to crash (overall on packaged builds) and I don't understand why. Any idea what could be? Here is a link with the crash screenshot: https://pbs.twimg.com/media/F0qEnmnXoAAtJqW?format=jpg&name=large

Added verifications to the request and response before forwarding them. Couldn't replicate the crash after the change.


rename TrafficTarget to TrafficAccess

Describe the proposal
rename TrafficTarget to TrafficAccess
Scope

[ ] New specification
[x] Traffic Access Control
[ ] Traffic Specs
[ ] Traffic Metrics
[ ] Traffic Split

Possible use cases
This might be easier to understand and more intuitive. Would love to know the origin of the name TrafficTarget if someone has context.

I think TrafficAccess better defines what the API does 👍

Indeed, when I started to look at SMI, I have been confused by this suffix "Target". The API is called "Traffic Access Control" in the documentation, the API Group is access.smi-spec.io, and the kind is TrafficTarget, and not (yet?) TrafficAccess.

@michelleN I can make the PR for this one if it's OK with you.

That would be great. Thank you @patricekrakow

Before I start with the PR, I would like to summarize the possible options I see.
AS-IS

APIs
group
Kind(s)

Traffic Specs
specs
HTTPRouteGroup, TCPRoute

Traffic Access Control
access
TrafficTarget

Traffic Split
split
TrafficSplit

Traffic Metrics
metrics
TrafficMetrics, TrafficMetricsList

TO-BE Options
The changes will be shown in italic
Option 1

APIs
group
Kind(s)

Traffic Specs
specs
HTTPRouteGroup, TCPRoute

Traffic Access Control
access
TrafficAccess

Traffic Split
split
TrafficSplit

Traffic Metrics
metrics
TrafficMetrics, TrafficMetricsList

Option 2

APIs
group
Kind(s)

Traffic Specs
specs
HTTPRouteGroup, TCPRoute

Traffic Access
access
TrafficAccess

Traffic Split
split
TrafficSplit

Traffic Metrics
metrics
TrafficMetrics, TrafficMetricsList

Option 3

APIs
group
Kind(s)

Traffic Specs
specs
HTTPRouteGroup, TCPRoute

Traffic Access Control
access-control
TrafficAccessControl

Traffic Split
split
TrafficSplit

Traffic Metrics
metrics
TrafficMetrics, TrafficMetricsList

Option 4

APIs
group
Kind(s)

Traffic Specs
specs
HTTPRouteGroup, TCPRoute

Traffic Access Control
access
TrafficAccessControl

Traffic Split
split
TrafficSplit

Traffic Metrics
metrics
TrafficMetrics, TrafficMetricsList

Let me know if you have a preference for any of these options, or even another permutation I would have missed...

Hey @patricekrakow - option 2 looks the most clear to me. Would you still be able to work on this issue?
cc/ @johnsonshi


[Suggestion] Port to 1.16.5, 1.17.1, 1.19.4 for Fabric?

Fabric 1.16.5 and 1.19.4 support will both be coming in the future, however 1.17 support will likely not be provided unless highly requested.

I agree, but I think there should be at least one version for each one.


Please upgrade to null-safety version

Its' already migrated
just need to publish

Thanks to your package my app is fast as 🚀
Thank you!!!

@nitishk72 Do you have any updates for us?

@shinlh just fork it and point to your git repo

Is there a technical problem with publishing it?

We have temporarily gotten around this problem by adding the following to our pubspec.yaml:
dio_http_cache:
    git:
      url: https://github.com/vrtdev/dio-http-cache.git
      ref: feature/nullsafety-dio4

This obviously isn't ideal. When will an official null-safe version be released?

pls enable null safety. please maintain developers trust on your plugin. thank u


adds tests for mk_metadata_csv

General Checkups

[x] Have you checked that there aren't other open pull requests for the same issue/update/change?
[x] If your code includes new features and not just bug fixes/copy editing: Did you include new tests?

Description

Adds test for the function mk_metadata_csv in ohapi/utils_fs.py
Related Issue

Related to #14
Example

@gedankenstuecke I think the travis CI build failed at the previous merge commit for some other reason. It passes this time which shows an unexpected behavior if we think along the lines of the runtime files being created. Probably there was some other reason for the connection being timed out and not completed. I have opened an issue for the same #55 . Please look into it. Thanks :)

Sure @gedankenstuecke the whole point of opening that issue was to confirm this thing. I am updating this test now to use mock. Thank you :)

Closing as obsolete / redundant with 9fb9a6a1aed (sorry!)


Button Styles added

Title of the Pull Request

[X] Have you renamed the PR Title in a meaningful way?

Related Issue

Closes: #36
Description

The style of the buttons have been changed for better user-experience
Screenshots 📷

BEFORE Hover Effect

AFTER Hover Effect

FIRST SET OF BUTTONS

SECOND SET OF BUTTONS

THIRD SET OF BUTTONS

FOURTH SET OF BUTTONS

Type of change
What sort of changes have you made:

[X] New feature (non-breaking change which adds functionality)

Checklist

[x] My code follows the code style of this project.
[x] I have followed the contribution guidelines
[x] I have performed a self-review of my own code.
[x] I have ensured my changes don't generate any new warnings or errors.
[x] I have updated the documentation (if necessary).
[x] I have resolved all merge conflicts.

@vishanurag please check my PR request and let me know if any change is needed.

@vishanurag  please merge my PR

@vishanurag please check my PR request and let me know if any change is needed.

@vishanurag merge my PR

Please resolve merge conflicts

@vishanurag please check now


[Legal] Include NOTICE file in Azure CLI distributions

Azure CLI:

Add a NOTICE file at the root of the repo. (✔ Done)

Need generate a new NOTICE file by CG once the bug of Component Govenance UI is fixed.

Add the NOTICE file to the distributions. (Need update packaging script)

Azure CLI extensions:

Add a NOTICE file in each extension folder.

The NOTICE file only need contain the additional open source components besides those from Azure CLI.

Add the NOTICE file to extension distribution. (Need update packaging script)

Legal


Fix the clippy error of use of deprecated method

Which issue does this PR close?

Closes #.
Rationale for this change

Currently the CI failed (https://github.com/apache/arrow-datafusion/actions/runs/7688676073/job/20950251248?pr=9031) because:
error: use of deprecated method `indexmap::IndexSet::<T, S>::remove`: `remove` disrupts the set order -- use `swap_remove` or `shift_remove` for explicit behavior.
   --> datafusion/physical-expr/src/equivalence/properties.rs:733:32
    |
733 |                 search_indices.remove(idx);
    |                                ^^^^^^
    |
    = note: `-D deprecated` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(deprecated)]`

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

cc @alamb

Thanks @mustafasrepo


Methods wrapped in @lru_cache show type errors

Environment data

Language Server version: v2021.11.2
OS and version: CentOS 7
Python version (& distribution if applicable, e.g. Anaconda): 3.7.4

Expected behaviour
Methods without or with optional arguments wrapped in a @functools.lru_cache decorator should not show type errors when calling them through an instance of the object.
Actual behaviour
Since one of the last updates, Pylance reports "Argument missing for parameter "self"" even when running in basic type checking mode.

See the example code in the Code Snippet section below
Logs

Pylance trace output

[Info  - 9:27:34 AM] Pylance language server 2021.11.2 (pyright b27108d5) starting
[Info  - 9:27:34 AM] Server root directory: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist
[Info  - 9:27:34 AM] No configuration file found.
[Info  - 9:27:34 AM] No pyproject.toml file found.
[Info  - 9:27:34 AM] Setting pythonPath for service "demo": "/tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/bin/python3"
[Warn  - 9:27:34 AM] stubPath /home/jonase/demo/typings is not a valid directory.
[Info  - 9:27:34 AM] Assuming Python version 3.7
[Info  - 9:27:34 AM] Assuming Python platform Linux
Search paths for /home/jonase/demo
  /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib
  /home/jonase/demo
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/site-packages
  /home/jonase/demo/typings
  /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stubs/...
  /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/bundled/stubs
  /tools/cpkg/site-specific/xdr/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/site-packages
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/site-packages
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/lib-dynload
  /home/jonase/.local/lib/python3.7/site-packages
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Info  - 9:27:35 AM] Searching for source files
[Info  - 9:27:35 AM] Found 1 source file
[Info  - 9:27:35 AM] Background analysis(1) root directory: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist
[Info  - 9:27:35 AM] Background analysis(1) started
Background analysis message: setConfigOptions
Background analysis message: setImportResolver
Background analysis message: ensurePartialStubPackages
Background analysis message: setTrackedFiles
Background analysis message: markAllFilesDirty
Background analysis message: setFileOpened
[FG] parsing: /home/jonase/demo/lru-cache-self-missing.py (27ms)
[FG] parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi [fs read 3ms] (89ms)
[FG] binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi (50ms)
[FG] binding: /home/jonase/demo/lru-cache-self-missing.py (0ms)
Background analysis message: analyze
[BG(1)] analyzing: /home/jonase/demo/lru-cache-self-missing.py ...
[BG(1)]   parsing: /home/jonase/demo/lru-cache-self-missing.py (29ms)
[BG(1)]   parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi [fs read 3ms] (99ms)
[BG(1)]   binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi (40ms)
[BG(1)]   binding: /home/jonase/demo/lru-cache-self-missing.py (1ms)
[BG(1)]   checking: /home/jonase/demo/lru-cache-self-missing.py ...
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing.pyi [fs read 2ms] (29ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing.pyi (18ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/_typeshed/__init__.pyi [fs read 1ms] (13ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/_typeshed/__init__.pyi (1ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing_extensions.pyi [fs read 1ms] (3ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing_extensions.pyi (1ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/abc.pyi [fs read 1ms] (3ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/abc.pyi (1ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/functools.pyi [fs read 2ms] (6ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/functools.pyi (2ms)
[BG(1)]   checking: /home/jonase/demo/lru-cache-self-missing.py (123ms)
[BG(1)] analyzing: /home/jonase/demo/lru-cache-self-missing.py (295ms)
Background analysis message: resumeAnalysis[Info  - 9:27:34 AM] Pylance language server 2021.11.2 (pyright b27108d5) starting
[Info  - 9:27:34 AM] Server root directory: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist
[Info  - 9:27:34 AM] No configuration file found.
[Info  - 9:27:34 AM] No pyproject.toml file found.
[Info  - 9:27:34 AM] Setting pythonPath for service "demo": "/tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/bin/python3"
[Warn  - 9:27:34 AM] stubPath /home/jonase/demo/typings is not a valid directory.
[Info  - 9:27:34 AM] Assuming Python version 3.7
[Info  - 9:27:34 AM] Assuming Python platform Linux
Search paths for /home/jonase/demo
  /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib
  /home/jonase/demo
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/site-packages
  /home/jonase/demo/typings
  /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stubs/...
  /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/bundled/stubs
  /tools/cpkg/site-specific/xdr/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/site-packages
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/site-packages
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7
  /tools/cpkg/.packages/x86_64/RHEL7.2/python/3.7.4/lib/python3.7/lib-dynload
  /home/jonase/.local/lib/python3.7/site-packages
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Warn  - 9:27:35 AM] Exception received when installing file system watcher: TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
[Info  - 9:27:35 AM] Searching for source files
[Info  - 9:27:35 AM] Found 1 source file
[Info  - 9:27:35 AM] Background analysis(1) root directory: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist
[Info  - 9:27:35 AM] Background analysis(1) started
Background analysis message: setConfigOptions
Background analysis message: setImportResolver
Background analysis message: ensurePartialStubPackages
Background analysis message: setTrackedFiles
Background analysis message: markAllFilesDirty
Background analysis message: setFileOpened
[FG] parsing: /home/jonase/demo/lru-cache-self-missing.py (27ms)
[FG] parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi [fs read 3ms] (89ms)
[FG] binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi (50ms)
[FG] binding: /home/jonase/demo/lru-cache-self-missing.py (0ms)
Background analysis message: analyze
[BG(1)] analyzing: /home/jonase/demo/lru-cache-self-missing.py ...
[BG(1)]   parsing: /home/jonase/demo/lru-cache-self-missing.py (29ms)
[BG(1)]   parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi [fs read 3ms] (99ms)
[BG(1)]   binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/builtins.pyi (40ms)
[BG(1)]   binding: /home/jonase/demo/lru-cache-self-missing.py (1ms)
[BG(1)]   checking: /home/jonase/demo/lru-cache-self-missing.py ...
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing.pyi [fs read 2ms] (29ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing.pyi (18ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/_typeshed/__init__.pyi [fs read 1ms] (13ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/_typeshed/__init__.pyi (1ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing_extensions.pyi [fs read 1ms] (3ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/typing_extensions.pyi (1ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/abc.pyi [fs read 1ms] (3ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/abc.pyi (1ms)
[BG(1)]     parsing: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/functools.pyi [fs read 2ms] (6ms)
[BG(1)]     binding: /home/jonase/.vscode-server/extensions/ms-python.vscode-pylance-2021.11.2/dist/typeshed-fallback/stdlib/functools.pyi (2ms)
[BG(1)]   checking: /home/jonase/demo/lru-cache-self-missing.py (123ms)
[BG(1)] analyzing: /home/jonase/demo/lru-cache-self-missing.py (295ms)
Background analysis message: resumeAnalysis

Code Snippet / Additional information
The following code should not show type errors when running with basic type check:
import functools

class Config:
    @functools.lru_cache(maxsize=None)
    def foo(self):
        return "foo"

if __name__ == "__main__":
    Config().foo()

This is due to a recent change to the typeshed stub file for functools. It looks like the typeshed maintainers may revert the change. See https://github.com/python/typeshed/issues/6347 for additional details.

The change that caused this regression has been reverted in typeshed, and I've incorporated the fix. So this problem should be addressed in the next release of pylance.

This issue has been fixed in version 2021.12.0, which we've just released. You can find the changelog here:  CHANGELOG.md


Storage listener only listens to the same plugin storage changes.

I'm trying to listen for sensor incident values stored in the toolbox, and the storage listener doesn't respond to other plugins storage events, but it reacts for my plugin storage event.
This used to work, not sure exactly when it stopped working, didn't work with 0.7.3

I can confirm that the external plugin (like Chatbot) is no longer see the storage events triggered by another external plugin (like KSP plugin). Maybe there was some change in the security so that a plugin should not see the data of other plugin?

I'm using  Declaration.doNotShareData

You can use the sample plugin developed by @luongnv89
You could test running two instances (The package name needs to be changed to make it possible).
In the second one only activate the plugin part.

The plugin in Luong's app doesn't receive anything because he's using the default visibility red. If you set it to white the storage event does show up. There was a bug that only enforced the visibility rules on oldNode which I just fixed.

Side fix published under 0.7.6.
@tschai-yim: The above information is not correct. All events should be visible to non-sharing plugins regardless of the visibility. Only sharing plugins (and replication) should be constrained. Writes may be restricted due to ownership.
We probably need to correct this newly introduced logic again.

Forget it.... I just discovered that the issue runs deeper... But at least we can unit-test and reproduce it now. Publishing a fix most likely tomorrow.

The issue should be fixed now and we'll release a patch for you to test soon. Note that Luong's connector package registers plugins as Declaration.doShareData and the nodes are created with Visibility.red so you still won't see any storage events from the chatbot example.

It is nowhere stated explicitely how sharing declaration applies to visibility. Some parts are covered in the replication part but this is only a fraction. I created a new issue #24 to make sure that documentation on this is done.

Is this issue solved or do you still experience troubles with the most recent release?

Hi, after some careful test, I think the problem is still persist. @BananaEgg please make some more tests to confirm.
I have tested with geiger_localstorage: 0.6.49 and geiger_api: 0.7.8. An external plugin still cannot see the storage event of another external plugin. Even though I have set the visibility of whole tree to be 'white'.

Just tested and it works!
Thank you all!


Need to add crossref to WCMP2 KPIs

See global-services.adoc line 203, section Global Discovery Catalogue
* quality assessment (key performance indicators TODO CROSSREF - WCMP2 KPIs)
Not sure what the target of this reference is ... @tomkralidis ?

@6a6d74 @tomkralidis
@efucile, @hhaddouch, and I talked about this section and we recommend that it be included in a future revision of the Guide. The KPIs for WCMP2 are fairly developed, but the integration of them into the WIS2 Guide has not occurred yet.

Let's schedule inclusion of these KPIs into the Guide for the next release after INFCOM3 ... @golfvert - what do you think?
I note that the KPIs are also referenced in the Information Management section ...
Note: Further information on the Key Performance indicators can be found on the WMO Community Website at https://community.wmo.int/activity-areas/wis/wis-metadata-kpis
... here the reference is to the WMO Community Website (also referenced on line part3/information-management.adoc line 165 re. the "newsletter"). Is this reference correct now? Should we delete it?
@amilan17 - if we're not going to include them now, please can you

[ ] remove the TODO CROSSREF - part2/global-services.adoc line 203
[ ] create a new issue reminding us to add the WCMP2 KPIs into a later version of the Guide
[ ] update part3/information-management.adoc line 159

OK for me. We can start having a list for the 1st fast track change toward the end of 2024.

FYI, KPIs are also referenced on line 181 in global services.adoc. But I don't think it needs to be changed.

A Global Discovery Catalogue will periodically assess discovery metadata provided by NCs and DCPCs against a set of key performance indicators (KPIs) in support of continuous improvement. Suggestions for improvement will be reported to the Global Monitor against the centre identifier associated with the discovery metadata record.

issue #123


Combined multiple problem in Scheduling

Hi, I went through many examples of the scheduling problem, but it seems my problem combines many complicated things, and so hard for the newbie like me to do it. If anyone can help or give some suggestion to do it, I'm very appreciated.
I have the following problem:
The main goal is scheduling workers to do the tasks in one week. (Monday -> Friday, 6AM to 6PM per day)

There is a list of tasks and workers.
Workers need to assigned to do the tasks. Each task has a deadline date to do, a duration (unit time to be done)

Each worker has there owned blocking time (to do a meeting for example) in a week, and their blocking time needs to be scheduled an exact date in the week. (It's possible to fix this to start in 6AM before to do another task.). Each blocking time also a duration (unit time to be done).

Each worker has their own skills. Each task required skill for a worker to done the task.

each task has own location. There is a matrix of traveling time between the tasks:
like
A | B
A 0 | 2
B 2 | 0
(A,B is the task)
(Each number is unit of time)

Constraint:

Tasks and Blocking time not overlap.
Each task only assigned to 1 worker.
Task's required skill == worker skills.

Objective:
Minimize traveling time of workers.
The way I modeling is:

Create a list of NewIntervalVar of worker's blocking_time.
Create a list of NewOptionalIntervalVar of tasks. (Since tasks can happen or not).
Add Nonoverlap of [NewIntervalVar_blockingtime, NewOptionalIntervalVar_tasks].

My problem is:

I don't know how to link between the weekday ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] within the tasks and blocking_times. (Mean which task assigned to which weekday).
How to add constraint like if the tasks assigned to Monday (for example), if assigned one more task has a long duration, so the worker to need work until 7PM, So this task need shift to Tuesday.
How to compute the objective (traveling time) to minimize.

Feel free to comment or modify my model since I'm not sure it corrects. Thanks very much.
My example code:
all_tasks = []
for block in data['blocked_times']:
    start_blocking = model.NewIntVar(0, horizon, 'start_block_%s_%s' % (block['worker_id'], block['blocked_id']))
    end_blocking = model.NewIntVar(0, horizon, 'end_block_%s_%s' % (block['worker_id'], block['blocked_id']))
    duration = block['activity_duration']
    interval_blocking = model.NewIntervalVar(start_blocking, duration, end_blocking, 'interval_block_%s_%s' % (block['worker_id'], block['blocked_id']))
    all_tasks.append(interval_blocking)

for task in data['tasks']:
    start_task = model.NewIntVar(0, horizon, 'start_task_%s' % (task['task_id']))
    end_task = model.NewIntVar(0, horizon, 'end_task_%s' % (task['task_id']))
    duration = block['activity_duration']
    presence_task = model.NewBoolVar('presence_%s' % task['task_id'])
    interval_task = model.NewOptionalIntervalVar(
        start_task, duration, end_task, presence_task, 'interval_task_%s' % task['task_id']
    )
    all_tasks.append(interval_task)

model.AddNoOverlap(all_tasks)

You need to map hours to integer values.
there are 168 hours in a week.
So for one week, the horizon is 168.
To force one task to be done on Monday, restrict the end date to be before
24 (assuming Monday is the first day of the week).
For the transit, look at example
https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *mar. 7 mai 2019 à 06:44
*À : *google/or-tools
*Cc : *Subscribed
Hi, I went through many examples of the scheduling problem, but it seems my

problem combines many complicated things, and so hard for the newbie like
me to do it. If anyone can help or give some instruction to do it, I'm very
appreciated.
I have the following problem:
The main goal is scheduling workers to do the tasks in one week. (Monday
-> Friday, 6AM to 6PM per day)

There is a list of tasks and workers.
Workers need to assigned to do the tasks. Each task has a deadline
date to do, a duration (unit time to be done)
2.
Each worker has there owned blocking time (to do a meeting for
example) in a week, and their blocking time needs to be scheduled an exact
date in the week. (It's possible to fix this to start in 6AM before to do
another task.). Each blocking time also a duration (unit time to be done).
3.
Each worker has their own skills. Each task required skill for a
worker to done the task.
4.
each task has own location. There is a matrix of traveling time
between the tasks:
like
A | B
A 0 | 2
B 2 | 0
(A,B is the task)
(Each number is unit of time)
Constraint:

Tasks and Blocking time not overlap.
Each task only assigned to 1 worker.
Task's required skill == worker skills.

Objective:
Minize traveling time of workers.
The way I modeling is:

Create a list of NewIntervalVar of worker's blocking_time.
Create a list of NewOptionalIntervalVar of tasks. (Since tasks can
happen or not).
Add Nonoverlap of [NewIntervalVar_blockingtime,
NewOptionalIntervalVar_tasks].

My problem is:

I don't know how to link between the weekday ["Monday", "Tuesday",
"Wednesday", "Thursday", "Friday"] within the tasks and blocking_times.
(Mean which task assigned to which weekday).
How to add constraint like if the tasks assigned to Monday (for
example), if assigned one more task has a long duration, so the worker to
need work until 7PM, So this task need shift to Tuesday.
How to compute the objective (traveling time) to minize.

Feel free to comment or modify my model since I'm not sure it corrects.
Thanks very much.
My example code:
all_tasks = []for block in data['blocked_times']:
start_blocking = model.NewIntVar(0, horizon, 'start_block_%s_%s' % (block['worker_id'], block['blocked_id']))
end_blocking = model.NewIntVar(0, horizon, 'end_block_%s_%s' % (block['worker_id'], block['blocked_id']))
duration = block['activity_duration']
interval_blocking = model.NewIntervalVar(start_blocking, duration, end_blocking, 'interval_block_%s_%s' % (block['worker_id'], block['blocked_id']))
all_tasks.append(interval_blocking)
for task in data['tasks']:
start_task = model.NewIntVar(0, horizon, 'start_task_%s' % (task['task_id']))
end_task = model.NewIntVar(0, horizon, 'end_task_%s' % (task['task_id']))
duration = block['activity_duration']
presence_task = model.NewBoolVar('presence_%s' % task['task_id'])
interval_task = model.NewOptionalIntervalVar(
start_task, duration, end_task, presence_task, 'interval_task_%s' % task['task_id']
)
all_tasks.append(interval_task)
model.AddNoOverlap(all_tasks)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252, or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3L7YSPAWPYI3K2Q2ZTPUECMLANCNFSM4HLFJYLQ
.

Hi @lperron , thanks for your reply. I'm can model work for the basic case now.
I'm stuck at constraint how to for 1 task is executed by only one worker.
Since the list of tasks is represented by the list of OptionalIntervalVar, with literal BoolVar controlled it.
I don't know how to use BoolVar to model this constraint.

sum(boolvars) == 1 ?
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *lun. 13 mai 2019 à 09:25
*À : *google/or-tools
*Cc : *Laurent Perron, Mention
Hi @lperron https://github.com/lperron , thanks for your reply. I'm can

model work for the basic case now.
I'm stuck at constraint how to for 1 task is executed by only one worker.
Since the list of tasks is represented by the list of OptionalIntervalVar,
with literal BoolVar controlled it.
I don't know how to use BoolVar to model this constraint.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252#issuecomment-491706370,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3NI2UQZAEXXW3NGGNLPVEJW7ANCNFSM4HLFJYLQ
.

Thanks @lperron , I use same methods but the wrong way. It's ok now.
For the transit, at this line:
https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py#L104
I'm wondering how to identify the distance between two jobs. For example in jobshop_ft06_distance_sat, https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py#L34
How j2 - j1 can identify as distance?
How can I get input my custom data?
Is there any way to access the metadata of the job which defined before? Like j1.name? (From name I can extract the ID and mapping to my custom data)

Because in this toy problem, distance(j1, j2) == abs(j2 - j1).
Please replace with any custom distance.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *lun. 13 mai 2019 à 11:07
*À : *google/or-tools
*Cc : *Laurent Perron, Mention
Thanks @lperron https://github.com/lperron , I use same methods but the

wrong way. It's ok now.
For the transit, at this line:
https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py#L104
I'm wondering how to identify the distance between two jobs. For example
in jobshop_ft06_distance_sat,
https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py#L34
How j2 - j1 can identify as distance?
How can I get input my custom data?
Is there any way to access the metadata of the job which defined before?
Like j1.name? (From name I can extract the ID and mapping to my custom
data)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252#issuecomment-491740771,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3OHPE62FUPGHT4S653PVEVWVANCNFSM4HLFJYLQ
.

About metadata, I use the named tuples for that.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *Laurent Perron<EMAIL_ADDRESS>*Date : *lun. 13 mai 2019 à 11:53
*À : *google/or-tools
*Cc : *google/or-tools, Mention
Because in this toy problem, distance(j1, j2) == abs(j2 - j1).

Please replace with any custom distance.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68
53 00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *lun. 13 mai 2019 à 11:07
*À : *google/or-tools
*Cc : *Laurent Perron, Mention
Thanks @lperron https://github.com/lperron , I use same methods but the

wrong way. It's ok now.
For the transit, at this line:
https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py#L104
I'm wondering how to identify the distance between two jobs. For example
in jobshop_ft06_distance_sat,
https://github.com/google/or-tools/blob/master/examples/python/jobshop_ft06_distance_sat.py#L34
How j2 - j1 can identify as distance?
How can I get input my custom data?
Is there any way to access the metadata of the job which defined before?
Like j1.name? (From name I can extract the ID and mapping to my custom
data)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252#issuecomment-491740771,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3OHPE62FUPGHT4S653PVEVWVANCNFSM4HLFJYLQ
.

Thanks for your help @lperron . I able to make transit work.
just a little extend about the transit,
The jobshop distance example works for the transit between tasks, but how about transit between from the beginning to the task location?
From start of the day, there is a distance moving from the worker's home to the task's location = X
So for example, the task start of interval var is 24 (beginning of Tuesday), I would like to add moving time, so the start will be: start = start + X.

Same thing, you have one boolean from the dummy node to each task.
You can add a enforced linear equation using this boolean.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *lun. 13 mai 2019 à 15:42
*À : *google/or-tools
*Cc : *Laurent Perron, Mention
Thanks for your help @lperron https://github.com/lperron . I able to make

transit work.
just a little extend about the transit,
The jobshop distance example works for the transit between tasks, but how
about transit between from the beginning to the task location?
From start of the day, there is a distance moving from the worker's home
to the task's location = X
So for example, the task start of interval var is 24 (beginning of
Tuesday), I would like to add moving time, so the start will be: start =
start + X.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252?email_source=notifications&email_token=ACUPL3PGJP6MY4RNVSSQSC3PVFV47A5CNFSM4HLFJYL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVILBXA#issuecomment-491827420,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3MF7VX3DJ5VRJAVQQLPVFV47ANCNFSM4HLFJYLQ
.

Thanks a lot! @lperron
I'm struggling the next constraint.
For example, If the task starts at 23 (Monday)  and duration = 3.
so the end will be 26, it's mean span to Tuesday.
How I can model to prevent it, moving this task to another timeslot if it spans to the next day?

Thanks a lot! @lperron
I'm struggling with next constraint.
For example, If the task starts at 47 (Tuesday) and has a duration = 3.
This task will end at 50, it's mean span to Wednesday.
How can I prevent this, moving this task to another time slot if the task span from today to the nextday?

You need to restrict the start time to only valid values. For this, use a
special domain for the start var.
Please note that the API to use this has changed with or-tools 7.1.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *mar. 14 mai 2019 à 05:36
*À : *google/or-tools
*Cc : *Laurent Perron, Mention
Thanks a lot! @lperron https://github.com/lperron

I'm struggling with next constraint.
For example, If the task starts at 47 (Tuesday) and has a duration = 3.
This task will end at 50, it's mean span to Wednesday.
How can I prevent this, moving this task to another time slot if the task
span from today to the nextday?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252?email_source=notifications&email_token=ACUPL3OVHPSEBLMZAQNDJKDPVIXUXA5CNFSM4HLFJYL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVKFMFY#issuecomment-492066327,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3KQI23CFDWQXK7JIHTPVIXUXANCNFSM4HLFJYLQ
.

Hi @lperron , I've back from sick, thanks for your help.
After experienced a few days, I found my model not correct for this problem.

just a little extend about the transit,
The jobshop distance example works for the transit between tasks, but how about transit between from the beginning to the task location?
From start of the day, there is a distance moving from the worker's home to the task's location = X
So for example, the task start of interval var is 24 (beginning of Tuesday), I would like to add moving time, so the start will be: start = start + X.

Same thing, you have one boolean from the dummy node to each task. You can add a enforced linear equation using this boolean. Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53 00
…

As I understand, For example, we have 2 workers and 3 tasks.
That's mean for each worker, we create 3 start_literal for 3 tasks, and only one start_literal=True.
In my problem, for each Monday, Tuesday ... til Friday, look like each day need 1 start_literal=True (5 start_literal = True for the whole week),
because each day, the worker will move from home to the task's location. Is there any way or example to model this?
Here is my code
arcs = []
    for idx_i in range(len(task_intervals)):
        # dummy node
        start_literal = model.NewBoolVar('%i_first_job' % idx_i)
        end_literal = model.NewBoolVar('%i_last_job' % idx_i)
        arcs.append([0, idx_i + 1, start_literal])
        arcs.append([idx_i + 1, 0, end_literal])
        i_point = idx_i
        for idx_j in range(len(task_intervals)):
            if idx_i == idx_j:
                continue

            literal = model.NewBoolVar('%i_follows_%i' % (idx_j, idx_i))
            arcs.append([idx_i + 1, idx_j + 1, literal])

            j_point = idx_j
            model.Add(starts_tasks[idx_j] >= ends_tasks[idx_i] + toy_distance).OnlyEnforceIf(literal)

    model.AddCircuit(arcs)

I would imagine creating a dummy node and each night break, and adding it
in the circuit.
I think you need 1 circuit per person.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
*De : *☂ Giang Strider ☂<EMAIL_ADDRESS>*Date : *sam. 18 mai 2019 à 17:20
*À : *google/or-tools
*Cc : *Laurent Perron, Mention
Hi @lperron https://github.com/lperron , I've back from sick, thanks for

your help.
After experienced a few days, I found my model not correct for this
problem.
just a little extend about the transit,
The jobshop distance example works for the transit between tasks, but how
about transit between from the beginning to the task location?
From start of the day, there is a distance moving from the worker's home
to the task's location = X
So for example, the task start of interval var is 24 (beginning of
Tuesday), I would like to add moving time, so the start will be: start =
start + X.
Same thing, you have one boolean from the dummy node to each task. You can
add a enforced linear equation using this boolean. Laurent Perron |
Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53 00
… <#m_7971818429051772032_>
As I understand, For example, we have 2 workers and 3 tasks.
That's mean for each worker, we create 3 start_literal for 3 tasks, and
only one start_literal=True.
In my problem, for each Monday, Tuesday ... til Friday, look like each day
need 1 start_literal=True (5 start_literal = True for the whole week),
because each day, the worker will move from home to the task's location.
Is there any way or example to model this?
Here is my code
arcs = []
for idx_i in range(len(task_intervals)):

    # dummy node

    start_literal = model.NewBoolVar('%i_first_job' % idx_i)

    end_literal = model.NewBoolVar('%i_last_job' % idx_i)

    arcs.append([0, idx_i + 1, start_literal])

    arcs.append([idx_i + 1, 0, end_literal])

    i_point = idx_i

    for idx_j in range(len(task_intervals)):

        if idx_i == idx_j:

            continue

        literal = model.NewBoolVar('%i_follows_%i' % (idx_j, idx_i))

        arcs.append([idx_i + 1, idx_j + 1, literal])

        j_point = idx_j

        model.Add(starts_tasks[idx_j] >= ends_tasks[idx_i] + toy_distance).OnlyEnforceIf(literal)

model.AddCircuit(arcs)

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252?email_source=notifications&email_token=ACUPL3OZJ2WMRY5T73POE2DPWANEHA5CNFSM4HLFJYL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVWQQUQ#issuecomment-493684818,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3JHMUW6WN4V7IQATGDPWANEHANCNFSM4HLFJYLQ
.

Hi @lperron , can you more clarify, how I can define a night break.
And with N workers, it's mean creating N * 5 (Monday..Friday) dummy node per worker, and add it in the circuit? (So N times add to the circuit?)
Am I right?

You will need 1 circuit per worker. 5 extra night nodes per circuit.
Then 1 constraint per day shift that says 1 shift is done by exactly 1
worker.
Le lun. 20 mai 2019 à 11:30, ☂ Giang Strider ☂<EMAIL_ADDRESS>a
écrit :

Hi @lperron https://github.com/lperron , can you more clarify, how I
can define a night break.
And with N workers, it's mean creating N * 5 (Monday..Friday) dummy node
per worker, and add it in the circuit? (So N times add to the circuit?)
Am I right?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1252?email_source=notifications&email_token=ACUPL3JQDIXF4IZIHNMGCYDPWJVR5A5CNFSM4HLFJYL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVYHM3Y#issuecomment-493909615,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUPL3NP7GEOKZCQDK7QAN3PWJVR5ANCNFSM4HLFJYLQ
.

Sorry @lperron , I still stuck with this.
Here is sample code I model follow my understanding, can you take a look?
For each worker,
for each task, I added 5 night_break_node, but not sure the source node and destination of this night break node will be?
weekdays = range(0,5)
workers = range(0,3)
tasks_starts = [1_start, ..., 5_start]
tasks_intervals = [1_interval, ..., 5_interval]
tasks_ends = [1_end, ..., 5_end]

for w in workers:
    arcs = []

    for t1 in range(len(tasks_intervals)):
        start_lit = model.NewBoolVar('%i_start_node' % (t1))
        arcs.append([0, t1 + 1, start_lit])

        w_to_t1_distance = toy_distance(w, t1)

        # 5 extra night nodes
        for w in weekdays:
            night_break_node_literal = model.NewBoolVar('%i_night_break_%i' % (w, t1))
            # Add night break node
            arcs.append([t1 + 1, 0, night_break_node_literal])

            task_start_bound, task_end_bound = toy_bound(w) # (12,24) is bound limit of w=1(Tuesday) for example
            model.Add(tasks_starts[t1] >= task_start_bound + inspector_to_i_distance).OnlyEnforceIf(start_lit)
            model.Add(tasks_ends[t1] <= task_end_bound)

        for t2 in range(len(tasks_intervals)):
            if t1 == t2:
                continue

            lit = model.NewBoolVar('%i_follows_%i' % (t1, t2))
            arcs.append([t1 + 1, t2 + 1, lit])

            t1_to_t2_distance = toy_distance(t1, t2)
            model.Add(tasks_starts[t2] >= tasks_ends[t1] + t1_to_t2_distance).OnlyEnforceIf(lit)

    model.AddCircuit(arcs)


oadp-1.2: Correct operator name in bundle to oadp-operator.v1.2.2

/ok-to-test

/lgtm

/hold

Thanks, @kaovilai!

@dmrost , thank you for catching the discrepancy & submitting PR to address it!  :sunglasses: :+1:

  Build failed/error: todolist-1
  status: {Failed false PullBuilderImageFailed Failed pulling builder image. 2023-09-28 20:42:49 +0000 UTC 2023-09-28 20:44:35 +0000 UTC 1m46s image-registry.openshift-image-registry.svc:5000/mongo-persistent/todolist-mongo-go:latest &ObjectReference{Kind:BuildConfig,Namespace:mongo-persistent,Name:todolist,UID:,APIVersion:,ResourceVersion:,FieldPath:,} {nil} [{FetchInputs 2023-09-28 20:42:50 +0000 UTC 1377 [{FetchGitSource 2023-09-28 20:42:50 +0000 UTC 1377}]} {PullImages 2023-09-28 20:42:55 +0000 UTC 100034 [{PullBaseImage 2023-09-28 20:42:55 +0000 UTC 100034}]}]  * initializing source docker://registry.access.redhat.com...stry.access.redhat.com/golang: name unknown: Repo not found
   * initializing source docker://quay.io/golang:1.17.8-alpi...-alpine in quay.io/golang: StatusCode: 404, <!doctype html>

/retest

/retest


Unable to find a JDBC driver corresponding to the database kind 'postgresql'

Hi there,
I am trying to achieve something similar to what you did here. I build my own little example but then run into an error. After searching a bit more I stumbled across this repo. But when I am trying to get it running I get the same error as when I am trying to run my example.
ERROR: Unable to find a JDBC driver corresponding to the database kind 'postgresql' for the datasource 'user-store' (available: 'h2'). Check if it's a typo, otherwise provide a suitable JDBC driver extension, define the driver manually, or disable the JDBC datasource by adding 'quarkus.datasource."user-store".jdbc=false' to your configuration if you don't need it. For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.
Steps to reproduce:

download keycloak (https://www.keycloak.org/getting-started/getting-started-zip) and clone repo
build the User Storage Provider with mvn -Dkeycloak.version=24.0.1 package and copy it into the providers folder
create quarks.properties in the keycloak conf folder
run keycloak with ./bin/kc.sh build or ./bin/kc.sh start-dev

Clearly I am doing sth. wrong here, but I don't see what. It would be nice if anyone can help me.
Thx in advance :)

Okay, I just tried everything with keycloak version 23.0.5 and it works.
Why does it not work with the currently newest version?
Closing this Issue, because I think this has nothing to do with this repo. Even tho an answer would be nice.
And btw, thanks for sharing this repo :)


Error APPX3217

A fresh clone from GitHub and it gives me an error when I try to build the solution:
Severity	Code	Description	Project	File	Line	Suppression State Error	APPX3217	SDK folder containing 'UAP.props' for 'UAP 10.0.17763.0' cannot be located. See http://go.microsoft.com/fwlink/?LinkID=798187 for more information.	NAudio.Wasapi	C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VisualStudio\v17.0\AppxPackage\Microsoft.AppXPackage.Targets	1097

I have same issue. I installed latest version of SDK 10.0.22000.0, but did not try to install the exact required version 10.0.7763.0.

Unfortunately you have to have the exact SDK installed to build.


Plan to migrate IRouter based implementations onto Endpoint Routing

Summary
I'm developing a plan to make it possible for folks implementing IRouter based functionality to migrate endpoint routing. This is our future direction for MVC and the stack in general, and we don't want to leave users/frameworks behind.
I'm also lumping in this category custom IActionSelector implementations. IActionSelector is not used in endpoint routing so it's just as relevant/obsolete for new apps.
Over time we're going to evolve in the direction of endpoint routing being the primary experience for the whole stack. I don't expect that we'd ever be able to delete IRouter or remove IRouter support from MVC. We can offer users more options to migrate and try to make it as enticing as possible, but some portion will be left behind; either by our choice not to add a feature they want, or their choice not to adopt new features and concepts.
Analysis
Based on analysis, I've found 3 major types of usages:

I want to rewrite the route values (usually localization) - example
My route values are in a database (usually a CMS, SimpleCommerce) - example
I am implementing a framework (OData) - example

Note that these are roughly in ascending order of 'off-road-ness' - reusing less of our implementation gradually.  Most genuine challenges in framework design related to application authors writing extensibility that uses and is used by the framework.
Let's go case by case and look at these...
I want to rewrite the route values
Usually the case for this is that you want to have one set of actions that you 'multiply' (cross-product) across different localized strings that you want to appear in the URL. There's a major pivot here regarding whether you want to localize the 'route values' or just localize the URL template.
In general all of these things 'just work' with application model today. Some users choose to implement this with IRouter because they have done that in the past or it's what seems most obvious to them, but there's no real problem with using application model for this.
My route values in the database
Generally this kind of system works by defining a slug route in the route table that matches all URLs, and then looking up a set of route values in a database using the URL path or part of it as a key.
Example:
var urlSlug = ... do database query...;
RouteData.Values["controller"] = urlSlug.EntityType.RoutingController;
RouteData.Values["action"] = urlSlug.EntityType.RoutingAction;
RouteData.Values["id"] = urlSlug.EntityId;

This requires a slightly more involved solution, because the route templates can't be defined statically, and because we don't provide a simple way to 'run code' to select an MVC action. My assumption here is that this user doesn't want to access the DB once on startup to create the route table, they want to make configuration changes while the app is running.
The key here is that this user is reusing MVC's action selector by rewriting the route values.

Here's a proposal:

Make it so that an IEndpointSelectorPolicy can be filter where it applies by candidate set. This is for isolation.
Register a single endpoint that with a metadata that identifies it as a 'slug' endpoint
Write an endpoint selector policy that selects the real/action/endpoint and returns it when it finds the 'slug' endpoint

This has a few drawbacks:

There is no path to support link generation, but I have yet to see an example of this pattern that includes link generation.
This does not allow you to reuse HTTP method filtering or other policies. The custom implementation is responsible for handling these concerns.

Another approach would be to rewrite the URL. That might be more straightforward.
I am implementing a framework
Upon further analysis, this case is very similar to the above. The framework registers a route that matches a 'slug', and has a custom implementation that produces an action.
This case has fewer drawbacks because they are not using MVC's action selection.
Next steps

Make it so that an IEndpointSelectorPolicy can be filter where it applies by candidate set. This is for isolation.

We need to do this. This is a nice perf enhancement to IEndpointSelectorPolicy and can unblock a framework like OData migrate. We need to do this in 2.2 so it's not a breaking change.
We should consider further whether URL rewriting is a better solution for most of these scenarios.
I think the timeframe for any other choices we'd consider is 3.0

Is it possible that Endpoint Routing be implemented as a IRouter itself?
I personally believe that the original IRouter approach is the only approach that covers all cases. Or at least, a linear-time search through a list of routers, where each router is a blackbox that rewrites or accepts a route, is inevitable.
The 'slug' route, or generally any URL-rewriting mechanism, apparently does not fit well with Endpoint Routing; Endpoint Routing is like a tree where you traverse from the root and find a leaf, but only one leaf. Even if a url rewriter makes itself an endpoint, it has to travel from the root again, where the endpoint is still on the tree.
Also when there are several URL-rewriting mechanisms in place, there must be an order. You don't want every router that rewrites the URL to restart the routing process from the beginning.

URL rewriting isn't routing though, why would use use routing to rewrite the URL? We have a URLRewrite middleware specifically for that purpose. You run that before routing makes the decision on what end point gets selected.

I mean the routers that want to supply route values and choose actions, and these may want to do link generation too

The contract of 'endpoint routing' in 3.0 is to produce an instance of IEndpointFeature and attach it to the http context. https://github.com/aspnet/HttpAbstractions/blob/master/src/Microsoft.AspNetCore.Http.Abstractions/Routing/IEndpointFeature.cs
There can be any number of middleware that participate in this cooperatively. There's no reason why you couldn't write an IRouter-based implementation (it's something I've considered). If there's enough demand for us to ship something like this, it's a possibility, but it won't be our default experience.

Link generation is a little more complicated because it's not cooperative - but basically you can choose to implement an 'address scheme' which describes how you find a set of endpoints to attempt to use for link generation.
If you're trying to extend the system, broadly, then maybe the right thing to do is create an 'address scheme' that matches your requirements and implement it.
If you're trying to extend an 'in the box' scheme (like MVC's link generation), the you'll have to replace it and provide an implementation that does what you want.
Generally the kinds of things that lead folks to implement IRouter involve running async code when a request comes in. That's a poor fit for link generation, and it's often ignored, maybe that's ok.

If you really do want to implement routing extensibility then the most reasonable path would be to provide us with all of the endpoints, and we will work it out. If this is something that's impossible for your scenarios, then I'd like to learn more.

My experience helping others understand how to implement routing from WebAPI2/MVC5 -> current is that generally extenders expect a purpose-built extensibility point to exist for what they are trying to do, and shy away from re implementing anything.
Generally in the routing arena it's going to be the case moving forward that you will need to write code if you want to reprogram routing. This is a philosophical pivot on our part to trade openness for performance and features. We think this is the right thing to do because routing is going to be part of just about every scenario.
If you feel like you're blocked, that's not great and we need to make it better.

Make it so that an IEndpointSelectorPolicy can be filter where it applies by candidate set. This is for isolation.

Done for 2.2


Spelling regression.

Previous PR:
https://github.com/myriadrf/LimeSuite/pull/99

Fixed: https://github.com/myriadrf/LimeSuite/commit/aba07bfa6d030e3b225a5fa1bee00decf18ce9b6