KAFKA-8345 (KIP-455): Controller and KafkaApi changes (part 3/4)

Will rebase with trunk once https://github.com/apache/kafka/pull/7120 is merged.
Excited to see a fully-green build! :)

A short summary:
We use the same ReassignPartitions event to handle both the ZK and API reassignment. I think this approach reuses more code and is more easily read when trying to understand the interactions between both
We use controller events to handle the API calls.
Colin's original draft implementation had a CallbackManager for managing callbacks from and into the controller.
I've decided to not implement it here because:
I don't completely understand how it would work - Colin's implementation didn't have it plugged in to anything yet
It would essentially make the controller multi-threaded if I understand it correctly. I'd like to reduce the complexity and scope of this PR.
I believe that we can delegate it to a separate PR/JIRA, that way we could also move other parts of the controller to leverage it (e.g the newly-added ElectLeaders API)

Hi @stanislavkozlovski. Thanks for working on this.  It looks like it needs a rebase on trunk.
In the Scala code, you made good use of groupBy and distinct... very nice.  I still forget about those sometimes.
I remember earlier we talked about having a separate thread to handle formatting the responses being sent back via KafkaApis.  I can see this patch leaves that out, in favor of just having the controller thread do that work.  I guess that is simpler.  We will need to think about how to handle timeouts, though.  It seems like if the controller thread is busy, we won't get around to sending back a response indicating a timeout.  So perhaps we will have to give up on idea of a request-specified timeout in AlterPartitionReassignmentsRequest for now, or add a background thread here.
Now that we have ControllerState#ListPartitionReassignment, does it make sense to rename ControllerState#PartitionReassignment to ControllerState#AlterPartitionReassignment for consistency's sake?

Thanks for the review. Good point that we currently completely ignore the timeout, I will think a bit more on this and get back to you

I had to rebase with master. It was a big rebase and I didn't have time to fully go over everything again, so there may be some leftover. It did compile and pass checkstyle locally though so I assume it's good

Note that I need to change the preferredReplicaImbalanceCount metric to report a preferred leader imbalance if and only if the preferred replica is in ISR. This would avoid reporting the metric at the very start of a rebalance where a new replica which isn't in ISR yet is the first preferred one.

I have removed the TimeoutMs fields from ListPartitionReassignmentsRequest and  AlterPartitionReassignmentsRequest. It's right that if the controller thread is busy, we won't get around to sending back a response. While this means that we don't really have a way to avoid having open sockets pile up if the controller thread hangs, we most likely have bigger problems if that thread hangs.
I renamed ControllerState#PartitionReassignment to ControllerState#AlterPartitionReassignment, thanks for catching that.
With regards to the version in the topics znode, we've decided to bump it to 2 but not have it depend on the inter.broker.protocol.
@cmccabe I also added a new change (commit 7417ec31ddcd008c7cd42280b4d55309d37b361f) where I changed the semantics of the PreferredReplicaImbalanceCount metric a bit. I changed it to not count partitions whose newly-added, still reassigning preferred replica is not the leader. I had discussed this a bit with @hachikuji offline

On ZkData.scala, on line 408, we should add an explanation of what ReassignPartitionsZNode is, and the fact that it was deprecated by KIP-455.
(The terrible github review UI doesn't let me leave a comment on this line, since you didn't change it)

KafkaZkClient: for the deprecated functions, please add a short explanation of why they're deprecated, and what the new API that should be used is.

I think let's keep timeoutMs in the message format for now.  We are going to implement a general way of doing timeouts for controller RPCs in the future as part of the KIP-500 work.  For now, let's just file a follow-on JIRA to implement this timeout.

I think I addressed most of the comments. I opened https://issues.apache.org/jira/browse/KAFKA-8873 for the timeout implementation and mentioned it in the KIP

I think this is ready for review again.
I double-check we bump and save the leader epoch in ZK before sending a LeaderAndIsr request
We discussed offline how altering ZK after memory is fair in certain cases - specifically in phase B and the cleanup phase, due to needing to make sure we at least send StopReplica to the retired replicas
I modified the code to send LeaderAndIsr only to the replicas present in the LAIR when possible. I am still a bit confused by the partition state machine code - but it may send the request to more replicas due to the fact that it reads the replica set from ZK to determine where to send a request. I don't really feel comfortable changing that code yet, so I'd rather have us send to more than necessary, like we always have, for now.

The two JDK 11/Scala 2.13 failures are unrelated:
org.apache.kafka.streams.KafkaStreamsTest.statefulTopologyShouldCreateStateDirectory
org.apache.kafka.streams.KafkaStreamsTest.inMemoryStatefulTopologyShouldNotCreateStateDirectory

@stanislavkozlovski: I think this is almost ready!
We should probably add logging for when a partition leader election fails and we retry.  This will let us know if we're in an infinite partition leader election retry loop (this is an existing logging gap...)
I'm curious whether the call to onPartitionReassignment in onBrokerStartup is still needed.
@viktorsomogyi : thanks for reviewing this.  We were hoping to get it in soon so we could start testing.  Having this in will also unblock the follow-on work like KIP-352.  I promised Stan I would get it in last week, but I ran out of time.
So I guess let's give it one or two days and then commit, if we don't find any blockers.  And we can continue to incrementally improve this in follow-on changes.

LGTM.  Thanks, @stanislavkozlovski


Possible regression in node.replace(X) when X is a huge string of markup ("error parsing fragment (1)")

Given Nokogiri::HTML document A (a large HTML document with many nested tags) and Nokogiri::HTML document B (which can be a simple document: ), when trying to replace a node in A with the string contents of B, this error is thrown:
RuntimeError: error parsing fragment (1)
from /home/foo/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/nokogiri-<IP_ADDRESS>/lib/nokogiri/xml/node.rb:404:in `in_context'

This occurs with Nokogiri gem version <IP_ADDRESS>.  It does not seem to occur with Nokogiri <IP_ADDRESS>.  I am on Mac OS X 10.11.3.  I think NG was built using the system libxml2 library: /usr/lib/libxml2.2.dylib.
I have attached a small script (nokogiri_large_doc_replace_test.zip) to reproduce the problem in version <IP_ADDRESS>.  The script will create the large document A with many nested elements until it reaches an arbitrary size, then create the document B and attempt to do documentB.replace(large_markup_inner_html_string_from_A) to see if the exception is thrown.
The arbitrary size threshold that throws an error on my system is noted in the constant at the beginning of the script:  SIZE_THRESHOLD = 16505.  If I set this to something low (say 10), I do not get the exception.
I am afraid I have not yet pinpointed the change or cause that results in this error in the newer version.  However, maybe these bits I have found while digging into it will help (and not misdirect!):

I see that now there is an option to disable the underlying hardcoded limit for large files (via: https://github.com/sparklemotion/nokogiri/issues/430).
When doing node.replace with a markup string argument, #coerce is called, which calls #fragment, which creates a new DocumentFragment.
DocumentFragment's initializer checks for a context (which exists when coming from node.fragment(string)), and then calls #parse on it.
The #parse method builds a new options object, with some defaults.  Alas, the huge option one may have set in the original document does not seem available here to be propagated to this object.  The subsequent in_context call fails, presumably because the underlying parser reaches the arbitrary limit and breaks. If I modify this options object and add the huge option, the fragment is created successfully.

I should emphasize that even though I found a semblance of cause  in step 4, I do not yet know what changed between <IP_ADDRESS> and <IP_ADDRESS>--maybe it was something else!
Update 1: I just realized that in the test script, line 46, I am doing a control experiment, where I read the large markup string into a new Nokogiri::HTML, and, in that call, I am not using the huge option, yet it still works.  So perhaps my usage of huge is masking an underlying problem.

Thanks for reporting this, I'll take a look and try to reproduce.

Can you please provide the output from nokogiri -v on your system?

More precisely: can you please provide nokogiri -v output from both of your Nokogiri installations.

I've reproduced this issue, seeing an error with <IP_ADDRESS> and not seeing an error with <IP_ADDRESS>.
Both versions of nokogiri were compiled against the vendored libxml2, and were running on Ruby 2.3.0.

OK, this behavior was introduced in commit 9eb540e which applied upstream libxml2 patches to the vendored libxml 2.9.2.

And notably this behavior is also present in nokogiri 1.6.8.rc3 which uses libxml 2.9.3. This indicates to me that this is entirely due to upstream behavior introduced in libxml2.

Right, OK, so if you rescue the exception and examine the document's errors, you'll see:
[#<Nokogiri::XML::SyntaxError: Excessive depth in document: 256 use XML_PARSE_HUGE option>]

which simply means that the depth is deeper than libxml2 allows.
Notably, you're not setting the HUGE config on the document -- Document#new doesn't accept a config block. Use Document#parse instead.
That said, the HUGE option doesn't seem to do anything; a doc with this option set or not set still raises this error at SIZE_THRESHOLD 7484.
In any case, if you feel strongly that this is a bug, I'd ask that you submit a bug report upstream to the libxml2 project.
Since there's nothing Nokogiri can do to change the behavior of libxml2, I'm going to close this issue. If you'd like to continue the conversation, I'm happy to keep talking, just respond here.
Sorry this isn't a more helpful response.

Please note I've create #1443 to investigate the possibility that we're not passing parse options into the fragment parser; this is related to my note above about the HUGE option having no apparent effect.

Hi @flavorjones : quick correction. I ran into this originally on my Mac laptop but then moved over to a Linux box to eventually come up with the script I originally attached.  Here's the info for both versions on the Linux box:
<IP_ADDRESS>
# Nokogiri (<IP_ADDRESS>)
    ---
    warnings: []
    nokogiri: <IP_ADDRESS>
    ruby:
      version: 2.1.2
      platform: x86_64-linux
      description: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
      engine: ruby
    libxml:
      binding: extension
      source: packaged
      libxml2_path: "/home/foo/.rbenv/versions/2.1.2-with-shared-libs/lib/ruby/gems/2.1.0/gems/nokogiri-<IP_ADDRESS>/ports/x86_64-unknown-linux-gnu/libxml2/2.9.2"
      libxslt_path: "/home/foo/.rbenv/versions/2.1.2-with-shared-libs/lib/ruby/gems/2.1.0/gems/nokogiri-<IP_ADDRESS>/ports/x86_64-unknown-linux-gnu/libxslt/1.1.28"
      libxml2_patches:
      - 0001-Revert-Missing-initialization-for-the-catalog-module.patch
      - 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch
      - 0003-Stop-parsing-on-entities-boundaries-errors.patch
      - 0004-Cleanup-conditional-section-error-handling.patch
      - 0005-CVE-2015-1819-Enforce-the-reader-to-run-in-constant-.patch
      - 0006-Another-variation-of-overflow-in-Conditional-section.patch
      - 0007-Fix-an-error-in-previous-Conditional-section-patch.patch
      - 0008-CVE-2015-8035-Fix-XZ-compression-support-loop.patch
      - 0009-Updated-config.guess.patch
      - 0010-Fix-parsering-short-unclosed-comment-uninitialized-access.patch
      - 0011-Avoid-extra-processing-of-MarkupDecl-when-EOF.patch
      - 0012-Avoid-processing-entities-after-encoding-conversion-.patch
      - 0013-CVE-2015-7497-Avoid-an-heap-buffer-overflow-in-xmlDi.patch
      - 0014-CVE-2015-5312-Another-entity-expansion-issue.patch
      - 0015-Add-xmlHaltParser-to-stop-the-parser.patch
      - 0016-Detect-incoherency-on-GROW.patch
      - 0017-CVE-2015-7500-Fix-memory-access-error-due-to-incorre.patch
      - 0018-CVE-2015-8242-Buffer-overead-with-HTML-parser-in-pus.patch
      - 0019-Do-not-print-error-context-when-there-is-none.patch
      - 0020-xmlStopParser-reset-errNo.patch
      - 0021-Reuse-xmlHaltParser-where-it-makes-sense.patch
      libxslt_patches:
      - 0001-Adding-doc-update-related-to-1.1.28.patch
      - 0002-Fix-a-couple-of-places-where-f-printf-parameters-wer.patch
      - 0003-Initialize-pseudo-random-number-generator-with-curre.patch
      - 0004-EXSLT-function-str-replace-is-broken-as-is.patch
      - 0006-Fix-str-padding-to-work-with-UTF-8-strings.patch
      - 0007-Separate-function-for-predicate-matching-in-patterns.patch
      - 0008-Fix-direct-pattern-matching.patch
      - 0009-Fix-certain-patterns-with-predicates.patch
      - 0010-Fix-handling-of-UTF-8-strings-in-EXSLT-crypto-module.patch
      - 0013-Memory-leak-in-xsltCompileIdKeyPattern-error-path.patch
      - 0014-Fix-for-bug-436589.patch
      - 0015-Fix-mkdir-for-mingw.patch
      - 0016-Fix-for-type-confusion-in-preprocessing-attributes.patch
      - 0017-Updated-config.guess.patch
      compiled: 2.9.2
      loaded: 2.9.2

<IP_ADDRESS>
# Nokogiri (<IP_ADDRESS>)
    ---
    warnings: []
    nokogiri: <IP_ADDRESS>
    ruby:
      version: 2.1.2
      platform: x86_64-linux
      description: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
      engine: ruby
    libxml:
      binding: extension
      source: packaged
      libxml2_path: "/home/foo/.rbenv/versions/2.1.2-with-shared-libs/lib/ruby/gems/2.1.0/gems/nokogiri-<IP_ADDRESS>/ports/x86_64-unknown-linux-gnu/libxml2/2.9.2"
      libxslt_path: "/home/foo/.rbenv/versions/2.1.2-with-shared-libs/lib/ruby/gems/2.1.0/gems/nokogiri-<IP_ADDRESS>/ports/x86_64-unknown-linux-gnu/libxslt/1.1.28"
      libxml2_patches:
      - 0001-Revert-Missing-initialization-for-the-catalog-module.patch
      - 0002-Fix-missing-entities-after-CVE-2014-3660-fix.patch
      - 0003-Stop-parsing-on-entities-boundaries-errors.patch
      - 0004-Cleanup-conditional-section-error-handling.patch
      - 0005-CVE-2015-1819-Enforce-the-reader-to-run-in-constant-.patch
      - 0006-Another-variation-of-overflow-in-Conditional-section.patch
      - 0007-Fix-an-error-in-previous-Conditional-section-patch.patch
      - 0008-CVE-2015-8035-Fix-XZ-compression-support-loop.patch
      - 0010-Fix-parsering-short-unclosed-comment-uninitialized-access.patch
      libxslt_patches:
      - 0001-Adding-doc-update-related-to-1.1.28.patch
      - 0002-Fix-a-couple-of-places-where-f-printf-parameters-wer.patch
      - 0003-Initialize-pseudo-random-number-generator-with-curre.patch
      - 0004-EXSLT-function-str-replace-is-broken-as-is.patch
      - 0006-Fix-str-padding-to-work-with-UTF-8-strings.patch
      - 0007-Separate-function-for-predicate-matching-in-patterns.patch
      - 0008-Fix-direct-pattern-matching.patch
      - 0009-Fix-certain-patterns-with-predicates.patch
      - 0010-Fix-handling-of-UTF-8-strings-in-EXSLT-crypto-module.patch
      - 0013-Memory-leak-in-xsltCompileIdKeyPattern-error-path.patch
      - 0014-Fix-for-bug-436589.patch
      - 0015-Fix-mkdir-for-mingw.patch
      - 0016-Fix-for-type-confusion-in-preprocessing-attributes.patch
      compiled: 2.9.2
      loaded: 2.9.2

@flavorjones ,
Thanks for taking a look at this issue.
In terms of whether it's a bug or not:  I should first bring up that I inadvertently muddled what I now see as two distinct issues in the script I originally attached.

The huge  option (and perhaps other options)  not being passed along to subsequent implicit DocumentFragment parsing.  I updated the script to use the parse approach, e.g.:

doc1 = Nokogiri::HTML("") do |config|
  config.options = Nokogiri::XML::ParseOptions::HUGE
end

Despite specifying the huge option on the original document, it still does not appear that the in_context call in nokogiri-<IP_ADDRESS>/lib/nokogiri/xml/node.rb @ line 403 is aware of it:
[1] pry(#<Nokogiri::XML::Element>)> options
=> #<Nokogiri::XML::ParseOptions:0x007fde1322f800 ... recover, noerror, nowarning, nonet, default_xml, default_html>

That being said, I don't know that it would be trivial to carry over that config when dealing with arbitrary markup strings as a source to a elem.parse(markup_str) call.

What I now think is more notable, though,  is that, even when omitting the huge option altogether, this throws the fragment error:

docB.xpath('//body').first.parse(docA.xpath('//body').first.inner_html)

While this does not:
Nokogiri::HTML(docA.xpath('//body').first.inner_html)

Which makes me feel like my usage of the huge option in the script is masking some other problem.  The standard parse method can handle the markup, but element.parse(X) does not seem to be able to.

Hi @flavorjones -- just wanted to see if you saw my previous comment?

Please note that this has been fixed by #2399 (related to #1692). You can now pass ParseOptions to fragment-building methods like Node.new


MMM-text-clock not installing / starting

Hello @ngnijland
I wanted to try your great text-clock module, but after copying the git files and updating the config file, nothing happens.. is an npm installation or whatever needed?
Thank you for your interest and have a great afternoon.
Kind regards,
Cédric

Hi @1Cedric1!
Cool that you're trying the clock module! There is no npm installation needed. It should work according to the instructions in the README.
Do you see any error messages that are related to this module either in the terminal or in the browser console?
Regards,
Niek

Hello @ngnijland,
and thank you for your reply.
I do not see anything related to your module in the errog log file

here my config file

and how it looks like on the mirror : the module is not appearing.

My mirror is not so old, as I reinstalled it at the beginning of the summer.
I really do not understand.
the mirror is running on a Raspberry 4 and all other modules work well.
do you maybe have an idea?

Oh, I just found the problem, it had with the language which was not recognised.
Evertithing OK now, thank you very much for your work and your help.
Very much appreciated.
All the best.

Glad to hear that it worked out for you! Enjoy your mirror setup 👏


Create another issue for testing

Keep adding issues to test the .yml file and why a runner doesn't seem to pick it  up.

Runner not picking up


Docker container (request)

I've been trying to follow the instructions for preparing my data after running Rail-RNA and am having problems with the amount of dependencies these additional tools need and getting them to run. Some do not look to be maintained.
Release of a docker container would greatly assist this if it is possible.

Unless @nellore has a different opinion, I don't think that we'll be able to handle your request. We are currently working on a new iteration of the project called recount3.
I'll close the issue for now, though @nellore might want to re-open it.
Best,
Leo


Fix typo STORGAGE -> STORAGE

What kind of change does this PR introduce?
Typo fix
What is the current behavior?
n/a
What is the new behavior?
n/a
Additional context
n/a

cc @tranhoangvuit


Fix asset selector onchange event

Before:
https://github.com/user-attachments/assets/27af6cf7-87de-4a12-b56c-683ea6ced49b
After:
https://github.com/user-attachments/assets/5248f3db-83f1-48ce-b7ac-9c8d06c5b980
When a user clicks on the item, the onMouseDown event fires, the unmounting of the component prevents the onClick from firing.

Fyi, made a fix that restored keyboard controls for this element


Move test to recycle bin dialog (EXPOSUREAPP-10105)

Replaces the delete test dialog with move to recycle bin dialog when deleting a pending/positive/negative/invalid test certificate.
EDIT: I've also wired the logic for moving the certificates to the recycle bin as per @mtwalli's suggestion, but it doesn't fully work,
What works:

dialog shows up
pressing the "Zertifikat EntFernen" button moves it to the recycle bin storage
scanning the same certificate again will bring up a dialog which tells the user the cert is already in the recycle bin and it will be restored if they continue.

What doesn't work:

moving the test certificate to recyle bin doesn't delete the certificate from the current storage, if you scan another cert of the same type, app will complain that there's an already existing cert registered.
test certificates that have been moved to the recycle bin don't show up in the recycle bin screen.
when scanning a certificate, a dialog shows up "CAUSE: 9002 Something went wrong. No test of type RAPID_ANTIGEN/PCR available" pressing OK will take you to the home screen and the test will show up.

what is this ? a certificate dialog ??


Student galaxy measurements are not appearing in table anymore

After merging in #513, my student's data table is not getting populated with my velocity & distance measurements (but they are still in the db). Student 4864 if that helps.
This is from Stage 4.

I just tried reloading and I couldn't even get to Stage 4. There were a gazillion logger messages that scrolled through my terminal and this appears over and over:
Traceback (most recent call last):
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/reacton/core.py", line 1707, in _render
    root_element = el.component.f(*el.args, **el.kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Pat/Documents/GitHub/hubbleds/src/hubbleds/pages/04-explore-data/__init__.py", line 57, in Page
    solara.lab.use_task(_load_component_state)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/solara/tasks.py", line 846, in use_task
    return wrapper(f)
           ^^^^^^^^^^
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/solara/tasks.py", line 840, in wrapper
    raise task_instance.exception
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/solara/tasks.py", line 259, in runner
    self._last_value = value = await self.function(*args, **kwargs)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Pat/Documents/GitHub/hubbleds/src/hubbleds/pages/04-explore-data/__init__.py", line 51, in _load_component_state
    LOCAL_API.get_stage_state(GLOBAL_STATE, LOCAL_STATE, COMPONENT_STATE)
  File "/Users/Pat/Documents/GitHub/cosmicds/src/cosmicds/remote.py", line 138, in get_stage_state
    component_state.set(component_state.value.__class__(**stage_json))
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/solara/toestand.py", line 358, in set
    self._storage.set(value)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/solara/toestand.py", line 266, in set
    self.fire(value, old)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/solara/toestand.py", line 148, in fire
    with contextlib.ExitStack() as stack:
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/contextlib.py", line 601, in __exit__
    raise exc_details[1]
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/contextlib.py", line 586, in __exit__
    if cb(*exc_details):
       ^^^^^^^^^^^^^^^^
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/reacton/core.py", line 1194, in __exit__
    self._possible_rerender()
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/reacton/core.py", line 1391, in _possible_rerender
    self.render(self.element, self.container)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/reacton/core.py", line 1463, in render
    raise RuntimeError(msg)
RuntimeError: Too many renders triggered, your render loop does not stop
Last reason: Reason: state changed with key auto_subscribe_force_update_counter
Value changed from 63 to 64

Previous reasons: Reason: state changed with key auto_subscribe_force_update_counter
Value changed from 62 to 63


Add "--resume" to the av1an commands

Hi.
I prefer to add "--resume" as command to av1an to allow to pause and resume at any time.

Done! c1b3c4edffdb1ffe6e8e0d63d6ac19047ee886f1


Show metadata of media files to users - Feature

Redid repo so no descritpion yet

Person emailed and asked that we would display some meta data to the user where it shows the file name, however, I think this would use too much screen space, so maybe add this later if we can re-do our design


Add path widget

Add a widget to render paths.
The rendered path should collapse when it doesn't fit the current view.

Implemented in #734


Conditional dependencies/markers are ignored when locking

While installing packages that have conditions or markers on them (like “CFFI not on PyPy” for cryptography, or “funcsigs on Python before 3.3” on mock), those conditions are ignored.

I suspect this has something to do with another bug I keep running into but which I was not able to trigger reproducibly: sometimes after a pipenv update my Pipfile.lock (and on pipenv lock --requirements the requirements.txt) gets markers added and after another pipenv update they get removed.
Describe your environment

OS Type: macOS High Sierra
Python version: $ python -V: for Pipenv Python 3.6.3
Pipenv version: $ pipenv --version: 9.0.1 and latest master as of 2018-01-15

Expected result
Conditions are respected.
Actual result
Conditions are ignored.
Steps to replicate
The easiest way to test this: go to an empty directory and type pipenv install --two mock:

Creating a virtualenv for this project…
Using /Users/hynek/.pyenv/versions/2.7.14/bin/python2 to create virtualenv…
⠋Running virtualenv with interpreter /Users/hynek/.pyenv/versions/2.7.14/bin/python2
New python executable in /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/python2
Also creating executable in /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb
Creating a Pipfile for this project…
Installing mock…
⠙Installing 'mock'
$ "/Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/pip" install   --verbose   "mock" -i https://pypi.python.org/simple --exists-action w
Collecting mock
  1 location(s) to search for versions of mock:
  * https://pypi.python.org/simple/mock/
  Getting page https://pypi.python.org/simple/mock/
  Looking up "https://pypi.python.org/simple/mock/" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  Starting new HTTPS connection (1): pypi.python.org
  "GET /simple/mock/ HTTP/1.1" 200 3360
  Updating cache with response from "https://pypi.python.org/simple/mock/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/mock/
    Skipping link https://pypi.python.org/packages/0b/6a/5e3ead38ff3f10031f16f3c834037a1f6c454f54a63b54b56843cd98a7cc/mock-0.4.0-py2.6.egg#md5=7e7ca9c58532bd5807c4a071336f28d0 (from https://pypi.python.org/simple/mock/); unsupported archive format: .egg
    Found link https://pypi.python.org/packages/0c/53/014354fc93c591ccc4abff12c473ad565a2eb24dcd82490fae33dbf2539f/mock-2.0.0.tar.gz#md5=0febfafd14330c9dcaa40de2d82d40ad (from https://pypi.python.org/simple/mock/), version: 2.0.0
    Found link https://pypi.python.org/packages/12/46/4761fcacd8e31ebe59d49c40aa41cc23f70e01702235153093cc1f8874ca/mock-1.1.0-py2.py3-none-any.whl#md5=d6fbc8f13f9c1126cfa473bb26b6e605 (from https://pypi.python.org/simple/mock/), version: 1.1.0
    Found link https://pypi.python.org/packages/15/45/30273ee91feb60dabb8fbb2da7868520525f02cf910279b3047182feed80/mock-1.0.1.zip#md5=869f08d003c289a97c1a6610faf5e913 (from https://pypi.python.org/simple/mock/), version: 1.0.1
    Found link https://pypi.python.org/packages/1c/a0/dfa5f97ce4d4fedd63c4d8021b7b0b2ddd7747b818a15f93699c97ff8439/mock-0.6.0.zip#md5=9d283cce6bd3c65f18ca617955298238 (from https://pypi.python.org/simple/mock/), version: 0.6.0
    Found link https://pypi.python.org/packages/2b/78/2b8bb89e311c3e11ea87bd29ab05a94c68ce2c9137f679e5cf275f1a73e5/mock-1.1.1.tar.gz#md5=8cb5eb66d88f09b13edc6aae80271f1c (from https://pypi.python.org/simple/mock/), version: 1.1.1
    Found link https://pypi.python.org/packages/2d/54/d64774f9b78629fe249e0fcc81378c6f3b00c542aafa1018a2b777a84e43/mock-0.7.1.zip#md5=31382f58aa4f064c366a620d70a8b2a0 (from https://pypi.python.org/simple/mock/), version: 0.7.1
    Found link https://pypi.python.org/packages/32/f2/065f51e5e99081b6ce893cd99d9cd58111e0d41f6b51c9336974ee936625/mock-0.8.0.zip#md5=7dba423ce7994c433f6b84b101f1f4ba (from https://pypi.python.org/simple/mock/), version: 0.8.0
    Skipping link https://pypi.python.org/packages/33/7f/031bd64d3acbf5447c107f55f592619eccdef6b30e87570592d413d6c9cc/mock-0.4.0-py2.4.egg#md5=e948e25b46f75d343a7fcdf24a36005c (from https://pypi.python.org/simple/mock/); unsupported archive format: .egg
    Found link https://pypi.python.org/packages/3a/38/887679f1e350c1a28e4a37193caad9329f9af0e83eefabe82f0c23326c7c/mock-0.7.0b3.zip#md5=af4a1053a9ad7e935ff86d1de9d1042c (from https://pypi.python.org/simple/mock/), version: 0.7.0b3
    Found link https://pypi.python.org/packages/49/35/dd8987d2f4b755a95c0e1650d70fa11cd61b30d6cdf71a793d9e1e3ec9cf/mock-1.0b1.zip#md5=93495a8376e8fc9a3f6cb36524ebe15b (from https://pypi.python.org/simple/mock/), version: 1.0b1
    Found link https://pypi.python.org/packages/4f/67/aae2df6a422936234be6f4bea3d9a52501f6a88a5a451d59adeb620e7179/mock-0.7.2.zip#md5=8a22e3748bc50667ef27536ff1a5cf8d (from https://pypi.python.org/simple/mock/), version: 0.7.2
    Found link https://pypi.python.org/packages/52/22/05f0fb67c51e86b485914b1da519b2df6afd36c41f81a21328bc69a2e3b1/mock-0.8.0.tar.gz#md5=b1ac87a1ceab295aef11dcfc104a7a4a (from https://pypi.python.org/simple/mock/), version: 0.8.0
    Found link https://pypi.python.org/packages/6c/44/2b50aa4a4146e27642fded9baf81a49d430c8b134d31e694e2d78c33aeed/mock-0.5.0.tar.gz#md5=329fafdc91c83eab608ca80c8bb490f9 (from https://pypi.python.org/simple/mock/), version: 0.5.0
    Found link https://pypi.python.org/packages/6d/7f/3dff8eb00b040fd25235c5aec76d24d17553b36b817662140c50ca63e94f/mock-0.7.2.tar.gz#md5=0e63747b20e67f7d3e563bc6fd5b88d3 (from https://pypi.python.org/simple/mock/), version: 0.7.2
    Found link https://pypi.python.org/packages/7f/5e/1719c47d53f4bc93689cd2c72c6051e54e7801453d19c6695106a17cf2d9/mock-1.1.3.tar.gz#md5=6da0cb632ed5ba0201c922a3de8f86ab (from https://pypi.python.org/simple/mock/), version: 1.1.3
    Found link https://pypi.python.org/packages/85/60/ec8c1af81337bab0caba188b218b6758bc94f125f49062f7c5f0647749d2/mock-1.0.0.tar.gz#md5=52642ad23c7a5202b33cb0234837676e (from https://pypi.python.org/simple/mock/), version: 1.0.0
    Found link https://pypi.python.org/packages/85/a4/9c8f854991f458a038f56333bb57abc2b7721429b76f0f76770391ffbd39/mock-1.2.0-py2.py3-none-any.whl#md5=498e779073d532ca5527e58856aa59cd (from https://pypi.python.org/simple/mock/), version: 1.2.0
    Found link https://pypi.python.org/packages/8d/71/62f92fac972750254e31060ebe0802ad02cce2755a7844a94b3cf19b58a6/mock-1.0.0.zip#md5=4d2affbef8d628c27ea952bba5c556de (from https://pypi.python.org/simple/mock/), version: 1.0.0
    Found link https://pypi.python.org/packages/8e/86/78ebbe4e432c2404817525fd94e43d4af2fe4ced026338a509989cf007ee/mock-0.7.0b3.tar.gz#md5=2799e896f528f5cecec8cc55a5d5da21 (from https://pypi.python.org/simple/mock/), version: 0.7.0b3
    Found link https://pypi.python.org/packages/98/05/dd44a19f1dd9f274baae2018b843d31fbeff99399114b16ac965b4f99269/mock-1.3.0.tar.gz#md5=73ee8a4afb3ff4da1b4afa287f39fdeb (from https://pypi.python.org/simple/mock/), version: 1.3.0
    Found link https://pypi.python.org/packages/9e/58/53ec7654a08549ee5191653e35776eeff5f98f13e38b43bdc491d8ddf53a/mock-1.1.4-py2.py3-none-any.whl#md5=15bc5de126d963895c47311cdbca8e81 (from https://pypi.python.org/simple/mock/), version: 1.1.4
    Found link https://pypi.python.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz#md5=c3971991738caa55ec7c356bbc154ee2 (from https://pypi.python.org/simple/mock/), version: 1.0.1
    Found link https://pypi.python.org/packages/a3/eb/4f80a838be8a14e668c5efa2ed7638a54817c71c35b086b7d74753db0065/mock-1.1.4.tar.gz#md5=84afbeb2415bf3d6608dac4423a56325 (from https://pypi.python.org/simple/mock/), version: 1.1.4
    Found link https://pypi.python.org/packages/a9/c3/f205ab82a23ddfbd115020730fec77faffe17b9d47cdbfb9a70f4ed57eb4/mock-0.7.0b1.tar.gz#md5=a21ba6804db7e30c7b5dc7025f72abac (from https://pypi.python.org/simple/mock/), version: 0.7.0b1
    Found link https://pypi.python.org/packages/ab/95/1d25cd0a0f5164aca0882d8fa35d76b4c6cb466c4ac30c08519684e17661/mock-0.7.0b1.zip#md5=ba5124c632e0394a6e9ec25d681fd374 (from https://pypi.python.org/simple/mock/), version: 0.7.0b1
    Found link https://pypi.python.org/packages/b1/09/7525c0ea5051a9615c71bcb73623ea94dea1d7e01c2520392cb3490c1099/mock-0.7.0b4.tar.gz#md5=12af216898f08f85963139efe5d9582b (from https://pypi.python.org/simple/mock/), version: 0.7.0b4
    Found link https://pypi.python.org/packages/b2/50/664a70b87408bb6c14c1af2337efa64eb8d1af80c933531758b8fb41ec25/mock-1.3.0-py2.py3-none-any.whl#md5=4e5dae615e14f9e3b34aea4771b50e1a (from https://pypi.python.org/simple/mock/), version: 1.3.0
    Found link https://pypi.python.org/packages/b3/5a/548cebaebb634fcfab5033486eddbc4aed63ba33967fc64e616da7b3cf7b/mock-0.7.1.tar.gz#md5=fe6a72d963b740ffa959b4746cf96be0 (from https://pypi.python.org/simple/mock/), version: 0.7.1
    Found link https://pypi.python.org/packages/b8/ca/01d3cd94b3510e5adaac47484bca3317636e9fc5d1eef5814fe632032c12/mock-0.7.0rc1.tar.gz#md5=cb4f34459e45607b75a304bde6353ac3 (from https://pypi.python.org/simple/mock/), version: 0.7.0rc1
    Found link https://pypi.python.org/packages/bd/c2/68ba303ccb4e4f7ea6ec70155707287eeaa70b9983e4e6ede68d75311d96/mock-1.1.2-py2.py3-none-any.whl#md5=be5bb226566cb467564cab023fd6e82d (from https://pypi.python.org/simple/mock/), version: 1.1.2
    Found link https://pypi.python.org/packages/c1/75/8deb813d87d409f691825accb1305f4444982f27c37337a63fd7aa8893dc/mock-1.0b1.tar.gz#md5=bf7e9acc7215eeb805bef1d77864e5f2 (from https://pypi.python.org/simple/mock/), version: 1.0b1
    Found link https://pypi.python.org/packages/c5/a9/14894518e15d84e4cf820f8f47e046b9feaf5af041718ba8900e58b455e9/mock-0.7.0.tar.gz#md5=be029f8c963c55250a452c400e10cf42 (from https://pypi.python.org/simple/mock/), version: 0.7.0
    Found link https://pypi.python.org/packages/d3/60/7a4f1942a79547f08e49b366890a6a4ceeccfbd5e1d830a596c85d0395dc/mock-0.7.0b4.zip#md5=0d85979ef556456aaf5a0766a2152831 (from https://pypi.python.org/simple/mock/), version: 0.7.0b4
    Skipping link https://pypi.python.org/packages/d3/ce/3691e7e85b1d48178d2379227fbfe448a788a816ee8e883f71a5526ba1e4/mock-0.4.0-py2.5.egg#md5=147f343ce516b6429883416cc5ffa7cd (from https://pypi.python.org/simple/mock/); unsupported archive format: .egg
    Found link https://pypi.python.org/packages/d3/f0/308e5dd1a04922affc3fc8f14ccc386977a73d812983b96ca55bee3f0b9c/mock-1.2.0.tar.gz#md5=94ec3b0bea7486018196d59c05ff8645 (from https://pypi.python.org/simple/mock/), version: 1.2.0
    Found link https://pypi.python.org/packages/db/f3/1e83c840e5397cefc204bb29649ede7c20c8a1403e533955520afeb57405/mock-1.1.0.tar.gz#md5=9350792aa747cb044c6576cf9f1568b9 (from https://pypi.python.org/simple/mock/), version: 1.1.0
    Found link https://pypi.python.org/packages/e0/7e/bb08dcb2e78e73e02717bccac087b4bd65927bde3470ca8c9f4a2ce491e0/mock-0.7.0rc1.zip#md5=84b71a6ce1e328e27fc4bdc37afd8029 (from https://pypi.python.org/simple/mock/), version: 0.7.0rc1
    Found link https://pypi.python.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl#md5=dd5ca80a263f2a9e55832bfc63f01335 (from https://pypi.python.org/simple/mock/), version: 2.0.0
    Found link https://pypi.python.org/packages/f0/4c/8adc2d53c476ddd7f2d30d1fd506d7545cfc747b5a4c55b5ba5bbcbf38b9/mock-0.7.0.zip#md5=d1431fb57c557707039db1f59083acfc (from https://pypi.python.org/simple/mock/), version: 0.7.0
    Found link https://pypi.python.org/packages/f4/c0/ff5bb8efbffb00167163ed0b667b9be27042a61657db3d7d839c1b798054/mock-1.1.2.tar.gz#md5=4f3f256655ab8f39a1d364ab868e1677 (from https://pypi.python.org/simple/mock/), version: 1.1.2
    Found link https://pypi.python.org/packages/f5/69/b9846e620a8300a739c7229b6c5d88ed6bd808c53e947c6f97bf2980f309/mock-0.6.0.tar.gz#md5=a52c791ebd454a196e1e57b43b493191 (from https://pypi.python.org/simple/mock/), version: 0.6.0
    Found link https://pypi.python.org/packages/f5/b8/f3b341aed1402a866e8853a9e03a2be9db4435d1c241e804e79c68fb1e8e/mock-1.1.3-py2.py3-none-any.whl#md5=d4ffaa94c141830976407663087180a9 (from https://pypi.python.org/simple/mock/), version: 1.1.3
    Found link https://pypi.python.org/packages/fd/2e/486c13326b3aac5aecb04149516361f67656a5490865c20518954b88db92/mock-0.7.0b2.tar.gz#md5=a411b39ef90120a4992a5d5dfdd0a52d (from https://pypi.python.org/simple/mock/), version: 0.7.0b2
    Found link https://pypi.python.org/packages/ff/79/42b20e8a2310353465790abcf5c1c10725141d037baaf52fa14840a81699/mock-0.7.0b2.zip#md5=e83f8af34d80e0491c19789aa9925267 (from https://pypi.python.org/simple/mock/), version: 0.7.0b2
  Using version 2.0.0 (newest of versions: 0.5.0, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.8.0, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.2.0, 1.3.0, 2.0.0)
  Looking up "https://pypi.python.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 661
  Using cached mock-2.0.0-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl#md5=dd5ca80a263f2a9e55832bfc63f01335 (from https://pypi.python.org/simple/mock/)
Collecting pbr>=0.11 (from mock)
  1 location(s) to search for versions of pbr:
  * https://pypi.python.org/simple/pbr/
  Getting page https://pypi.python.org/simple/pbr/
  Looking up "https://pypi.python.org/simple/pbr/" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  "GET /simple/pbr/ HTTP/1.1" 200 6751
  Updating cache with response from "https://pypi.python.org/simple/pbr/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/pbr/
    Found link https://pypi.python.org/packages/06/9f/087191de13300fbc2675821857d0fdf4d5efe254f651fe9e349af97385e1/pbr-0.6.tar.gz#md5=74ed7d0a9d93c1ab3eb7000e2c0482c7 (from https://pypi.python.org/simple/pbr/), version: 0.6
    Found link https://pypi.python.org/packages/0a/b5/c50b7dda55052cba3362ae73baa8ef7daa81e6ba0080999aec5c712a0aae/pbr-3.0.1-py2.py3-none-any.whl#md5=ab384ed0e275a086988492d856effa04 (from https://pypi.python.org/simple/pbr/), version: 3.0.1
    Found link https://pypi.python.org/packages/0b/9a/698e7bea31bbfa79a64380fff0dde28c0f1f6aa7bcfabf0f3efa5857d178/pbr-3.0.0-py2.py3-none-any.whl#md5=e1dd9cf48467da01d5d27bfb5dccd9b2 (from https://pypi.python.org/simple/pbr/), version: 3.0.0
    Found link https://pypi.python.org/packages/0c/5d/b077dbf309993d52c1d71e6bf6fe443a8029ea215135ebbe0b1b10e7aefc/pbr-3.1.1-py2.py3-none-any.whl#md5=75a0f55856bfc9220af0d01244afec43 (from https://pypi.python.org/simple/pbr/), version: 3.1.1
    Found link https://pypi.python.org/packages/0c/5d/d52d6dd3ccf868f6239b10953e1bd977f01099769649ab639a9f118fd1c7/pbr-0.5.12.tar.gz#md5=bc976fce6d07845eb69a2d9fcc3d176e (from https://pypi.python.org/simple/pbr/), version: 0.5.12
    Found link https://pypi.python.org/packages/13/68/1bea12c1593970bb917f50fba54bd5d74574c29079dc57653d9ca1a3da36/pbr-1.9.1-py2.py3-none-any.whl#md5=1ce49b71e2238e156111fe535b527014 (from https://pypi.python.org/simple/pbr/), version: 1.9.1
    Found link https://pypi.python.org/packages/17/0d/76f93f00a05ff92b6515fee63db17e1e8eb1e07d8986abc248c227795f49/pbr-0.5.20.tar.gz#md5=bbfd338b8971084e6ef999f0b3b5a73a (from https://pypi.python.org/simple/pbr/), version: 0.5.20
    Found link https://pypi.python.org/packages/18/2e/28a7d361a568b1a6c86946674e8ac35a609573c3a3d12bb20f6aaf1c39bf/pbr-3.0.1.tar.gz#md5=c537dbb9756e319be25772b1fe1c05fa (from https://pypi.python.org/simple/pbr/), version: 3.0.1
    Found link https://pypi.python.org/packages/19/28/e19b33264b4bb812fc9eb88de84c4c77774cbdf2c31a30672378f1db08af/pbr-1.0.0-py2.py3-none-any.whl#md5=7f24be794ceb844cc7a2055829ad0c1c (from https://pypi.python.org/simple/pbr/), version: 1.0.0
    Found link https://pypi.python.org/packages/19/43/7ad0151ebf46a92e12a71497acf427b17c28b0d3f45592ca3415c2463952/pbr-1.1.1-py2.py3-none-any.whl#md5=514f405c44fcab8ff99830d18122b6bd (from https://pypi.python.org/simple/pbr/), version: 1.1.1
    Found link https://pypi.python.org/packages/1e/3d/51cf7f899cdc10b3867ab9359bdb0843d44576220cebf347a9022924e1b2/pbr-0.10.5.tar.gz#md5=b08361a29d02598016ab5de5fe88ce90 (from https://pypi.python.org/simple/pbr/), version: 0.10.5
    Found link https://pypi.python.org/packages/1e/f0/9963f6ff9fb3861384be272c07522a9e85441ea5524f7fe15d07cadcae2a/pbr-3.0.0.tar.gz#md5=b9ef99a98350a57bbe55b1142807f224 (from https://pypi.python.org/simple/pbr/), version: 3.0.0
    Found link https://pypi.python.org/packages/1f/29/c5ed626759ab3d1636974d30f48e474f4122de2376225aa068e6733e6b7a/pbr-0.8.1.tar.gz#md5=7f87d32188359a823f84c88faf1b8ea0 (from https://pypi.python.org/simple/pbr/), version: 0.8.1
    Found link https://pypi.python.org/packages/20/0a/4c26cec481094d2b880d4c122804f3c07534a0622ba4f19b5995e69c8885/pbr-1.4.0-py2.py3-none-any.whl#md5=914e6cc4f83a3c8b56faa725fbdce0e2 (from https://pypi.python.org/simple/pbr/), version: 1.4.0
    Found link https://pypi.python.org/packages/22/56/9c4ed97ea99aab9358a8a15e216ed3ad424732062fd86229074568e83c76/pbr-0.5.15.tar.gz#md5=f2ee400cc0f46bd074d16d7f6b1d63da (from https://pypi.python.org/simple/pbr/), version: 0.5.15
    Found link https://pypi.python.org/packages/22/eb/8d8a7e6f2aaf11d36c3e8c6562cc6f80c5cb071460265b611071c57ccf7b/pbr-1.7.0-py2.py3-none-any.whl#md5=5a2249f3808bab91b58974c179987e09 (from https://pypi.python.org/simple/pbr/), version: 1.7.0
    Found link https://pypi.python.org/packages/25/83/a41e99d7cec85162a996fd3d1f1a35307c1fb43b04b5e6eba7c85ce74bda/pbr-0.10.6.tar.gz#md5=018ea54b1e70b218047e3ce3e50099d3 (from https://pypi.python.org/simple/pbr/), version: 0.10.6
    Found link https://pypi.python.org/packages/25/f6/bb56954d86bdb13949849da87db1b01b5e1120c0d2df9af76f2bb63ba154/pbr-1.9.0-py2.py3-none-any.whl#md5=8838efaa9d8470a1b4995bab59a8a6c2 (from https://pypi.python.org/simple/pbr/), version: 1.9.0
    Found link https://pypi.python.org/packages/2b/56/fd3015212c8f546c632a65b1018e8f065eff1b173d11739bb73c64cc5683/pbr-3.1.0.tar.gz#md5=2ebad465f51393759710d2ed3b356004 (from https://pypi.python.org/simple/pbr/), version: 3.1.0
    Found link https://pypi.python.org/packages/2c/cd/0c6bf3648359b0be7a48ef24b12070a9384121651ebf907ff8d289fc1760/pbr-0.5.18.tar.gz#md5=fd14abc6600fc63a87dd33268f2f6d19 (from https://pypi.python.org/simple/pbr/), version: 0.5.18
    Found link https://pypi.python.org/packages/2d/52/ea19b878ed286aa47183d87317a52fb2c1bc23fcea2fcc358d8ab8d9191c/pbr-1.1.0-py2.py3-none-any.whl#md5=77dc871fa086c0148306cb53f644241e (from https://pypi.python.org/simple/pbr/), version: 1.1.0
    Found link https://pypi.python.org/packages/2d/5d/85559fcd563b1567502d45d6a193839e22661cbea0c1663636cf10e3b4ce/pbr-0.10.2.tar.gz#md5=3f57d706d96b8790b5f2998fd71f2273 (from https://pypi.python.org/simple/pbr/), version: 0.10.2
    Found link https://pypi.python.org/packages/2d/89/8b99cffdd0d1874448bd479ea5979a5f702699e4a1f0d3230864518b0832/pbr-1.4.0.tar.gz#md5=21f847dd9d3f9bd37db402067024be98 (from https://pypi.python.org/simple/pbr/), version: 1.4.0
    Found link https://pypi.python.org/packages/2e/34/cd633b4d83fd691ec32171506979e076a5762c5f7063be61e41495cb6006/pbr-1.0.0.tar.gz#md5=8075d0922db081d3ae1aa3c4f372ecf8 (from https://pypi.python.org/simple/pbr/), version: 1.0.0
    Found link https://pypi.python.org/packages/33/e0/b950dc6f07f174b70be856f1666236b60902c340e042d0a04dbd2529c086/pbr-0.10.6-py2.py3-none-any.whl#md5=72ed5a5dfba41d5cca1b0fa990913e32 (from https://pypi.python.org/simple/pbr/), version: 0.10.6
    Found link https://pypi.python.org/packages/33/e2/b070023aece01ba1e9899b67ff93d770e4be71dd0233150d353b0f8bd976/pbr-0.10.7.tar.gz#md5=3f523231e709ad028497d7af557bf2fb (from https://pypi.python.org/simple/pbr/), version: 0.10.7
    Found link https://pypi.python.org/packages/35/a5/3d1beff9fc149b3da814419369a8c24ecf0d1410637fc91002989f433a1a/pbr-2.0.0.tar.gz#md5=dfc1c3788eff06acfaade6f1655fa490 (from https://pypi.python.org/simple/pbr/), version: 2.0.0
    Found link https://pypi.python.org/packages/39/e9/937d7777eca2670c6d04279c243359c4a97652e728e1d19021890193ea58/pbr-0.11.0.tar.gz#md5=e69466b4206e350f4f1e1db2e11ab73b (from https://pypi.python.org/simple/pbr/), version: 0.11.0
    Found link https://pypi.python.org/packages/3f/fd/1ac92034e81906ff10d261f4d72141e75710188a25b7b958c5f7a23bbd30/pbr-2.1.0-py2.py3-none-any.whl#md5=2c7670f4272531da6790499efc8231f5 (from https://pypi.python.org/simple/pbr/), version: 2.1.0
    Found link https://pypi.python.org/packages/40/e3/24f5f78af5a52ff62b2e0d4fe8cc459acd19c4f2b09963608df203e169e1/pbr-1.7.0.tar.gz#md5=8a039757ad7fdc15d6ffcae151c6b427 (from https://pypi.python.org/simple/pbr/), version: 1.7.0
    Found link https://pypi.python.org/packages/50/ab/963142856158acf5887fa69e707b12903886a3069714b70d4e97eead774d/pbr-0.10.4.tar.gz#md5=a6da7171daf28dc3bae59960bd1b4e11 (from https://pypi.python.org/simple/pbr/), version: 0.10.4
    Found link https://pypi.python.org/packages/52/d6/643ce069bc2aab0565d0fed087314ce065b8b39f3691bb12ddf8a442a14b/pbr-0.5.16.tar.gz#md5=31c851aa6c16ba397e3b722234a8654d (from https://pypi.python.org/simple/pbr/), version: 0.5.16
    Found link https://pypi.python.org/packages/53/4a/31a753a4eeb5ce5b4a4818482c0133cf4e3600b739656b36f35decf28e68/pbr-1.5.0-py2.py3-none-any.whl#md5=010ce85abb3c2bcb4034bfc9ad318913 (from https://pypi.python.org/simple/pbr/), version: 1.5.0
    Found link https://pypi.python.org/packages/55/93/92c38d86ad190cf3ab9903614869ef6649e660e5f01622a3b111ff0f8bf4/pbr-0.10.4-py2.py3-none-any.whl#md5=844b592c09afb696758192c41e4487b4 (from https://pypi.python.org/simple/pbr/), version: 0.10.4
    Found link https://pypi.python.org/packages/56/f2/7195b36b39b7a207643e44c9b4a00eb8045174dfd10e0709b42496a65417/pbr-1.9.0.tar.gz#md5=ed8854f725e1c4d7e94d1b2c9ab61304 (from https://pypi.python.org/simple/pbr/), version: 1.9.0
    Found link https://pypi.python.org/packages/5b/1f/c0bb2ab7add8cdda622cf99a2427520e744d08a2ae6c9d8474800c66efd2/pbr-0.5.11.tar.gz#md5=56717ac59c8d4528742ab3f61a35fe6b (from https://pypi.python.org/simple/pbr/), version: 0.5.11
    Found link https://pypi.python.org/packages/5d/c0/71d70764464dc049f2bb417c497751b1f16ebfb3c3146051c614156be54c/pbr-0.5.4.tar.gz#md5=93c1a18af7d91c2bf470558dfa75a736 (from https://pypi.python.org/simple/pbr/), version: 0.5.4
    Found link https://pypi.python.org/packages/68/71/515cf4d6272a30a5203514a86dcf6a7fd563e8c58de7f81a0c0cace0a362/pbr-0.5.21.tar.gz#md5=1dafd1ef666b9bce4d880170ddc39387 (from https://pypi.python.org/simple/pbr/), version: 0.5.21
    Found link https://pypi.python.org/packages/6c/5e/455c63ef5c4c7f3dc6a8639302c01cfa97da689ecef771dc27f4f593e2d8/pbr-1.0.1-py2.py3-none-any.whl#md5=dbba7064b44ee3e1a89f0b9804c2010b (from https://pypi.python.org/simple/pbr/), version: 1.0.1
    Found link https://pypi.python.org/packages/6f/0f/f7e94cf4d10355dbb5142a052ffd593501feb7dea4a553beb78cbc4a1a8d/pbr-1.1.1.tar.gz#md5=e54ee276bf64589d74f123b28c7c8a73 (from https://pypi.python.org/simple/pbr/), version: 1.1.1
    Found link https://pypi.python.org/packages/71/66/0fe2927f8f1d13fcf9a6005db995ebce4b0f86712f0946c7ff84d27cd9ea/pbr-0.5.2.tar.gz#md5=5f6e1870a2db8e35412acef33415c218 (from https://pypi.python.org/simple/pbr/), version: 0.5.2
    Found link https://pypi.python.org/packages/73/29/ce7ad655da1d45715a2043c2223b7f4923a69f4a3695c6162e872b157d1e/pbr-1.6.0.tar.gz#md5=a9a0fc1c8ecabdf057eef5ff98d1ea71 (from https://pypi.python.org/simple/pbr/), version: 1.6.0
    Found link https://pypi.python.org/packages/77/9f/a9b24fcab52e7fd7ad054a1abe88020bbeb66db87ad9859bc2093249a12f/pbr-0.5.17.tar.gz#md5=ca5e8a790e230bc132cab98b31b8e39b (from https://pypi.python.org/simple/pbr/), version: 0.5.17
    Found link https://pypi.python.org/packages/7a/69/52a53c3efadb243f14c4f0aeb31d3e3094f91a0c58e1b21c1058e6717af3/pbr-0.5.6.tar.gz#md5=c34fad829c66a1cd0e55ab74908f5ce9 (from https://pypi.python.org/simple/pbr/), version: 0.5.6
    Found link https://pypi.python.org/packages/7c/13/1a676016b726ca3f6a38772bc013670affc52ab5a304ed3eb4bd79cde70a/pbr-0.8.0.tar.gz#md5=7d85dc6aa47809d97d29901bf0244f6f (from https://pypi.python.org/simple/pbr/), version: 0.8.0
    Found link https://pypi.python.org/packages/80/4f/4cb186de73b8e496215f3bd449c3be47afd7aee0b55a5f497bcb351afae0/pbr-0.9.0-py2.py3-none-any.whl#md5=3c0fa68e6f0dc92958647f6e19ef0f6e (from https://pypi.python.org/simple/pbr/), version: 0.9.0
    Found link https://pypi.python.org/packages/81/1c/8a5b2d2075b63cd74567ecfc41496842dcf38ab75bc9379c608e6c05d2bc/pbr-0.5.14.tar.gz#md5=b1462a461437b51286115bd5ab02b22b (from https://pypi.python.org/simple/pbr/), version: 0.5.14
    Found link https://pypi.python.org/packages/85/54/388bfc35753c380c2868c0570fa53eebc53818ae3c25b3c19c0c3818775b/pbr-1.2.0.tar.gz#md5=b5b93565a5c6fd514889d5f5d83a485b (from https://pypi.python.org/simple/pbr/), version: 1.2.0
    Found link https://pypi.python.org/packages/89/d0/d4db92ef43e9b21a7034f6dc041fa9c3b0310599c131c9fb07273b6ca1c4/pbr-1.9.1.tar.gz#md5=d70073a39a28da64ac968139b49cec8f (from https://pypi.python.org/simple/pbr/), version: 1.9.1
    Found link https://pypi.python.org/packages/8d/35/9c224b1f62566ec810851b0ff32eaf6ee6ce9acf82ff972e61d66abe9a4f/pbr-0.11.1.tar.gz#md5=dc476e5ffe4e15dfecbdf5586fadc8db (from https://pypi.python.org/simple/pbr/), version: 0.11.1
    Found link https://pypi.python.org/packages/8d/da/5a5f40dce8b0b814f0fcb8cb290f20e7d90b8218fb51ac7dca6a6797a194/pbr-<IP_ADDRESS>.g5b3e942.tar.gz#md5=276a1c4590ac231004a2d64a6887dc44 (from https://pypi.python.org/simple/pbr/), version: <IP_ADDRESS>.g5b3e942
    Found link https://pypi.python.org/packages/8e/a7/f185db31a06ffe51d7a957b90dd0cc12dca29e9be218fb430d999c5ab980/pbr-1.5.0.tar.gz#md5=e2d24853397c1c6c9b20db212ff2084b (from https://pypi.python.org/simple/pbr/), version: 1.5.0
    Found link https://pypi.python.org/packages/93/40/4820e8bea62d5d48365b4bb009a5d1c55713e3823ac9e2ee80b92ad7fce7/pbr-0.10.8.tar.gz#md5=ccef0c0fa2ad7ee2c9997322a83d7e45 (from https://pypi.python.org/simple/pbr/), version: 0.10.8
    Found link https://pypi.python.org/packages/94/27/2d371af70766f2d1dc0cf1c42ea3319a057d0ebc0d71ab05c824be48e9df/pbr-1.8.1.tar.gz#md5=c8f9285e1a4ca6f9654c529b158baa3a (from https://pypi.python.org/simple/pbr/), version: 1.8.1
    Found link https://pypi.python.org/packages/94/d2/13ff71d810b53500774e874c188213c7e9d7d0746d2ef37262b308392b76/pbr-0.5.13.tar.gz#md5=4c3a36aaa4c711728ab15186ddd2dc5a (from https://pypi.python.org/simple/pbr/), version: 0.5.13
    Found link https://pypi.python.org/packages/96/1b/036f5e2d7b96785547d9d7965866832990aee4f47bcc8bb3e426ffc73808/pbr-0.5.19.tar.gz#md5=5e441e595b294e343ea3261aba6b7f76 (from https://pypi.python.org/simple/pbr/), version: 0.5.19
    Found link https://pypi.python.org/packages/98/18/15857380350b35b33a7ef52099cc68632434be0b1babcbaeb10910b1f5f2/pbr-0.10.1.tar.gz#md5=078783b789dc7885dc85b7ee52bbc9a1 (from https://pypi.python.org/simple/pbr/), version: 0.10.1
    Found link https://pypi.python.org/packages/99/d3/1941d4ad237bb9e3d92b386d852c2c6049135db5ea8000dd47c10f992083/pbr-0.8.2.tar.gz#md5=e634d42285755724ad3d75ebbc68173a (from https://pypi.python.org/simple/pbr/), version: 0.8.2
    Found link https://pypi.python.org/packages/9b/cf/6c6f843ffc13aee42c5412c49e7aff7e860d006261dcafb5a5512fa27cd6/pbr-2.1.0.tar.gz#md5=6decaa3bd7529d591e40b0a64d6c4cfb (from https://pypi.python.org/simple/pbr/), version: 2.1.0
    Found link https://pypi.python.org/packages/9c/b1/ca2d79e0d7a8745a3e4fbe396be26aa7ce6d02891af689474be93c25dcc1/pbr-0.10.8-py2.py3-none-any.whl#md5=169389d23737ff44e3cfe6492d750b8c (from https://pypi.python.org/simple/pbr/), version: 0.10.8
    Found link https://pypi.python.org/packages/9d/60/0e0c8d181fead2a46cff2a0769c72216803de8e6f0aa2eb7764e818e5349/pbr-0.9.0.tar.gz#md5=eabd5606f7e3db56c3cd70e44c377706 (from https://pypi.python.org/simple/pbr/), version: 0.9.0
    Found link https://pypi.python.org/packages/a2/7a/a5c5c87a9afe45e1e2efea5262bd68c68611dd23c106d675e4b4ec64a766/pbr-1.2.0-py2.py3-none-any.whl#md5=065cee17aab68a54b32a8b5d5fd19726 (from https://pypi.python.org/simple/pbr/), version: 1.2.0
    Found link https://pypi.python.org/packages/a7/7b/d66521f2f6bf7e5bf772cbf0ccd77c93d763840a2081ee0c8a94c3ac70bd/pbr-0.7.0.tar.gz#md5=33e71021ae6a35487325f4c4c16d467d (from https://pypi.python.org/simple/pbr/), version: 0.7.0
    Found link https://pypi.python.org/packages/a8/0a/6ad9f0d1e5f10c6523bb1c52d97643938194693e28083d0112a511c94b9f/pbr-0.5.0.tar.gz#md5=957c5474720bd044b859d24c6fb5b1ca (from https://pypi.python.org/simple/pbr/), version: 0.5.0
    Found link https://pypi.python.org/packages/a8/87/23e26858c1a45ff7ed352261e34fb99b33a97bfac0a6e5ece8df7c983d02/pbr-0.11.1-py2.py3-none-any.whl#md5=0b7852a0a626f06c4468a3ffa4187af8 (from https://pypi.python.org/simple/pbr/), version: 0.11.1
    Found link https://pypi.python.org/packages/a9/27/fd662ee763cb4348c412452aa3a92cd0d61dfe72a4ababc529ea6409911a/pbr-0.5.1.tar.gz#md5=ea4b32b03f606e4548adbdedd91b1bf2 (from https://pypi.python.org/simple/pbr/), version: 0.5.1
    Found link https://pypi.python.org/packages/ab/ed/f93a88e436c7f6a5d190f4e156e37276aebb08d1ca44bf3f32a0d03c620e/pbr-1.8.0-py2.py3-none-any.whl#md5=7cda2b9a2ad3134fe8c29e5ff0216468 (from https://pypi.python.org/simple/pbr/), version: 1.8.0
    Found link https://pypi.python.org/packages/ae/7b/a40fbf06e6d73a19428fd6e3c38244cfd01d218958253bd594f8fc10a203/pbr-1.0.1.tar.gz#md5=37b112f4962735faebf618811d4c1797 (from https://pypi.python.org/simple/pbr/), version: 1.0.1
    Found link https://pypi.python.org/packages/af/60/8e4469f8a1f8570701a5ec781fa5e71db256a17f47f5d16dc924bc905d4f/pbr-0.5.7.tar.gz#md5=d10fa77e985000f0f00c6af6a28acdb7 (from https://pypi.python.org/simple/pbr/), version: 0.5.7
    Found link https://pypi.python.org/packages/b8/2d/b8a38176b243617b1e36144a905c1892325b0b0079f142e3ae3f0b14cfe4/pbr-1.3.0.tar.gz#md5=5e54c9e7f083b5259a6e619dfd6525f8 (from https://pypi.python.org/simple/pbr/), version: 1.3.0
    Found link https://pypi.python.org/packages/b8/a1/7abb01fd93d66fc71e24e5df9ca6d7d9acfb4b715937d2a38fd739f266e6/pbr-1.10.0-py2.py3-none-any.whl#md5=7941615147c725d1800ee86f91d5df3e (from https://pypi.python.org/simple/pbr/), version: 1.10.0
    Found link https://pypi.python.org/packages/bc/f8/4f5315aabe064e75b6cf5ea00e89753aad17370b6bedc87959013e4e5d5b/pbr-1.6.0-py2.py3-none-any.whl#md5=40d83daa9fa67cb215c44ad27c248624 (from https://pypi.python.org/simple/pbr/), version: 1.6.0
    Found link https://pypi.python.org/packages/bf/4d/6c52208dcbd56bb27921b631bcb689143bf4177700f06ee5c02281581788/pbr-0.10.5-py2.py3-none-any.whl#md5=9dac093685bd403a7b44c595e670201e (from https://pypi.python.org/simple/pbr/), version: 0.10.5
    Found link https://pypi.python.org/packages/c1/0e/131710b2f7dd178de3446d41be6333dbea66727d5736f83950a881dce6d5/pbr-0.5.10.tar.gz#md5=849a522f3b64b5a1c9c640d2fded4aa6 (from https://pypi.python.org/simple/pbr/), version: 0.5.10
    Found link https://pypi.python.org/packages/c1/ce/f8a51cbccd7e4bccb972464463a8bb139a35cf0c9d4998f4548292abc59d/pbr-0.10.7-py2.py3-none-any.whl#md5=63b3de0f31e0543930c7524129b53ea8 (from https://pypi.python.org/simple/pbr/), version: 0.10.7
    Found link https://pypi.python.org/packages/c2/39/653746d50ebd66a8784c5469e439e73b717f48fa463165d7c734d25a2de6/pbr-0.10.2-py2.py3-none-any.whl#md5=ad53e06117b823fd1614acc6f5e43335 (from https://pypi.python.org/simple/pbr/), version: 0.10.2
    Found link https://pypi.python.org/packages/c2/c4/baea9cc86502ee89c91ac9ec2d09d77d816f3f266d7653a6ab27e6b2b171/pbr-0.10.0.tar.gz#md5=9e02dbfb5e49210c381fd4eea00cf7b7 (from https://pypi.python.org/simple/pbr/), version: 0.10.0
    Found link https://pypi.python.org/packages/c2/fb/e4cbd19cffb126d2172e0d76c4a15c807bb9ca90f65e3270d3f69e7e641f/pbr-0.10.0-py2.py3-none-any.whl#md5=102a0e69a7335f7cbbfcfa746caf7897 (from https://pypi.python.org/simple/pbr/), version: 0.10.0
    Found link https://pypi.python.org/packages/c3/2c/63275fab26a0fd8cadafca71a3623e4d0f0ee8ed7124a5bb128853d178a7/pbr-1.10.0.tar.gz#md5=8e4968c587268f030e38329feb9c8f17 (from https://pypi.python.org/simple/pbr/), version: 1.10.0
    Found link https://pypi.python.org/packages/c8/44/ef516bef9b79383aa396efe873c8298fef3d99ffbb07aac1d14f121f1237/pbr-0.5.23.tar.gz#md5=dde40a1c2fefcd901c7c9ee9223ef955 (from https://pypi.python.org/simple/pbr/), version: 0.5.23
    Found link https://pypi.python.org/packages/d2/00/aaaaea2b4d6eb1566953ae607f38170801ba1f31eac22984d801d6821bcf/pbr-0.5.22.tar.gz#md5=3bb4f92e970dab5807d3f8189d6cfa10 (from https://pypi.python.org/simple/pbr/), version: 0.5.22
    Found link https://pypi.python.org/packages/d2/78/c6824d6fec5169cca21295093b42d1c609a54d21a18c953cf7f16dfaf1f5/pbr-0.10.3-py2.py3-none-any.whl#md5=b16e070c1fb56755b20ed3610508db64 (from https://pypi.python.org/simple/pbr/), version: 0.10.3
    Found link https://pypi.python.org/packages/d3/0a/e7e41f00d4e479baa627f4146eb40cb422758500459a5ed012cf4c599a72/pbr-1.8.0.tar.gz#md5=bc7173f5ccec8e6125e3b68f0285eb8a (from https://pypi.python.org/simple/pbr/), version: 1.8.0
    Found link https://pypi.python.org/packages/d4/26/8777b9e756b22295375946cb83ee588e8c10e6e2bed73e5f29c218c141c8/pbr-0.11.0-py2.py3-none-any.whl#md5=4896f66ab0d24bfd24dced1bf40cda7a (from https://pypi.python.org/simple/pbr/), version: 0.11.0
    Found link https://pypi.python.org/packages/d4/60/956bf3025f5b8bb655b72968f8993becec4563ce125fca9e33b5f72f497e/pbr-1.1.0.tar.gz#md5=d730c18e11adf7712255f327908fcbac (from https://pypi.python.org/simple/pbr/), version: 1.1.0
    Found link https://pypi.python.org/packages/d5/d6/f2bf137d71e4f213b575faa9eb426a8775732432edb67588a8ee836ecb80/pbr-3.1.1.tar.gz#md5=4e82c2e07af544c56a5b71c801525b00 (from https://pypi.python.org/simple/pbr/), version: 3.1.1
    Found link https://pypi.python.org/packages/d8/d5/66183c56f77e77baea356d596d86e8b2b5a29c61571aca5760682fef68af/pbr-0.5.8.tar.gz#md5=fa6a9330dc608ea53ae3ac1997fc9648 (from https://pypi.python.org/simple/pbr/), version: 0.5.8
    Found link https://pypi.python.org/packages/db/20/4b2c63698053d5a03e2f1d5cf39735a890901a97fff513adfc7e7bd0729a/pbr-0.10.1-py2.py3-none-any.whl#md5=c876b26978806d8bf490aa7510cd1f74 (from https://pypi.python.org/simple/pbr/), version: 0.10.1
    Found link https://pypi.python.org/packages/dc/1c/963dff2c51137a57539d1bf86e651366a34ee83b3658b8406c463b83b7da/pbr-1.3.0-py2.py3-none-any.whl#md5=b54311390cb31abacfc6c48f4fb8a72d (from https://pypi.python.org/simple/pbr/), version: 1.3.0
    Found link https://pypi.python.org/packages/e7/e3/e86fc1e78fa42a8c39630fd37bf730ecbbe78925d0a9b51bef2489668752/pbr-0.5.5.tar.gz#md5=8e5d90e3aa87cfd9b484f68283691376 (from https://pypi.python.org/simple/pbr/), version: 0.5.5
    Found link https://pypi.python.org/packages/e9/c0/8f7f54d7b9b8ceb73ac30d769fdd722431e95ad0d2cd689def382e8b9eec/pbr-2.0.0-py2.py3-none-any.whl#md5=5c7c3692b69649b55a8a793319712f62 (from https://pypi.python.org/simple/pbr/), version: 2.0.0
    Found link https://pypi.python.org/packages/ee/dc/d120fa8c01ef6e19e0272e39295f95a56ad434e0069717b18bc3514f155f/pbr-0.10.3.tar.gz#md5=df43c99f2c1decacebd506247fa1d691 (from https://pypi.python.org/simple/pbr/), version: 0.10.3
    Found link https://pypi.python.org/packages/f4/7b/f724d20f4474c50f28603e42ba2cd1491b823068ebabaf4c941febd4b3e7/pbr-3.1.0-py2.py3-none-any.whl#md5=8f32817607cce84ab36c62325e64f844 (from https://pypi.python.org/simple/pbr/), version: 3.1.0
    Found link https://pypi.python.org/packages/fc/37/94af8387babb09796d306b18cf94ee5c70388c875a16d8a88e471500452c/pbr-1.8.1-py2.py3-none-any.whl#md5=88d4ed81ec269cc1094ba7e3c41d85e5 (from https://pypi.python.org/simple/pbr/), version: 1.8.1
  Using version 3.1.1 (newest of versions: 0.11.0, 0.11.1, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.6.0, 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 2.0.0, 2.1.0, 3.0.0, 3.0.1, 3.1.0, 3.1.1)
  Looking up "https://pypi.python.org/packages/0c/5d/b077dbf309993d52c1d71e6bf6fe443a8029ea215135ebbe0b1b10e7aefc/pbr-3.1.1-py2.py3-none-any.whl" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 661
  Using cached pbr-3.1.1-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/0c/5d/b077dbf309993d52c1d71e6bf6fe443a8029ea215135ebbe0b1b10e7aefc/pbr-3.1.1-py2.py3-none-any.whl#md5=75a0f55856bfc9220af0d01244afec43 (from https://pypi.python.org/simple/pbr/)
Collecting funcsigs>=1; python_version < "3.3" (from mock)
  1 location(s) to search for versions of funcsigs:
  * https://pypi.python.org/simple/funcsigs/
  Getting page https://pypi.python.org/simple/funcsigs/
  Looking up "https://pypi.python.org/simple/funcsigs/" in the cache
  Current age based on date: 615
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  "GET /simple/funcsigs/ HTTP/1.1" 200 952
  Updating cache with response from "https://pypi.python.org/simple/funcsigs/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/funcsigs/
    Found link https://pypi.python.org/packages/09/8d/17528625d12ca90651dd1f7958fd0d32b23b15f2197023372669fd683321/funcsigs-1.0.0-py2.py3-none-any.whl#md5=1229a5af8401069351c7e61035982f35 (from https://pypi.python.org/simple/funcsigs/), version: 1.0.0
    Found link https://pypi.python.org/packages/3c/60/4bb1cbb64a46e98b8063013d271fd3e9e20832827a4d59e343889c6a7a95/funcsigs-1.0.1-py2.py3-none-any.whl#md5=b5df37432c5d468cab69c1cc93f31ff9 (from https://pypi.python.org/simple/funcsigs/), version: 1.0.1
    Found link https://pypi.python.org/packages/5e/9f/025d4c92c6a1a94313cdf0813cd76f5700f8e5434fa15165090a6446ae22/funcsigs-0.4-py2.py3-none-any.whl#md5=0df93bdb54034b9f0263785c7d6b84f4 (from https://pypi.python.org/simple/funcsigs/), version: 0.4
    Found link https://pypi.python.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl#md5=701d58358171f34b6d1197de2923a35a (from https://pypi.python.org/simple/funcsigs/), version: 1.0.2
    Found link https://pypi.python.org/packages/78/d2/1c8d781e957a667de45199cc9fa69cc95eedc589ceb2f180d7f40af7625f/funcsigs-0.1.tar.gz#md5=4b45f3cd06b9973e590ad714676a5c3d (from https://pypi.python.org/simple/funcsigs/), version: 0.1
    Found link https://pypi.python.org/packages/87/5e/44bc85c41e5b33b6bf1fcb2f6ccbc4ee74337af079438d2a28c5c45137e1/funcsigs-0.4.tar.gz#md5=fb1d031f284233e09701f6db1281c2a5 (from https://pypi.python.org/simple/funcsigs/), version: 0.4
    Found link https://pypi.python.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz#md5=7e583285b1fb8a76305d6d68f4ccc14e (from https://pypi.python.org/simple/funcsigs/), version: 1.0.2
    Found link https://pypi.python.org/packages/ab/5b/a6dff630fe5b68a4d2a049b6d95b51ad1510fb72e9606d656feb2c34efd8/funcsigs-1.0.1.tar.gz#md5=c2d84de116ce1aba0dc844a359cd20dd (from https://pypi.python.org/simple/funcsigs/), version: 1.0.1
    Found link https://pypi.python.org/packages/b2/c3/1842bc45f0549d34379e3ea73ce584ba30573e26dd93a0fef03cfed8156c/funcsigs-0.3.tar.gz#md5=a877ec113482165d6f19b49cbec4b8ba (from https://pypi.python.org/simple/funcsigs/), version: 0.3
    Found link https://pypi.python.org/packages/b7/56/1def30b73d76ef0a6c68c8a14b3fc31d361c53b02ff2ffb1c91d2b465698/funcsigs-0.2.tar.gz#md5=1f56853306a9aa69b58051854d70f904 (from https://pypi.python.org/simple/funcsigs/), version: 0.2
    Found link https://pypi.python.org/packages/b9/5e/55612c62d35959b5b9767f020f95cb0830f340733f5c2626c7d1e9056729/funcsigs-1.0.0.tar.gz#md5=669d0f34e94cb36a3948e8f592bc6f25 (from https://pypi.python.org/simple/funcsigs/), version: 1.0.0
  Using version 1.0.2 (newest of versions: 1.0.0, 1.0.1, 1.0.2)
  Looking up "https://pypi.python.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl" in the cache
  Current age based on date: 615
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 615
  Using cached funcsigs-1.0.2-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl#md5=701d58358171f34b6d1197de2923a35a (from https://pypi.python.org/simple/funcsigs/)
Collecting six>=1.9 (from mock)
  1 location(s) to search for versions of six:
  * https://pypi.python.org/simple/six/
  Getting page https://pypi.python.org/simple/six/
  Looking up "https://pypi.python.org/simple/six/" in the cache
  Current age based on date: 661
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The cached response is "stale" with no etag, purging
  "GET /simple/six/ HTTP/1.1" 200 2699
  Updating cache with response from "https://pypi.python.org/simple/six/"
  Caching b/c date exists and max-age > 0
  Analyzing links from page https://pypi.python.org/simple/six/
    Found link https://pypi.python.org/packages/02/c3/8e2a38edaac777ee2bbe479b3a65b020ade549efd6a224c2f4e95c818799/six-1.6.0.tar.gz#md5=eb22a24e8be9497dd71930bf2321b6ec (from https://pypi.python.org/simple/six/), version: 1.6.0
    Found link https://pypi.python.org/packages/02/f8/d16f06e49b0d2ef40548bf42826f926c8964ad3b1d00f8098dcc6ef15aea/six-1.3.0.tar.gz#md5=ec47fe6070a8a64c802363d2c2b1e2ee (from https://pypi.python.org/simple/six/), version: 1.3.0
    Found link https://pypi.python.org/packages/0b/5e/4b3f417a85d9cd30b172a1512a2d3cdd0ffb05a5deacb8adf2ef30db100d/six-1.5.1.tar.gz#md5=bb00c982fc0ec0dd6a760500b0941fa9 (from https://pypi.python.org/simple/six/), version: 1.5.1
    Found link https://pypi.python.org/packages/0e/f9/66471f9b7e9291cca697b2e61a10645a537f389a9d5c0679d50dd86b20f7/six-0.9.0.tar.gz#md5=5ce2947347101b9f54674c19ef88233d (from https://pypi.python.org/simple/six/), version: 0.9.0
    Found link https://pypi.python.org/packages/0f/dd/379fa572b72da0b482545116139529af8da92e686ea136271beecddd4e81/six-1.5.0.tar.gz#md5=72b33ff89f3b2f21dd2cb28fb94f7031 (from https://pypi.python.org/simple/six/), version: 1.5.0
    Found link https://pypi.python.org/packages/10/e3/a7f8eea80a9fa8358c1cd89ef489bc03675e69e54ed2982cd6f2a28d8295/six-1.9.0-py2.py3-none-any.whl#md5=9ac7e129a80f72d6fc1f0216f6e9627b (from https://pypi.python.org/simple/six/), version: 1.9.0
    Found link https://pypi.python.org/packages/11/3f/2b3c217c5427cdd12619024b1ee1b04d49e27fde5c29df2a0b92c26677c2/six-1.8.0.tar.gz#md5=1626eb24cc889110c38f7e786ec69885 (from https://pypi.python.org/simple/six/), version: 1.8.0
    Found link https://pypi.python.org/packages/16/64/1dc5e5976b17466fd7d712e59cbe9fb1e18bec153109e5ba3ed6c9102f1a/six-1.9.0.tar.gz#md5=476881ef4012262dfc8adc645ee786c4 (from https://pypi.python.org/simple/six/), version: 1.9.0
    Found link https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz#md5=d12789f9baf7e9fb2524c0c64f1773f8 (from https://pypi.python.org/simple/six/), version: 1.11.0
    Found link https://pypi.python.org/packages/1b/2a/ad686ae156581a70a7be28e7762f7d956bec30d62dafe9295b78dc019692/six-1.7.1.tar.gz#md5=f9fbad970c6e855cabde7ec1144b9058 (from https://pypi.python.org/simple/six/), version: 1.7.1
    Found link https://pypi.python.org/packages/1d/8e/220ce5a36dac3aabccee871a34561ceba82ce14b53760143cf5e01bb4d2c/six-1.5.2.tar.gz#md5=322b86d0c50a7d165c05600154cecc0a (from https://pypi.python.org/simple/six/), version: 1.5.2
    Found link https://pypi.python.org/packages/20/0a/617bf23511160454995bf1cbe6789f22beeb8b49c1f3b1bbf4b5cd6a55ca/six-1.7.0-py2.py3-none-any.whl#md5=e5ca7e89cc79d755ea128fc7e2cb136e (from https://pypi.python.org/simple/six/), version: 1.7.0
    Found link https://pypi.python.org/packages/2b/4a/233721f6c6afeed5a2034f617f120fa646da935039f08e67ab8dc008a3e6/six-1.7.3.tar.gz#md5=784c6e5541c3c4952de9c0a966a0a80b (from https://pypi.python.org/simple/six/), version: 1.7.3
    Found link https://pypi.python.org/packages/2e/a4/6dcb84af409b7bc0c258a0d6bd7e14231724d9a46b750c048f09d74d870c/six-1.7.3-py2.py3-none-any.whl#md5=5f34fe522765d398b21decdce62ebd1d (from https://pypi.python.org/simple/six/), version: 1.7.3
    Found link https://pypi.python.org/packages/4e/02/f08545a99829a04e841b6443267f216629c723c23fb9cfd17c99c068e33a/six-0.9.1.tar.gz#md5=1b249e0011355722f569406135a8ac93 (from https://pypi.python.org/simple/six/), version: 0.9.1
    Found link https://pypi.python.org/packages/4e/aa/73683ca0c4237891e33562e3f55bcaab972869959b97b397637519d92035/six-1.4.1.tar.gz#md5=bdbb9e12d3336c198695aa4cf3a61d62 (from https://pypi.python.org/simple/six/), version: 1.4.1
    Found link https://pypi.python.org/packages/54/45/8b5eef1ba0b79acbdab01435359f37ae13dc6c4aafaa444b805e3867386d/six-1.6.0-py2.py3-none-any.whl#md5=e2755cf8a1d8e4eda44a8e3436c458ca (from https://pypi.python.org/simple/six/), version: 1.6.0
    Found link https://pypi.python.org/packages/54/d4/8f7d631f1c3defa2ff4bd7c3daddcc5ed6eb9df7631f3cf24cc376aa3231/six-1.1.0.tar.gz#md5=9e8099b57cd27493a6988e9c9b313e23 (from https://pypi.python.org/simple/six/), version: 1.1.0
    Found link https://pypi.python.org/packages/60/84/72c628d5a4efffb23e2fb46cdbf8ee669046d8208ba5dab08f989b7bfe9c/six-1.5.1-py2.py3-none-any.whl#md5=2064b715201fa76a55dea75675ee19f2 (from https://pypi.python.org/simple/six/), version: 1.5.1
    Found link https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl#md5=866ab722be6bdfed6830f3179af65468 (from https://pypi.python.org/simple/six/), version: 1.11.0
    Found link https://pypi.python.org/packages/6b/30/839b8059d1225dbd3a0dd97c3c370bbb978cde505e160b30515fb7be17d8/six-1.7.2-py2.py3-none-any.whl#md5=0e10f8d8e65257408e4428632859dad9 (from https://pypi.python.org/simple/six/), version: 1.7.2
    Found link https://pypi.python.org/packages/7e/16/792311d76b8e23da84e1b177fb973679de1c963391d0dcd7e963634bed4b/six-1.7.0.tar.gz#md5=92f7210da3db1e988979fa394aa41d7a (from https://pypi.python.org/simple/six/), version: 1.7.0
    Found link https://pypi.python.org/packages/8b/08/8f569ab2c81c1443ce43e29df2e7eec1ab7f005455f6c193793728b00f04/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d (from https://pypi.python.org/simple/six/), version: 1.0b1
    Found link https://pypi.python.org/packages/99/25/2df8760d6902620cfca85e36f07de491d14f2c325ecc01c1a5590d8af22d/six-1.4.0.tar.gz#md5=5fcab6a067b5ebf68ede2f4d02fe7547 (from https://pypi.python.org/simple/six/), version: 1.4.0
    Found link https://pypi.python.org/packages/a2/4b/2b4532b4eba116a02fc0b5e0b3540a073a61c003b7b6293b7b884afa8ff1/six-1.8.0-py2.py3-none-any.whl#md5=2f5f96148c68f3c1611f489678a8b445 (from https://pypi.python.org/simple/six/), version: 1.8.0
    Found link https://pypi.python.org/packages/a4/ed/a1410f4a3ae1492d87cbc7acdeea819db3caf6e526ef7032dd6fe50d2083/six-1.7.2.tar.gz#md5=4c26276583b01dfc73474cb32327af91 (from https://pypi.python.org/simple/six/), version: 1.7.2
    Found link https://pypi.python.org/packages/a6/af/4506a069312018665b8936e5d51b3aa013971ef65eab5231ef151a482dcd/six-1.0.0.tar.gz#md5=37c7ff036fdff2b1bb8d55e49ccb3b44 (from https://pypi.python.org/simple/six/), version: 1.0.0
    Found link https://pypi.python.org/packages/aa/ec/e6954e19e617c1b9860325f0995d456d8416c84a6cb9bce1c10998280b59/six-1.7.1-py2.py3-none-any.whl#md5=c3c1e251733acc9db947e75c9a02cf06 (from https://pypi.python.org/simple/six/), version: 1.7.1
    Found link https://pypi.python.org/packages/af/33/fa2097ac4bc7a9672517fdcb982bc7454fdd113f49f7ab353025b906a119/six-0.9.2.tar.gz#md5=92ea7c870396dd9222029a188c6bbd7f (from https://pypi.python.org/simple/six/), version: 0.9.2
    Found link https://pypi.python.org/packages/b3/b2/238e2590826bfdd113244a40d9d3eb26918bd798fc187e2360a8367068db/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55 (from https://pypi.python.org/simple/six/), version: 1.10.0
    Found link https://pypi.python.org/packages/ba/19/aa48edcff9d0c396a4d009d362d0a0a1ac3db6f9d7d5736e0175b94d7ef8/six-1.6.1-py2.py3-none-any.whl#md5=ca195cc2271b03ae1c8750a88081c7f1 (from https://pypi.python.org/simple/six/), version: 1.6.1
    Found link https://pypi.python.org/packages/c7/a4/35520d20a8e4b3c28c9db705fffd4c7053e0236928951da32167e5078faa/six-1.5.2-py2.py3-none-any.whl#md5=ba32222ad0c5c7057a7c42e66e81289d (from https://pypi.python.org/simple/six/), version: 1.5.2
    Found link https://pypi.python.org/packages/c8/0a/b6723e1bc4c516cb687841499455a8505b44607ab535be01091c0f24f079/six-1.10.0-py2.py3-none-any.whl#md5=3ab558cf5d4f7a72611d59a81a315dc8 (from https://pypi.python.org/simple/six/), version: 1.10.0
    Found link https://pypi.python.org/packages/ca/15/e62a66024dded9640f8d39112330e6b108e7ab21a1b8618c2d1e2eea7e1d/six-1.5.0-py2.py3-none-any.whl#md5=3307efe2bc4ca8556befc9afe297c530 (from https://pypi.python.org/simple/six/), version: 1.5.0
    Found link https://pypi.python.org/packages/e8/70/b9c441d8c02b70eb3bf923c49944b8fc656f78a43c084d2a98534d7404e2/six-1.6.1.tar.gz#md5=07d606ac08595d795bf926cc9985674f (from https://pypi.python.org/simple/six/), version: 1.6.1
    Found link https://pypi.python.org/packages/e9/b4/0ccbc17cd49a812ab8363058bb12f0134cf2d3ba752391f309ddf567ae97/six-1.2.0.tar.gz#md5=2a5d1afc79912832ac78fd38e3d75d7e (from https://pypi.python.org/simple/six/), version: 1.2.0
  Using version 1.11.0 (newest of versions: 1.9.0, 1.10.0, 1.11.0)
  Looking up "https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl" in the cache
  Current age based on date: 4245500
  Freshness lifetime from max-age: 31557600
  The response is "fresh", returning cached response
  31557600 > 4245500
  Using cached six-1.11.0-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl#md5=866ab722be6bdfed6830f3179af65468 (from https://pypi.python.org/simple/six/)
Installing collected packages: pbr, funcsigs, six, mock

  changing mode of /Users/hynek/.local/share/virtualenvs/pipenv-test-RKl-GKWb/bin/pbr to 755

Successfully installed funcsigs-1.0.2 mock-2.0.0 pbr-3.1.1 six-1.11.0
Cleaning up...

Adding mock to Pipfile's [packages]…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (a69885)!

As you can see, funcsigs gets installed (“Successfully installed funcsigs-1.0.2 mock-2.0.0 pbr-3.1.1 six-1.11.0”).
However it’s not present in Pipfile.lock:

{
    "_meta": {
        "hash": {
            "sha256": "e3db12f7fd14f8b6216c97b58fcf0f9927bb85cfb3c4aa4b7b6a8bcf79a69885"
        },
        "host-environment-markers": {
            "implementation_name": "cpython",
            "implementation_version": "0",
            "os_name": "posix",
            "platform_machine": "x86_64",
            "platform_python_implementation": "CPython",
            "platform_release": "17.3.0",
            "platform_system": "Darwin",
            "platform_version": "Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64",
            "python_full_version": "2.7.14",
            "python_version": "2.7",
            "sys_platform": "darwin"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "2.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.python.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "mock": {
            "hashes": [],
            "version": "==2.0.0"
        },
        "pbr": {
            "hashes": [],
            "version": "==3.1.1"
        },
        "six": {
            "hashes": [],
            "version": "==1.11.0"
        }
    },
    "develop": {}
}

That means:

it’s not pinned on deployments
after the next pipenv update, it's gonna be gone in development.

Curiously, pipenv graph knows it should depend on funcsigs just fine and seems flabbergasted (?) by its absence:
pipenv graph
mock==2.0.0
  - funcsigs [required: >=1, installed: ?]
  - pbr [required: >=0.11, installed: 3.1.1]
  - six [required: >=1.9, installed: 1.11.0]

@hynek checked & pipenv does the right thing for his Py2 venvs if pipenv itself is also running under Python 2.7, so it sounds like this is another instance of https://github.com/pypa/pipenv/issues/857

@ncoghlan that's right:

Right but it won’t get parsed in a resolution graph until the package is installed afaik

Pip-tools handles parsing by using a pip.index.PackageFinder instance to ultimately generate a pip.req.req_set.RequirementSet from which pip.req.req_install.InstallRequirement instances are generated. Since this all runs in the host interpreter, each step needs to be fooled into believing that it is working with the 'guest' python version to do resolution properly, while not actually performing any installation operations because they will fail.
So far based on the call graph I can identify the following pieces that need to be fooled:

PIP_PYTHON_PATH
PIP_PYTHON_VERSION
pip.index.PackageFinder.valid_tags which comes from pip.pep425tags.get_supported
sys.path
sys.version
sysconfig calls are made in distlib.wheel

If at any point those resolve to the wrong interpreter (i.e. the host interpreter), resolution runs the risk of failing.  So now I'm wondering if we shouldn't just 'install' a resolver script into the virtualenv and run it in that context and just dump the output to the host interpreter via a subprocess or something.

Aye, while I think being able to generate the lock file without creating the venv first is a nice design goal, experience has shown us that doing so is currently too fragile to rely on (at least for now).

As of v11, lock file generation resolves the dependencies using the venv Python, so the generated lock file should be independent of the host Python version now (it will still depend on the version of Python in the virtual environment).

Yes, I can confirm it’s fixed now. Great work!

p.s. that wasn't easy :)


Files are ignored in subdirectories that partially match directories specified in gitignore, unlike git.

With ...
/project/orders/static
/project/static

orders/static
└── orders
    └── js
        ├── backorder.js
        ├── order_edit.js
        ├── order.js

And in /project/.gitignore ...
static/*
!static/.gitkeep

orders/static/orders/js/orders.js contains some text that includes 'addLine'
If I 'ag addLine' from /project directory it will not find it
If I cd into /project/orders/static first it will find it
git is not ignoring files under /project/orders/static, it is ignoring files under /project/static

I'm running into the same issue, to work around this I've to modify static/* by /static/* in the .gitignore file


Fix logic & parameter annotation

Fix the logic error related to <mandatory_folder>.

Fix the type error in the function(sanitize_override) annotation for parameters.

Thanks for the contribution - could you elaborate what issue this PR is fixing? IE provide what command you were running that previously didnt work without these changes.


Memory Leak

Hi it‘s really headache issue ，when I open and close a window and repeat for sevral times I can't imaging how much memory I have used. And even if I have called GC to collection the memory immediately when I want to leave the memory didn't relesed.
this is a small project to test the memory leak.  when you click hide it will call GC.
https://github.com/TingtingG233/GifTest/tree/master/GifTest

Hi @TingtingG233,
Have you tried profiling your application to see what was using memory?
The project you submitted is more complex than it could be, which makes it harder to locate the problem. The issue might not even be related to WpfAnimatedGif. Could you:

try to reproduce the problem with a simpler project?
try to use UriSource instead of StreamSource to specify the image and see if the problem still happens?

Thanks for your reply. The project has content several ways to test memory leak.but you can see every port is separated. I have tried all ways that can be to load the gif with WpfAnimatedGif. All of the ways have the same problem that is the memory won’t be related in a short time. If you need I can separate the project and make it a individual project.

Hi @TingtingG233,
I had a look at your project. Actually, there's no leak; the memory is released eventually:

It's just that WPF doesn't give you any control on when the memory is released. In Windows Forms, you can Dispose() an image, which releases the memory, but WPF doesn't provide a way to do that.
In any case, the problem has nothing to do with WpfAnimatedGif itself: you can observe the same problem without using WpfAnimatedGif, by just loading the GIF as a fixed image and displaying it in the Image control. The problem is just more visible with WpfAnimatedGif (because it loads all frames in memory instead of just the first one, and so uses more memory), but it's not caused by it.


[Bug]: Type4 shading isn't correctly rendered

Attach (recommended) or Link to PDF file
The pdf has been found in the PDFBox bug tracker.
minimal.pdf
Web browser and its version
Firefox nightly
Operating system and its version
Windows 11
PDF.js version
last one
Is the bug present in the latest PDF.js version?
Yes
Is a browser extension
No
Steps to reproduce the problem
Open the pdf.
What is the expected behavior?
In Chrome:

In Acrobat:

What went wrong?
It depends of the zoom level: if it's to high nothing is drawn but if it's small enough we can see for example:

Link to a viewer
No response
Additional context
No response

Could this be another duplicate of #16038, perhaps?

Do you think that the wrong blue thing has the same cause as in #16038 ?

Given that this seems to be using a tiling pattern with a /BBox that contains negative values, it might thus be related?

I confirm it's a dupe of #16038.


doc/server: update Loki config

Documentation preview available at: https://linuxcontainers.org/lxd/docs/pr.10974/

@ru-fu I don't know if adding "lifecycle" to the wordlist is the way to go, please let me know if there's a better way, thanks!

@ru-fu when looking at the preview doc (cool feature!) I noticed I forgot to single quote the values. Is the spellchecker skipping quoted strings? If so, I should remove the "lifecycle" word from the wordlist.

@simondeziel yeah, the spellchecker ignores quoted strings, so you should be able to remove lifecycle from the list

@ru-fu when looking at the preview doc (cool feature!) I noticed I forgot to single quote the values. Is the spellchecker skipping quoted strings? If so, I should remove the "lifecycle" word from the wordlist.

Yes, please remove it from the list. In normal text, it should be spelled as two words (or hyphenated in combinations like "life-cycle events"). For variables and the like it's of course fine as one word, but then it needs to be marked as code.
And yes, all quoted strings are ignored in the spell check. :)


Don’t let MonadZero imply its deprecation warning

Otherwise instances with a MonadZero constraint in their context hide the warning.

Any idea why CI isn't running?

I've made a mistake with the CI for these libraries, using on: push instead of on: [push, pull_request]. I'm going to sweep through and fix that ASAP.

@JordanMartinez if you merge master into this branch then CI should run.


Kotlin support (import without ijar generation)

Attempt to revive https://github.com/johnynek/bazel-deps/pull/154. Mainly here a placeholder for others trying to solve the same problem. You probably don't want to merge this as is.
Test repo: https://github.com/wcurrie/bazel-kt-test
As an alternative it appears generating library BUILD files with kt_jvm_import like https://github.com/wcurrie/bazel-kt-test/blob/kt_jvm_import/third_party/jvm/org/jetbrains/kotlinx/BUILD would work. That looks closer to the way scala is handled. @hsyed would adding exports support to kt_jvm_import would be a better approach?
I haven't looked at how the scala rules pick the source jar out of the single filegroup generated by workspace.bzl.

I opened https://github.com/bazelbuild/rules_kotlin/pull/151 so we can use kt_jvm_import and avoid kotlin specifics jar_artifact_backend.bzl. Undoes some of the shared java | kotlin handling.
Requires 2 BUILD header lines in dependencies.yaml:
  buildHeader:
  - load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_jvm_import")
  - licenses(["notice"])

Seems more consistent with the way Scala is handled. Provided @hsyed is ok with the kotlin_rules change.
This fix should work for the near term. Seems the "right" fix is ijar handling kotlin (and scala): https://github.com/bazelbuild/bazel/issues/4549. Doesn't sound like a major priority for jetbrains  youtrack:

It's not clear when I or other members of the team can work on the issue.

@wcurrie thanks for the submission! Great to have better support for kotlin.

Note: this depends on a still unmerged change in rules_kotlin https://github.com/bazelbuild/rules_kotlin/pull/151. To use it, you need the patched version of rules_kotlin. The example project in https://github.com/bazelbuild/rules_kotlin/pull/161 shows how it all hangs together.
In https://github.com/bazelbuild/rules_kotlin/pull/161/files#diff-1bb5e2d2581597db09183b12c3753e45R3 instead of:
local_repository(
    name = "io_bazel_rules_kotlin",
    path = "../.."
)

You'll need to use the fork. Until the PR is merged 🤞:
# see https://github.com/bazelbuild/rules_kotlin/pull/151
rules_kotlin_version = "95398b01378ba3a62b41b1b8e36f0de7b462fa28"
http_archive(
    name = "io_bazel_rules_kotlin",
    urls = ["https://github.com/wcurrie/rules_kotlin/archive/%s.zip" % rules_kotlin_version],
    type = "zip",
    strip_prefix = "rules_kotlin-%s" % rules_kotlin_version
)


M03-L08: Release pipelines

Contact Details
No response
What happened?
Exercise 2, Task 1: Set Up Release Tasks
"From the eShopOnWeb project in the Azure DevOps portal, in the vertical navigational pane, select Pipelines and then, within the Pipelines section, click Releases."
I believe release pipelines have been depreciated, can you confirm what the new steps in this guide will be?
Lab
Other
Relevant screenshots

Do you want to help us? 👏

[ ] Create a Pull Request by following this project's Contribution Guide

you can reenable at Organization settings > Pipelines > Settings > (OFF) Disable the creation of classic x pipelines

Thank you, had a feeling there was an option somewhere!

@LewisGoDeploy, @unaihuete93 is correct. Make sure you follow the AZ400_M00_Validate_lab_environment and "Toggle the switch to Off for Disable creation of classic build pipelines and Disable creation of classic release pipelines".

Thank you, please note though that your hyperlink is no longer available @LuizMacedo

@LewisGoDeploy here https://microsoftlearning.github.io/AZ400-DesigningandImplementingMicrosoftDevOpsSolutions/Instructions/Labs/AZ400_M00_Validate_lab_environment.html.


Adapt to WildCo folder structure

@ChrisBeirne @tazarve I think there is a need to tweak the code for our folder structure where  camera checks are nested within stations?

@ChrisBeirne @tazarve I think there is a need to tweak the code for our folder structure where camera checks are nested within stations?

sounds good. I just did this for Itcha. I can upload this modification (a few extra lines of code)

sounds good. I just did this for Itcha. I can upload this modification (a few extra lines of code)

Yes please! If you could modify it that would be great!


Update package version

3.0.1-alpha.7 (2023-10-25)
Bug Fixes

frontend: add global mutating status (c635503)
frontend: add global mutating status and loading element (228d274)

:tada: This PR is included in version 1.1.0-alpha.11 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 3.0.1-alpha.8 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


scripts: run_common: don't dump stack on unavailable runner

Originally reported in #23539 (though that seems to have been another
problem), west flash and friends are dumping stack when used with an
unconfigured runner.
Let's just promote the warning about this to an error. The idea that
this ever could have worked without explicit support has not worked
out in practice, to my knowledge.

Added a docs commit to make it easier for users to figure out how to apply the suggested fix.

ready to merge

@carlescufi ping


Add Twitter link

... except I didn't sign-off?

I don't think we can contribute directly to devbox repo yet. Right now we go through /axiom

Yeah, for now go through axiom.

@loreto Now that it isn't tied to axiom, re-open and merge?


Rename bundle that is created as part of bundle build into dist or min

Is your feature request related to a problem? Please describe.
Bundle build produces:
bundle
core-plugins
libs
maven
plugins

The bundle name is confusing and contains only the -min artifact. We should rename it to maybe dist?

I agree with DB on this, I go to build/.../.../bundle folder and only finds min.
Renaming it to dist is definitely a better idea.

@xuezhou25 since you were just looking at something related feel free to take this one too!

@Rishikesh1159 was working on this


chore: add devcontainer configuration

Provide a starting point for devcontainer use to develop lit. This can help new contributors quickly get a dev environment going in the cloud without needing to run anything locally. However, if desired a developer can run devcontainers locally in order to isolate different work environments.
This container does the following:

Uses the existing Node 18 + TypeScript devcontainer from Microsoft as the base
Sets up the GH CLI so it is available in case anyone is used to in their workflow
Installs playwright browsers + dependencies on the operating system
After a container is brought online for a workspace, like a new Codespace, npm ci is executed so people can get into working quickly.

It does also suggest 4 cores as a requirement. This is because on Codespaces when running build and test the CPU was maxing on the 2 core machines and triggering warnings repeatedly. At 4 cores they can show up from time-to-time, but overall the runs seem to go smoothly.
I was already doing this for myself. Rather than make an issue or discussion thread on Discord to talk first, figured submitting a PR outright would be fine. If it isn't desired then no time wasted either way.

@rictic someone needs to start the test workflows. I don't see the button on my phone though.


Features with multiple When steps on different levels lead to errors

When a feature has multiple when steps which use each others entrypoints, Augurk will create a circular reference with the feature being dependent on itself.
This doesn't serialize well. Augurk should be able to handle this scenario.

Looks like this is already fixed, at least I couldn't reproduce it.


Added the icon position to the action group

[x] Changes have been thoroughly tested to not break existing functionality.
[x] New functionality has been documented or existing documentation has been updated to reflect changes.
[x] Visual changes are explained in the PR description using a screenshot/recording of before and after.

The action group trigger was missing the icon position. This PR fixed that.

Icon position is not passed there as not all action group types support it (e.g. badge).
I expected it to work with $attributes, but it probably doesn't because a prop exists for it?


Allow Scene to overwrite entities in a World

What problem does this solve or what need does it fill?
Right now we can write to a world from a scene using
let instance = scene.write_to_world_with(world, app_type_registry) .unwrap();

Where the returned instance is a mapping from entities in the scene world to entities to newly created entities in the world we pass in.
However, in some cases we want to overwrite entities in the world (instead of allocating new ones). Say I have many snapshots of my world in-memory that I've saved using Scene::clone_with. When I apply them to the world I don't want to allocate new entities each time - instead I want to be passing in the scene instance entity map I got back from my write_to_world_with call and overwriting the entities that way.
What solution would you like?
Sample API
impl Scene {
    ...
    /// Overwrites entities specified in the scene that have an existing mapping to an entity in world
    pub fn overwrite(&self, world: &mut World, instance_info: InstanceInfo) {
        let entity_map = instance_info.0;
        ...
    }
    ...
}

This can be used as so
#[derive(Component)]
pub struct A(u32);

let mut world = World::default();
let scene = Scene::new(world);

let mut entity_mut = scene.world.spawn(A(0));
let snapshot = scene.clone_with(app_type_registry).unwrap();

entity_mut.insert(A(1));

let instance = scene.write_to_world_with(main_world, app_type_registry) .unwrap();

// load an older snapshot but reuse all the same entities
snapshot.overwrite(world, instance);

Additional considerations
We could also consider removing entities that are in the InstanceInfo but not in the scene from the world, but a straightforward overwrite would work for my use case.

I implemented rollbacks using bevy_save. I used a component type to mark entities which I wanted to save and deleted all such entities upon loading. Perhaps this is applicable to you?

I implemented rollbacks using bevy_save. I used a component type to mark entities which I wanted to save and deleted all such entities just before loading. Perhaps this is applicable to you?

bevy_save seems like a nice fully featured solution - it was the first thing I reached for when starting. I still think basic scene diffing/overwriting is something bevy_scene should provide out of the box.


Clock/tray section disappearing after new monitor

Describe the bug
I am using a dual monitor setup and recently had to replace one of my monitors. Ever since replacing my primary monitor the bottom right clock & tray section completely disappears. I have to relaunch TaskbarX, and then it will work fine again, however, it disappears again whenever I restart my computer or the monitor goes to sleep, so this can get very frustrating. I am not using taskbar segments, in fact I am basically using the default setup. I could not find any exising issues/bugs like this.
To Reproduce
Steps to reproduce the behavior:

Turn computer and/or monitor on
Clock/tray does not appear.
Restarting TaskbarX fixes the issue temporarily.

Expected behavior
The clock and tray section stay visible as they should.
Screenshots
You can see the missing clock/tray in the image below on the right:

Desktop

OS: Windows 10
TaskbarX Version <IP_ADDRESS>

Thank you for any support.

Also have this problem, I think the width of the taskbar that is there is 1920px, I don't know if that's because it's the default or if it's because the width of the second monitor (which turns on first), is full hd.

I also use 2 monitors but have 1 vertical taskbar in primary monitor.
Despite restarting the application, the Clock/tray keeps hides from time to time, which is really irritating.

I've the same problem. I use just one widescreen-monitor (3440x140). In windows taskbar-settings I've activated the function 'automatically collapse'.
VERY often the tray area is hidden without a comprehensible reason.
It helps to open any further application which was not shown in the taskbar before. Afterwards the tray area is visiable again. But if I close this application again, the tray area is also hidden again. It is annoying :-/


CI Failing

Recently, our netlify CI is failing and no error is provided. It seems to be something with our settings at netlify.

References: https://github.com/clinicjs/clinicjs-site/pulls

I did a quick look at the logs and it's because we're using an outdated ubuntu version in the build.
UNSUPPORTED BUILD IMAGE

  The build image for this site uses Ubuntu 16.04 Xenial Xerus, which is no longer supported.

However, I don't have access to our netlify account. @efrisby Could you help me with that?

The Netlify website is linked to the NearForm team account. Speak to Eamonn for access.

This is not the issue. The repo is linked to a netlify account that's not ours. Ours is working fine.

This is the issue reported by the account that's not ours.

Correct, what I mean is that we shouldn't even be deploying to that account. The image issue was fixed in our account long ago already. The only think I'm unsure about is which account the clinicjs.org domain is pointing to. Because if it's the one that's not ours, we need to change it to point to ours.

@simoneb Fixed. I had to remove the netlify app, install it again and disable access from outside collaborators (not in this order)

good approach 👌