├── .nojekyll ├── .gitignore ├── CNAME ├── css ├── .DS_Store ├── github_issues.css ├── jquery.sidr.light.css └── style.css ├── favicon.ico ├── images ├── menu.png ├── .DS_Store ├── aplpy.png ├── ginga.png ├── montage.png ├── background.jpg ├── python-mark.png ├── astropy_banner_96.png ├── astropy_powered.png ├── astropy_word_32.png ├── astropy_powered_white.png ├── menu.svg ├── astropy_word.svg └── astropy_banner.svg ├── .travis.yml ├── README.md ├── js ├── analytics.js ├── jquery.sidr.min.js └── functions.js ├── team.html ├── editing_tips.txt ├── getteam.py ├── help.html ├── announcements ├── release-0.4.html └── release-1.0.html ├── affiliated ├── registry.json └── index.html ├── contribute.html ├── index.html └── about.html /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[co] 2 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | www.astropy.org 2 | 3 | -------------------------------------------------------------------------------- /css/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/css/.DS_Store -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/favicon.ico -------------------------------------------------------------------------------- /images/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/menu.png -------------------------------------------------------------------------------- /images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/.DS_Store -------------------------------------------------------------------------------- /images/aplpy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/aplpy.png -------------------------------------------------------------------------------- /images/ginga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/ginga.png -------------------------------------------------------------------------------- /images/montage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/montage.png -------------------------------------------------------------------------------- /images/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/background.jpg -------------------------------------------------------------------------------- /images/python-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/python-mark.png -------------------------------------------------------------------------------- /images/astropy_banner_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/astropy_banner_96.png -------------------------------------------------------------------------------- /images/astropy_powered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/astropy_powered.png -------------------------------------------------------------------------------- /images/astropy_word_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/astropy_word_32.png -------------------------------------------------------------------------------- /images/astropy_powered_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mwcraig/astropy.github.com/HEAD/images/astropy_powered_white.png -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | 3 | python: 4 | - 3.4 5 | 6 | script: 7 | # Validate JSON for affilaited package registry 8 | - python -c 'import json; json.load(open("affiliated/registry.json"))' -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository contains the Astropy web site (primary URL http://www.astropy.org). 2 | 3 | In a previous version of this web site (on the [old_site branch](https://github.com/astropy/astropy.github.com/tree/old_site)), this repository held the build for the site, but the content was generated from the [astropy-website repository](https://github.com/astropy/astropy-website). That repo is no longer active, and issues with the astropy web site should now be reported in *this* repository. 4 | -------------------------------------------------------------------------------- /js/analytics.js: -------------------------------------------------------------------------------- 1 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 2 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 3 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 4 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 5 | 6 | ga('create', 'UA-30968842-1', 'auto'); 7 | ga('require', 'displayfeatures'); 8 | ga('require', 'linkid', 'linkid.js'); 9 | ga('send', 'pageview'); 10 | -------------------------------------------------------------------------------- /team.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Astropy | Team Redirect 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 | The page describing astropy's team members has moved. You will be redirected to the new location automatically in 1 second. If this doesn't work, feel free to click on this link. 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /css/github_issues.css: -------------------------------------------------------------------------------- 1 | .github-label-effort { 2 | font-size: 11px; 3 | font-weight: bold; 4 | padding: 3px 4px; 5 | border-radius: 2px; 6 | line-height: 1; 7 | box-shadow: inset 0 -1px 0 rgba(0,0,0,0.12); 8 | background-color: #fef2c0; 9 | color: #333026; 10 | font: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; 11 | } 12 | .github-label-package { 13 | font-size: 11px; 14 | font-weight: bold; 15 | padding: 3px 4px; 16 | border-radius: 2px; 17 | line-height: 1; 18 | box-shadow: inset 0 -1px 0 rgba(0,0,0,0.12); 19 | background-color: #bfe5bf; 20 | color: #333026; 21 | font: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; 22 | } -------------------------------------------------------------------------------- /images/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /editing_tips.txt: -------------------------------------------------------------------------------- 1 | Editing the installation instructions tabs: 2 | 3 | 1) To add additional tabs, copy the format used by existing tabs, including wrapping the text title in the table in a span tag. 4 | 5 | 2) When the window width becomes less than a specified value, the css of span tag will switch to display:none and the padding on the tab will be adjusted slightly. If adding additional tabs, the values for this transition will be have to be tweaked in css/style.css. I've marked this area (l:439-456 in this commit) with the comment: "/* Make tweaks here to accommodate additional tabs */". Change the max-width parameter on both @media styles to allow the tabs to shrink gracefully when resizing the window. 6 | 7 | The first style shrinks the font size and padding to allow the full text to appear on tablets. The second style hides the text for optimal viewing on phones. Feel free to further adjust font-sizes and padding in these styles to produce the optimal experience. 8 | 9 | 3) If the number of tabs increases, it may be necessary to adjust the min-width of the whole site. This can be done by tweaking the min-width style under #wrapper (l:61 in this commit). Try to avoid increasing this value too much and instead adjust padding, font size or image sizes as in step (2) or else you will get a horizontal scrollbar on phones which is less than ideal. 10 | -------------------------------------------------------------------------------- /js/jquery.sidr.min.js: -------------------------------------------------------------------------------- 1 | /*! Sidr - v1.2.1 - 2013-11-06 2 | * https://github.com/artberri/sidr 3 | * Copyright (c) 2013 Alberto Varela; Licensed MIT */ 4 | (function(e){var t=!1,i=!1,n={isUrl:function(e){var t=RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i");return t.test(e)?!0:!1},loadContent:function(e,t){e.html(t)},addPrefix:function(e){var t=e.attr("id"),i=e.attr("class");"string"==typeof t&&""!==t&&e.attr("id",t.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-id-$1")),"string"==typeof i&&""!==i&&"sidr-inner"!==i&&e.attr("class",i.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-class-$1")),e.removeAttr("style")},execute:function(n,s,a){"function"==typeof s?(a=s,s="sidr"):s||(s="sidr");var r,d,l,c=e("#"+s),u=e(c.data("body")),f=e("html"),p=c.outerWidth(!0),g=c.data("speed"),h=c.data("side"),m=c.data("displace"),v=c.data("onOpen"),y=c.data("onClose"),x="sidr"===s?"sidr-open":"sidr-open "+s+"-open";if("open"===n||"toggle"===n&&!c.is(":visible")){if(c.is(":visible")||t)return;if(i!==!1)return o.close(i,function(){o.open(s)}),void 0;t=!0,"left"===h?(r={left:p+"px"},d={left:"0px"}):(r={right:p+"px"},d={right:"0px"}),u.is("body")&&(l=f.scrollTop(),f.css("overflow-x","hidden").scrollTop(l)),m?u.addClass("sidr-animating").css({width:u.width(),position:"absolute"}).animate(r,g,function(){e(this).addClass(x)}):setTimeout(function(){e(this).addClass(x)},g),c.css("display","block").animate(d,g,function(){t=!1,i=s,"function"==typeof a&&a(s),u.removeClass("sidr-animating")}),v()}else{if(!c.is(":visible")||t)return;t=!0,"left"===h?(r={left:0},d={left:"-"+p+"px"}):(r={right:0},d={right:"-"+p+"px"}),u.is("body")&&(l=f.scrollTop(),f.removeAttr("style").scrollTop(l)),u.addClass("sidr-animating").animate(r,g).removeClass(x),c.animate(d,g,function(){c.removeAttr("style").hide(),u.removeAttr("style"),e("html").removeAttr("style"),t=!1,i=!1,"function"==typeof a&&a(s),u.removeClass("sidr-animating")}),y()}}},o={open:function(e,t){n.execute("open",e,t)},close:function(e,t){n.execute("close",e,t)},toggle:function(e,t){n.execute("toggle",e,t)},toogle:function(e,t){n.execute("toggle",e,t)}};e.sidr=function(t){return o[t]?o[t].apply(this,Array.prototype.slice.call(arguments,1)):"function"!=typeof t&&"string"!=typeof t&&t?(e.error("Method "+t+" does not exist on jQuery.sidr"),void 0):o.toggle.apply(this,arguments)},e.fn.sidr=function(t){var i=e.extend({name:"sidr",speed:200,side:"left",source:null,renaming:!0,body:"body",displace:!0,onOpen:function(){},onClose:function(){}},t),s=i.name,a=e("#"+s);if(0===a.length&&(a=e("
").attr("id",s).appendTo(e("body"))),a.addClass("sidr").addClass(i.side).data({speed:i.speed,side:i.side,body:i.body,displace:i.displace,onOpen:i.onOpen,onClose:i.onClose}),"function"==typeof i.source){var r=i.source(s);n.loadContent(a,r)}else if("string"==typeof i.source&&n.isUrl(i.source))e.get(i.source,function(e){n.loadContent(a,e)});else if("string"==typeof i.source){var d="",l=i.source.split(",");if(e.each(l,function(t,i){d+='
'+e(i).html()+"
"}),i.renaming){var c=e("
").html(d);c.find("*").each(function(t,i){var o=e(i);n.addPrefix(o)}),d=c.html()}n.loadContent(a,d)}else null!==i.source&&e.error("Invalid Sidr Source");return this.each(function(){var t=e(this),i=t.data("sidr");i||(t.data("sidr",s),"ontouchstart"in document.documentElement?(t.bind("touchstart",function(e){e.originalEvent.touches[0],this.touched=e.timeStamp}),t.bind("touchend",function(e){var t=Math.abs(e.timeStamp-this.touched);200>t&&(e.preventDefault(),o.toggle(s))})):t.click(function(e){e.preventDefault(),o.toggle(s)}))})}})(jQuery); -------------------------------------------------------------------------------- /css/jquery.sidr.light.css: -------------------------------------------------------------------------------- 1 | .sidr{display:none;position:absolute;position:fixed;top:0;height:100%;z-index:999999;width:260px;overflow-x:none;overflow-y:auto;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;font-size:15px;background:#f8f8f8;color:#333;-webkit-box-shadow:inset 0 0 5px 5px #ebebeb;-moz-box-shadow:inset 0 0 5px 5px #ebebeb;box-shadow:inset 0 0 5px 5px #ebebeb}.sidr .sidr-inner{padding:0 0 15px}.sidr .sidr-inner>p{margin-left:15px;margin-right:15px}.sidr.right{left:auto;right:-260px}.sidr.left{left:-260px;right:auto}.sidr h1,.sidr h2,.sidr h3,.sidr h4,.sidr h5,.sidr h6{font-size:11px;font-weight:normal;padding:0 15px;margin:0 0 5px;color:#333;line-height:24px;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dfdfdf));background-image:-webkit-linear-gradient(#ffffff,#dfdfdf);background-image:-moz-linear-gradient(#ffffff,#dfdfdf);background-image:-o-linear-gradient(#ffffff,#dfdfdf);background-image:linear-gradient(#ffffff,#dfdfdf);-webkit-box-shadow:0 5px 5px 3px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 5px 3px rgba(0,0,0,0.2);box-shadow:0 5px 5px 3px rgba(0,0,0,0.2)}.sidr p{font-size:13px;margin:0 0 12px}.sidr p a{color:rgba(51,51,51,0.9)}.sidr>p{margin-left:15px;margin-right:15px}.sidr ul{display:block;margin:0 0 15px;padding:0;border-top:1px solid #dfdfdf;border-bottom:1px solid #fff}.sidr ul li{display:block;margin:0;line-height:48px;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf}.sidr ul li:hover,.sidr ul li.active,.sidr ul li.sidr-class-active{border-top:none;line-height:49px}.sidr ul li:hover>a,.sidr ul li:hover>span,.sidr ul li.active>a,.sidr ul li.active>span,.sidr ul li.sidr-class-active>a,.sidr ul li.sidr-class-active>span{-webkit-box-shadow:inset 0 0 15px 3px #ebebeb;-moz-box-shadow:inset 0 0 15px 3px #ebebeb;box-shadow:inset 0 0 15px 3px #ebebeb}.sidr ul li a,.sidr ul li span{padding:0 15px;display:block;text-decoration:none;color:#333}.sidr ul li ul{border-bottom:none;margin:0}.sidr ul li ul li{line-height:40px;font-size:13px}.sidr ul li ul li:last-child{border-bottom:none}.sidr ul li ul li:hover,.sidr ul li ul li.active,.sidr ul li ul li.sidr-class-active{border-top:none;line-height:41px}.sidr ul li ul li:hover>a,.sidr ul li ul li:hover>span,.sidr ul li ul li.active>a,.sidr ul li ul li.active>span,.sidr ul li ul li.sidr-class-active>a,.sidr ul li ul li.sidr-class-active>span{-webkit-box-shadow:inset 0 0 15px 3px #ebebeb;-moz-box-shadow:inset 0 0 15px 3px #ebebeb;box-shadow:inset 0 0 15px 3px #ebebeb}.sidr ul li ul li a,.sidr ul li ul li span{color:rgba(51,51,51,0.8);padding-left:30px}.sidr form{margin:0 15px}.sidr label{font-size:13px}.sidr input[type="text"],.sidr input[type="password"],.sidr input[type="date"],.sidr input[type="datetime"],.sidr input[type="email"],.sidr input[type="number"],.sidr input[type="search"],.sidr input[type="tel"],.sidr input[type="time"],.sidr input[type="url"],.sidr textarea,.sidr select{width:100%;font-size:13px;padding:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 0 10px;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;border:none;background:rgba(0,0,0,0.1);color:rgba(51,51,51,0.6);display:block;clear:both}.sidr input[type=checkbox]{width:auto;display:inline;clear:none}.sidr input[type=button],.sidr input[type=submit]{color:#f8f8f8;background:#333}.sidr input[type=button]:hover,.sidr input[type=submit]:hover{background:rgba(51,51,51,0.9)} 2 | 3 | .sidr{ 4 | background-color: white; 5 | } 6 | 7 | .sidr ul li a, .sidr ul li span{ 8 | background-color: #FF5000; 9 | color: white; 10 | -webkit-box-shadow: none; 11 | -moz-box-shadow: none; 12 | box-shadow: none; 13 | -webkit-transition: none; 14 | -moz-transition: none; 15 | -o-transition: none; 16 | -ms-transition: none 17 | transition: none; 18 | } 19 | 20 | .sidr ul li:hover>a, .sidr ul li:hover>span, .sidr ul li.active>a, .sidr ul li.active>span, .sidr ul li.sidr-class-active>a, .sidr ul li.sidr-class-active>span{ 21 | background-color: white; 22 | color:#FF5000; 23 | -webkit-box-shadow: none; 24 | -moz-box-shadow: none 25 | box-shadow: none; 26 | -webkit-transition: none; 27 | -moz-transition: none; 28 | -o-transition: none; 29 | -ms-transition: none 30 | transition: none; 31 | } -------------------------------------------------------------------------------- /getteam.py: -------------------------------------------------------------------------------- 1 | """ 2 | A command line script that updates "The team" in the ``about.html`` file to 3 | reflect the current ``credits.rst`` file from the astropy repository. 4 | 5 | Note that this first looks for the ``ASTROPY_REPO_PATH`` environment 6 | variable to try to find a local copy of the astropy repo. 7 | """ 8 | from __future__ import print_function 9 | 10 | 11 | def get_astropy_credits(warner=print): 12 | """ 13 | Looks for the ``credits.rst`` file in the astropy repo and returns it, or 14 | returns False if the repo can't be found. 15 | """ 16 | import os 17 | from urllib2 import urlopen 18 | 19 | creditspath = os.environ.get('ASTROPY_REPO_PATH', 'http://raw.github.com/astropy/astropy/master/docs/credits.rst') 20 | 21 | if creditspath.startswith('http'): 22 | #url - download page from web 23 | u = None 24 | try: 25 | u = urlopen(creditspath) 26 | return u.read() 27 | except Exception as e: 28 | warner('Could not download credits.rst from requested path: "{0}" Using placeholder for "The Team" page.'.format(e)) 29 | return False 30 | finally: 31 | if u is not None: 32 | u.close() 33 | else: 34 | if not os.path.isfile(creditspath): 35 | warner('Credits.rst file at "{0}" is not a file! Using placeholder for "The Team" page.'.format(creditspath)) 36 | return False 37 | 38 | with open(creditspath) as f: 39 | return f.read() 40 | 41 | 42 | def extract_names_list(docs, sectionname, warner=print): 43 | from docutils import nodes 44 | from docutils.core import publish_doctree 45 | 46 | if not isinstance(docs, nodes.document): 47 | docs = publish_doctree(docs) 48 | 49 | assert isinstance(docs, nodes.document) 50 | 51 | foundsections = [] 52 | for c in docs.children: 53 | titleidx = c.first_child_matching_class(nodes.title) 54 | if titleidx is not None: 55 | title = str(c.children[titleidx].children[0]) 56 | if title == sectionname: 57 | section = c 58 | break 59 | else: 60 | foundsections.append(title) 61 | else: 62 | warner("No section found with name {0}. Sections are:{1!s}".format(sectionname, foundsections)) 63 | return None 64 | 65 | listidx = section.first_child_matching_class(nodes.bullet_list) 66 | litems = section.children[listidx].children 67 | 68 | names = [] 69 | for litem in litems: 70 | names.append(''.join(litem.traverse(lambda n: isinstance(n, nodes.Text)))) 71 | 72 | return names 73 | 74 | 75 | def process_html(fn, newcoordinators, newcontributors, indent='\t\t\t'): 76 | """ 77 | Returns a string of html mean to look like the input, but with content from 78 | the credits file. 79 | """ 80 | lines = [] 81 | incoord = incontrib = False 82 | with open(fn) as fr: 83 | for l in fr: 84 | if l.endswith('\n'): 85 | l = l[:-1] # strip newline 86 | 87 | if incoord: 88 | if '' in l: 89 | lines.extend([(indent + '
  • ' + c + '
  • ') for c in newcoordinators]) 90 | lines.append(l) 91 | incoord = False 92 | #skip otherwise 93 | 94 | elif incontrib: 95 | if '' in l: 96 | lines.extend([(indent + '
  • ' + c + '
  • ') for c in newcontributors]) 97 | lines.append(l) 98 | incontrib = False 99 | #skip otherwise 100 | else: 101 | if '