<!-- 
RSS generated by JIRA (8.3.4#803005-sha1:1f96e09b3c60279a408a2ae47be3c745f571388b) at Sat Feb 10 16:23:38 JST 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>PFS-JIRA</title>
    <link>https://pfspipe.ipmu.jp/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.3.4</version>
        <build-number>803005</build-number>
        <build-date>13-09-2019</build-date>
    </build-info>


<item>
            <title>[INSTRM-306] Define python environment</title>
                <link>https://pfspipe.ipmu.jp/jira/browse/INSTRM-306</link>
                <project id="10300" key="INSTRM">Instrument control development</project>
                    <description>&lt;p&gt;We should define which python version, distribution, and modules we expect to have installed.&lt;/p&gt;

&lt;p&gt;Even though most modern distribution systems should be fine I suggest that we only &lt;em&gt;support&lt;/em&gt; miniconda+products for now, just to minimize the unknowns. But if anyone want to use apt/pip/homebrew and has the following versions it should be fine. Full &lt;tt&gt;anaconda 5.2+&lt;/tt&gt; distributions should work, though several modules will need to be added.&lt;/p&gt;

&lt;p&gt;The MHS products currently require the following python modules. Obviously not all products require all modules; I&apos;ll state the main purpose/requirement for each. The listed versions are usually whatever gets installed by &lt;tt&gt;conda install&lt;/tt&gt; on 2018-03-20; in the cases where I know that the version matters I&apos;ll add an exclamation point.&lt;/p&gt;

&lt;p&gt;In general there &lt;em&gt;will be&lt;/em&gt; version conflicts, since we are installing individual modules. So this is more of a guide than a prescription. All versions are expected to be upgradable.&lt;/p&gt;

&lt;p&gt;Nearly all modules include sub-modules dependencies, which are not listed.&lt;/p&gt;

&lt;p&gt;The absolutely essential packages for all actors are:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;python: 3.6! &#8211; &lt;tt&gt;asyncio&lt;/tt&gt; is stable and supported from 3.6&lt;/li&gt;
	&lt;li&gt;twisted: 17.9 &#8211; for &lt;tt&gt;tron_actorcore&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;ply: 3.11! &#8211; for all &lt;tt&gt;tron_actorcore&lt;/tt&gt; parsing&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;On top of those, various packages require sets of the following:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;dnspython: 1.16 - for SPS actors, at least.&lt;/li&gt;
	&lt;li&gt;numpy: 1.14 &#8211; for the detector readouts&lt;/li&gt;
	&lt;li&gt;cython: 0.27! - for the detector readouts, several others.&lt;/li&gt;
	&lt;li&gt;pyserial: 3.4 &amp;#8211; for many device controlling actors, even non-serial ones.&lt;/li&gt;
	&lt;li&gt;future: 0.16! &#8211; only necessary for code upgraded from python2&lt;/li&gt;
	&lt;li&gt;astropy: 3.0.1 &#8211; &lt;tt&gt;import astropy.io.fits as pyfits&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;fitsio: 0.9.11! (from pip) &#8211; &lt;tt&gt;pyfits&lt;/tt&gt; can be too inefficient for the H4 ramps or on small machines.&lt;/li&gt;
	&lt;li&gt;ruaml_yaml: 0.15.35 &#8211; &lt;tt&gt;ics_config&lt;/tt&gt;, others.&lt;br/&gt;
 This is a painful choice: &lt;tt&gt;pyyaml&lt;/tt&gt; is moribund, &lt;tt&gt;ruaml_yamel&lt;/tt&gt; is on bitbucket and has a new API. Not obvious.&lt;/li&gt;
	&lt;li&gt;psycopg2-binary: 2.7.4 (from pip) &#8211; This has switched to a slightly confusing &quot;binary&quot; install.&lt;/li&gt;
	&lt;li&gt;qt: 5.9.5 &#8211;&#160;for any pyqt GUIs with &lt;tt&gt;actorcore&lt;/tt&gt; parts&lt;/li&gt;
	&lt;li&gt;pyqt: 5.9.5 &#8211; same&lt;/li&gt;
	&lt;li&gt;qt5reactor: 0.5 (from pip) &#8211; for any pyqt GUIs with &lt;tt&gt;actorcore&lt;/tt&gt; parts&lt;/li&gt;
	&lt;li&gt;matplotlib: 2.2 &amp;#8211; for various GUIs.&lt;/li&gt;
	&lt;li&gt;fysom: 2.1.5 &amp;#8211; for FSMs in &lt;tt&gt;tron_actorcore&lt;/tt&gt;&lt;/li&gt;
	&lt;li&gt;sqlalchemy: 1.2.10 &amp;#8211; for &lt;tt&gt;ics_archiver&lt;/tt&gt;, any querying code (&lt;tt&gt;ics_sps_engineering_stuff&lt;/tt&gt;, etc.&lt;/li&gt;
	&lt;li&gt;gitpython: 2.1.11 &amp;#8211; for the version keys.&lt;/li&gt;
	&lt;li&gt;redis-py: 3.5.3 &amp;#8211; for gen2 status streaming. Also underlying redis pakage&lt;/li&gt;
	&lt;li&gt;msgpack: 1.0.2 (from pip) &amp;#8211; for gen2 status streaming&lt;/li&gt;
	&lt;li&gt;pymongo: 3.11.3 (from pip) &amp;#8211; for gen2 status streaming&lt;/li&gt;
	&lt;li&gt;ginga : 3.10 (from pip) - for real time displau&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The following have been added to the root environment but should perhaps have been put into an different one. Jupyter and opencv have impressive dependency lists.&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;jupyter: 1.0.0 &amp;#8211; for notebooks&lt;/li&gt;
	&lt;li&gt;scipy: 1.1.0 &amp;#8211; just because people do use it.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
	&lt;li&gt;- opencv: 3.4.1 &amp;#8211; for MCS visualization, at least.&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="12116">INSTRM-306</key>
            <summary>Define python environment</summary>
                <type id="3" iconUrl="https://pfspipe.ipmu.jp/jira/secure/viewavatar?size=xsmall&amp;avatarId=10518&amp;avatarType=issuetype">Task</type>
                                            <priority id="10000" iconUrl="https://pfspipe.ipmu.jp/jira/images/icons/priorities/medium.svg">Normal</priority>
                        <status id="1" iconUrl="https://pfspipe.ipmu.jp/jira/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="cloomis">cloomis</assignee>
                                    <reporter username="cloomis">cloomis</reporter>
                        <labels>
                    </labels>
                <created>Wed, 21 Mar 2018 17:16:18 +0000</created>
                <updated>Wed, 9 Nov 2022 04:22:33 +0000</updated>
                            <resolved>Wed, 21 Mar 2018 17:16:18 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                <comments>
                            <comment id="13048" author="hiro" created="Wed, 21 Mar 2018 23:16:23 +0000"  >&lt;p&gt;psycopg2 is required by ics_archiver.&lt;/p&gt;</comment>
                            <comment id="13362" author="atsushi.shimono" created="Wed, 2 May 2018 07:09:19 +0000"  >&lt;p&gt;&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=cloomis&quot; class=&quot;user-hover&quot; rel=&quot;cloomis&quot;&gt;cloomis&lt;/a&gt; what mean by &quot;!&quot; for version number?&lt;br/&gt;
&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=hiro&quot; class=&quot;user-hover&quot; rel=&quot;hiro&quot;&gt;Yoshida, Hiroshige&lt;/a&gt; need both psycopg2-binary and psycopg2?&lt;/p&gt;</comment>
                            <comment id="13367" author="hiro" created="Wed, 2 May 2018 14:50:44 +0000"  >&lt;p&gt;Both conda and pip now have a package called &quot;psycopg2&quot;. So only &quot;psycopg2&quot; by conda?&lt;/p&gt;</comment>
                            <comment id="13368" author="hassan" created="Wed, 2 May 2018 15:05:44 +0000"  >&lt;p&gt;Hi @shimono regarding the &quot;!&quot;: Craig mentioned in the description that&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&quot;&lt;span class=&quot;error&quot;&gt;&amp;#91;...&amp;#93;&lt;/span&gt;&#160;in the cases where I know that the version matters I&apos;ll add an exclamation point.&quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;so it refers to when that version number is important.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="13369" author="cloomis" created="Wed, 2 May 2018 15:21:44 +0000"  >&lt;p&gt;&lt;tt&gt;psycopg2&lt;/tt&gt; is deprecated, and is being replaced by &lt;tt&gt;psycopg2-binary&lt;/tt&gt;. At least that&apos;s the way I read it. You certainly do not want both.&lt;/p&gt;</comment>
                            <comment id="13371" author="atsushi.shimono" created="Wed, 2 May 2018 17:41:21 +0000"  >&lt;p&gt;&lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=hassan&quot; class=&quot;user-hover&quot; rel=&quot;hassan&quot;&gt;hassan&lt;/a&gt; i know, but not sure for lower values,,, like sys.version could be wrote as sys.version = (3, 6) or sys.version &amp;gt;= (3,6). (or (3,6,0) would not be the case, i suppose...)&lt;/p&gt;</comment>
                            <comment id="13372" author="hassan" created="Wed, 2 May 2018 17:42:48 +0000"  >&lt;p&gt;I see &lt;a href=&quot;https://pfspipe.ipmu.jp/jira/secure/ViewProfile.jspa?name=atsushi.shimono&quot; class=&quot;user-hover&quot; rel=&quot;atsushi.shimono&quot;&gt;shimono&lt;/a&gt;&#160;- thanks for the clarification!&#160;&lt;/p&gt;</comment>
                            <comment id="13950" author="hiro" created="Wed, 22 Aug 2018 16:49:52 +0000"  >&lt;p&gt;fysom is required for FSM in tron_actorcore&lt;/p&gt;</comment>
                            <comment id="13951" author="hiro" created="Wed, 22 Aug 2018 17:20:05 +0000"  >&lt;p&gt;FYI ruaml.yaml (not ruaml_yaml) &amp;gt;=0.15.52 are broken for &lt;b&gt;me&lt;/b&gt;&lt;/p&gt;</comment>
                            <comment id="13952" author="cloomis" created="Wed, 22 Aug 2018 17:21:11 +0000"  >&lt;p&gt;How, specifically?&lt;/p&gt;</comment>
                            <comment id="13954" author="hiro" created="Wed, 22 Aug 2018 17:38:33 +0000"  >&lt;p&gt;I get this error:&lt;/p&gt;

&lt;p&gt;Traceback (most recent call last):&lt;br/&gt;
 File &quot;/home/hyoshida/src/pfs-sbr-id/qt+ipc/er_flow_monitor_gui.py&quot;, line 30, in update_status&lt;br/&gt;
 self.ui.lineEdit_1_1.setText(&apos;%.0f&apos; % data.readings&lt;span class=&quot;error&quot;&gt;&amp;#91;config.electronics_rack.manifold.intake_flow_rate.channel - 1&amp;#93;&lt;/span&gt;)&lt;br/&gt;
AttributeError: &apos;CommentedMap&apos; object has no attribute &apos;electronics_rack&apos;&lt;br/&gt;
Aborted&lt;/p&gt;

&lt;p&gt;YAML files looks like this&lt;/p&gt;

&lt;p&gt;electronics_rack:&lt;br/&gt;
&#160; &#160; manifold:&lt;br/&gt;
&#160; &#160; &#160; &#160; intake_flow_rate:&lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160; device: keys2&lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160; channel: 29&lt;br/&gt;
&#160; &#160; &#160; &#160; intake_temperature:&lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160; device: keys2&lt;br/&gt;
&#160; &#160; &#160; &#160; &#160; &#160; channel: 30&lt;/p&gt;

&lt;p&gt;Or, am I violating any YAML spec.???&lt;/p&gt;</comment>
                            <comment id="13955" author="hiro" created="Wed, 22 Aug 2018 17:47:48 +0000"  >&lt;p&gt;Actually, it may not be an issue with ruamel.yaml. I am &quot;munchifying&quot; config as:&lt;/p&gt;

&lt;p&gt;config = munch.munchify(ruamel.yaml.YAML().load(open(args.config_file, &apos;r&apos;)))&lt;/p&gt;

&lt;p&gt;Then I am getting the error above. However, the process round-trips and recreate a correct input config:&lt;/p&gt;

&lt;p&gt;ruamel.yaml.YAML().dump(munch.unmunchify(config), sys.stdout)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;ruamel.yaml.YAML().load() used to return a CommentedMap object; now it returns ordereddict&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Was off-topic - please ignore my last two comments&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="22803">INSTRM-1615</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10500" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|ii040v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>